Skip to content

@nestarc/webhook

Classes

FetchHttpClient

Defined in: src/adapters/fetch-http-client.ts:21

Implements

Constructors

Constructor
ts
new FetchHttpClient(): FetchHttpClient;
Returns

FetchHttpClient

Methods

post()
ts
post(
   url,
   headers,
   body,
   timeout,
options?): Promise<DeliveryResult>;

Defined in: src/adapters/fetch-http-client.ts:22

Parameters
ParameterTypeDescription
urlstring-
headersRecord<string, string>-
bodystring-
timeoutnumbermilliseconds before the request is aborted.
options?WebhookHttpClientRequestOptions-
Returns

Promise<DeliveryResult>

DeliveryResult with success false on timeout/network failure; implementations should not throw for HTTP failures.

Implementation of

WebhookHttpClient.post


PlaintextSecretVault

Defined in: src/adapters/plaintext-secret-vault.ts:9

Default no-op vault — secrets are stored and retrieved as-is. Replace with a real implementation (e.g. AES-256-GCM) for production.

Implements

Constructors

Constructor
ts
new PlaintextSecretVault(): PlaintextSecretVault;
Returns

PlaintextSecretVault

Methods

decrypt()
ts
decrypt(secret): Promise<string>;

Defined in: src/adapters/plaintext-secret-vault.ts:14

Parameters
ParameterType
secretstring
Returns

Promise<string>

Implementation of

WebhookSecretVault.decrypt

encrypt()
ts
encrypt(secret): Promise<string>;

Defined in: src/adapters/plaintext-secret-vault.ts:10

Parameters
ParameterType
secretstring
Returns

Promise<string>

Implementation of

WebhookSecretVault.encrypt


PrismaDeliveryRepository

Defined in: src/adapters/prisma-delivery.repository.ts:100

Implements

Constructors

Constructor
ts
new PrismaDeliveryRepository(
   prisma,
   vault?,
   redaction?): PrismaDeliveryRepository;

Defined in: src/adapters/prisma-delivery.repository.ts:101

Parameters
ParameterType
prismaany
vault?WebhookSecretVault
redaction?WebhookRedactionOptions
Returns

PrismaDeliveryRepository

Methods

claimPendingDeliveries()
ts
claimPendingDeliveries(batchSize): Promise<ClaimedDelivery[]>;

Defined in: src/adapters/prisma-delivery.repository.ts:157

Atomically claims pending rows and returns the minimal delivery identity needed for enrichment.

Parameters
ParameterType
batchSizenumber
Returns

Promise<ClaimedDelivery[]>

Implementation of

WebhookDeliveryRepository.claimPendingDeliveries

createDeliveriesInTransaction()
ts
createDeliveriesInTransaction(
   tx,
   eventId,
   endpointIds,
maxAttempts): Promise<void>;

Defined in: src/adapters/prisma-delivery.repository.ts:107

Creates queued delivery rows inside the provided transaction. No-op when endpointIds is empty.

Parameters
ParameterType
txany
eventIdstring
endpointIdsstring[]
maxAttemptsnumber
Returns

Promise<void>

Implementation of

WebhookDeliveryRepository.createDeliveriesInTransaction

createTestDelivery()
ts
createTestDelivery(eventId, endpointId): Promise<void>;

Defined in: src/adapters/prisma-delivery.repository.ts:713

Parameters
ParameterType
eventIdstring
endpointIdstring
Returns

Promise<void>

Implementation of

WebhookDeliveryRepository.createTestDelivery

enrichDeliveries()
ts
enrichDeliveries(deliveryIds): Promise<PendingDelivery[]>;

Defined in: src/adapters/prisma-delivery.repository.ts:178

Parameters
ParameterType
deliveryIdsstring[]
Returns

Promise<PendingDelivery[]>

Implementation of

WebhookDeliveryRepository.enrichDeliveries

getBacklogSummary()
ts
getBacklogSummary(): Promise<DeliveryBacklogSummary>;

Defined in: src/adapters/prisma-delivery.repository.ts:334

Returns

Promise<DeliveryBacklogSummary>

Implementation of

WebhookDeliveryRepository.getBacklogSummary

getDeliveryAttempts()
ts
getDeliveryAttempts(deliveryId): Promise<DeliveryAttemptRecord[]>;

Defined in: src/adapters/prisma-delivery.repository.ts:460

Parameters
ParameterType
deliveryIdstring
Returns

Promise<DeliveryAttemptRecord[]>

attempts sorted by attemptNumber ASC.

Implementation of

WebhookDeliveryRepository.getDeliveryAttempts

getDeliveryLogs()
ts
getDeliveryLogs(endpointId, filters?): Promise<DeliveryRecord[]>;

Defined in: src/adapters/prisma-delivery.repository.ts:406

Parameters
ParameterType
endpointIdstring
filters?DeliveryLogFilters
Returns

Promise<DeliveryRecord[]>

Implementation of

WebhookDeliveryRepository.getDeliveryLogs

markFailed()
ts
markFailed(
   deliveryId,
   attempts,
result): Promise<void>;

Defined in: src/adapters/prisma-delivery.repository.ts:237

Parameters
ParameterType
deliveryIdstring
attemptsnumber
resultDeliveryResult
Returns

Promise<void>

Implementation of

WebhookDeliveryRepository.markFailed

markRetry()
ts
markRetry(
   deliveryId,
   attempts,
   nextAt,
result): Promise<void>;

Defined in: src/adapters/prisma-delivery.repository.ts:254

Parameters
ParameterType
deliveryIdstring
attemptsnumber
nextAtDate
resultDeliveryResult
Returns

Promise<void>

Implementation of

WebhookDeliveryRepository.markRetry

markSent()
ts
markSent(
   deliveryId,
   attempts,
result): Promise<void>;

Defined in: src/adapters/prisma-delivery.repository.ts:222

Parameters
ParameterType
deliveryIdstring
attemptsnumber
resultDeliveryResult
Returns

Promise<void>

Implementation of

WebhookDeliveryRepository.markSent

purgeExpiredData()
ts
purgeExpiredData(options, now?): Promise<WebhookRetentionPurgeResult>;

Defined in: src/adapters/prisma-delivery.repository.ts:643

Parameters
ParameterType
optionsWebhookRetentionOptions
nowDate
Returns

Promise<WebhookRetentionPurgeResult>

Implementation of

WebhookDeliveryRepository.purgeExpiredData

recoverStaleSending()
ts
recoverStaleSending(stalenessMinutes): Promise<number>;

Defined in: src/adapters/prisma-delivery.repository.ts:275

Parameters
ParameterType
stalenessMinutesnumber
Returns

Promise<number>

number of stale SENDING deliveries recovered or failed.

Implementation of

WebhookDeliveryRepository.recoverStaleSending

replayEvent()
ts
replayEvent(eventId, options?): Promise<ReplayEventResult>;

Defined in: src/adapters/prisma-delivery.repository.ts:562

Parameters
ParameterType
eventIdstring
options?ReplayEventOptions
Returns

Promise<ReplayEventResult>

Implementation of

WebhookDeliveryRepository.replayEvent

retryDelivery()
ts
retryDelivery(deliveryId, _options?): Promise<boolean>;

Defined in: src/adapters/prisma-delivery.repository.ts:478

Parameters
ParameterType
deliveryIdstring
_options?RetryDeliveryOptions
Returns

Promise<boolean>

Implementation of

WebhookDeliveryRepository.retryDelivery

retryFailedDeliveries()
ts
retryFailedDeliveries(filters, _options?): Promise<RetryFailedDeliveriesResult>;

Defined in: src/adapters/prisma-delivery.repository.ts:491

Parameters
ParameterType
filtersRetryFailedDeliveriesFilters
_options?RetryDeliveryOptions
Returns

Promise<RetryFailedDeliveriesResult>

Implementation of

WebhookDeliveryRepository.retryFailedDeliveries

runInTransaction()
ts
runInTransaction<T>(fn): Promise<T>;

Defined in: src/adapters/prisma-delivery.repository.ts:153

Runs the callback in one repository transaction. Pass the tx only to other *InTransaction port methods.

Type Parameters
Type Parameter
T
Parameters
ParameterType
fn(tx) => Promise<T>
Returns

Promise<T>

Implementation of

WebhookDeliveryRepository.runInTransaction


PrismaEndpointRepository

Defined in: src/adapters/prisma-endpoint.repository.ts:38

Implements

Constructors

Constructor
ts
new PrismaEndpointRepository(prisma, vault?): PrismaEndpointRepository;

Defined in: src/adapters/prisma-endpoint.repository.ts:39

Parameters
ParameterType
prismaany
vault?WebhookSecretVault
Returns

PrismaEndpointRepository

Methods

createEndpoint()
ts
createEndpoint(input): Promise<EndpointRecordWithSecret>;

Defined in: src/adapters/prisma-endpoint.repository.ts:91

Parameters
ParameterType
inputResolvedCreateEndpointInput
Returns

Promise<EndpointRecordWithSecret>

Implementation of

WebhookEndpointRepository.createEndpoint

deleteEndpoint()
ts
deleteEndpoint(id): Promise<boolean>;

Defined in: src/adapters/prisma-endpoint.repository.ts:197

Parameters
ParameterType
idstring
Returns

Promise<boolean>

true if a row was deleted, false if the endpoint did not exist. May reject when existing delivery rows still reference the endpoint.

Implementation of

WebhookEndpointRepository.deleteEndpoint

disableEndpoint()
ts
disableEndpoint(endpointId, reason): Promise<boolean>;

Defined in: src/adapters/prisma-endpoint.repository.ts:239

Parameters
ParameterType
endpointIdstring
reasonstring
Returns

Promise<boolean>

true when the endpoint transitioned from active to inactive.

Implementation of

WebhookEndpointRepository.disableEndpoint

findMatchingEndpoints()
ts
findMatchingEndpoints(eventType, tenantId): Promise<EndpointRecord[]>;

Defined in: src/adapters/prisma-endpoint.repository.ts:44

Parameters
ParameterType
eventTypestring
tenantIdstring | undefined
Returns

Promise<EndpointRecord[]>

Implementation of

WebhookEndpointRepository.findMatchingEndpoints

findMatchingEndpointsInTransaction()
ts
findMatchingEndpointsInTransaction(
   tx,
   eventType,
tenantId): Promise<EndpointRecord[]>;

Defined in: src/adapters/prisma-endpoint.repository.ts:67

Use only with a transaction object received from WebhookDeliveryRepository.runInTransaction().

Parameters
ParameterType
txany
eventTypestring
tenantIdstring | undefined
Returns

Promise<EndpointRecord[]>

Implementation of

WebhookEndpointRepository.findMatchingEndpointsInTransaction

getEndpoint()
ts
getEndpoint(id): Promise<EndpointRecord | null>;

Defined in: src/adapters/prisma-endpoint.repository.ts:111

Parameters
ParameterType
idstring
Returns

Promise<EndpointRecord | null>

Implementation of

WebhookEndpointRepository.getEndpoint

incrementFailures()
ts
incrementFailures(endpointId): Promise<number>;

Defined in: src/adapters/prisma-endpoint.repository.ts:230

Atomically increments consecutive failures and returns the new value.

Parameters
ParameterType
endpointIdstring
Returns

Promise<number>

Implementation of

WebhookEndpointRepository.incrementFailures

listEndpoints()
ts
listEndpoints(tenantId?): Promise<EndpointRecord[]>;

Defined in: src/adapters/prisma-endpoint.repository.ts:119

Parameters
ParameterType
tenantId?string
Returns

Promise<EndpointRecord[]>

Implementation of

WebhookEndpointRepository.listEndpoints

recoverEligibleEndpoints()
ts
recoverEligibleEndpoints(cooldownMinutes): Promise<number>;

Defined in: src/adapters/prisma-endpoint.repository.ts:247

Parameters
ParameterType
cooldownMinutesnumber
Returns

Promise<number>

number of endpoints recovered after cooldown.

Implementation of

WebhookEndpointRepository.recoverEligibleEndpoints

resetFailures()
ts
resetFailures(endpointId): Promise<void>;

Defined in: src/adapters/prisma-endpoint.repository.ts:203

Parameters
ParameterType
endpointIdstring
Returns

Promise<void>

Implementation of

WebhookEndpointRepository.resetFailures

rotateSecret()
ts
rotateSecret(id, input): Promise<EndpointRecord | null>;

Defined in: src/adapters/prisma-endpoint.repository.ts:174

Parameters
ParameterType
idstring
inputResolvedRotateEndpointSecretInput
Returns

Promise<EndpointRecord | null>

Implementation of

WebhookEndpointRepository.rotateSecret

updateEndpoint()
ts
updateEndpoint(id, dto): Promise<EndpointRecord | null>;

Defined in: src/adapters/prisma-endpoint.repository.ts:134

Parameters
ParameterType
idstring
dtoUpdateEndpointDto
Returns

Promise<EndpointRecord | null>

Implementation of

WebhookEndpointRepository.updateEndpoint


PrismaEventRepository

Defined in: src/adapters/prisma-event.repository.ts:9

Implements

Constructors

Constructor
ts
new PrismaEventRepository(prisma): PrismaEventRepository;

Defined in: src/adapters/prisma-event.repository.ts:10

Parameters
ParameterType
prismaany
Returns

PrismaEventRepository

Methods

saveEvent()
ts
saveEvent(
   eventType,
   payload,
tenantId): Promise<string>;

Defined in: src/adapters/prisma-event.repository.ts:12

Parameters
ParameterType
eventTypestring
payloadRecord<string, unknown>
tenantIdstring | null
Returns

Promise<string>

Implementation of

WebhookEventRepository.saveEvent

saveEventInTransaction()
ts
saveEventInTransaction(
   tx,
   eventType,
   payload,
tenantId): Promise<string>;

Defined in: src/adapters/prisma-event.repository.ts:24

Use only with a transaction object received from WebhookDeliveryRepository.runInTransaction().

Parameters
ParameterType
txany
eventTypestring
payloadRecord<string, unknown>
tenantIdstring | null
Returns

Promise<string>

Implementation of

WebhookEventRepository.saveEventInTransaction

saveEventOnceInTransaction()
ts
saveEventOnceInTransaction(
   tx,
   eventType,
   payload,
   tenantId,
options): Promise<SavedWebhookEvent>;

Defined in: src/adapters/prisma-event.repository.ts:37

Parameters
ParameterType
txany
eventTypestring
payloadRecord<string, unknown>
tenantIdstring | null
optionsRequired<Pick<WebhookPublishOptions, "idempotencyKey">> & Pick<WebhookPublishOptions, "correlationId">
Returns

Promise<SavedWebhookEvent>

Implementation of

WebhookEventRepository.saveEventOnceInTransaction


WebhookAdminService

Defined in: src/webhook.admin.service.ts:27

Deprecated

since v0.2.0. Will be removed in v1.0.0. Use WebhookEndpointAdminService and WebhookDeliveryAdminService directly.

Constructors

Constructor
ts
new WebhookAdminService(endpoints, deliveries): WebhookAdminService;

Defined in: src/webhook.admin.service.ts:28

Parameters
ParameterType
endpointsWebhookEndpointAdminService
deliveriesWebhookDeliveryAdminService
Returns

WebhookAdminService

Methods

createEndpoint()
ts
createEndpoint(dto): Promise<EndpointRecordWithSecret>;

Defined in: src/webhook.admin.service.ts:33

Parameters
ParameterType
dtoCreateEndpointDto
Returns

Promise<EndpointRecordWithSecret>

deleteEndpoint()
ts
deleteEndpoint(endpointId): Promise<boolean>;

Defined in: src/webhook.admin.service.ts:59

Parameters
ParameterType
endpointIdstring
Returns

Promise<boolean>

getDeliveryAttempts()
ts
getDeliveryAttempts(deliveryId): Promise<DeliveryAttemptRecord[]>;

Defined in: src/webhook.admin.service.ts:70

Parameters
ParameterType
deliveryIdstring
Returns

Promise<DeliveryAttemptRecord[]>

getDeliveryLogs()
ts
getDeliveryLogs(endpointId, filters?): Promise<DeliveryRecord[]>;

Defined in: src/webhook.admin.service.ts:63

Parameters
ParameterType
endpointIdstring
filters?DeliveryLogFilters
Returns

Promise<DeliveryRecord[]>

getEndpoint()
ts
getEndpoint(endpointId): Promise<EndpointRecord | null>;

Defined in: src/webhook.admin.service.ts:41

Parameters
ParameterType
endpointIdstring
Returns

Promise<EndpointRecord | null>

listEndpoints()
ts
listEndpoints(tenantId?): Promise<EndpointRecord[]>;

Defined in: src/webhook.admin.service.ts:37

Parameters
ParameterType
tenantId?string
Returns

Promise<EndpointRecord[]>

replayEvent()
ts
replayEvent(eventId, options?): Promise<ReplayEventResult>;

Defined in: src/webhook.admin.service.ts:88

Parameters
ParameterType
eventIdstring
options?ReplayEventOptions
Returns

Promise<ReplayEventResult>

retryDelivery()
ts
retryDelivery(deliveryId, options?): Promise<boolean>;

Defined in: src/webhook.admin.service.ts:74

Parameters
ParameterType
deliveryIdstring
options?RetryDeliveryOptions
Returns

Promise<boolean>

retryFailedDeliveries()
ts
retryFailedDeliveries(filters, options?): Promise<RetryFailedDeliveriesResult>;

Defined in: src/webhook.admin.service.ts:81

Parameters
ParameterType
filtersRetryFailedDeliveriesFilters
options?RetryDeliveryOptions
Returns

Promise<RetryFailedDeliveriesResult>

rotateSecret()
ts
rotateSecret(endpointId, dto): Promise<EndpointRecordWithSecret | null>;

Defined in: src/webhook.admin.service.ts:52

Parameters
ParameterType
endpointIdstring
dtoRotateEndpointSecretDto
Returns

Promise<EndpointRecordWithSecret | null>

sendTestEvent()
ts
sendTestEvent(endpointId): Promise<string | null>;

Defined in: src/webhook.admin.service.ts:95

Parameters
ParameterType
endpointIdstring
Returns

Promise<string | null>

updateEndpoint()
ts
updateEndpoint(endpointId, dto): Promise<EndpointRecord | null>;

Defined in: src/webhook.admin.service.ts:45

Parameters
ParameterType
endpointIdstring
dtoUpdateEndpointDto
Returns

Promise<EndpointRecord | null>


WebhookDeliveryAdminService

Defined in: src/webhook.delivery-admin.service.ts:16

Constructors

Constructor
ts
new WebhookDeliveryAdminService(deliveryRepo): WebhookDeliveryAdminService;

Defined in: src/webhook.delivery-admin.service.ts:17

Parameters
ParameterType
deliveryRepoWebhookDeliveryRepository
Returns

WebhookDeliveryAdminService

Methods

getDeliveryAttempts()
ts
getDeliveryAttempts(deliveryId): Promise<DeliveryAttemptRecord[]>;

Defined in: src/webhook.delivery-admin.service.ts:29

Parameters
ParameterType
deliveryIdstring
Returns

Promise<DeliveryAttemptRecord[]>

getDeliveryLogs()
ts
getDeliveryLogs(endpointId, filters?): Promise<DeliveryRecord[]>;

Defined in: src/webhook.delivery-admin.service.ts:22

Parameters
ParameterType
endpointIdstring
filters?DeliveryLogFilters
Returns

Promise<DeliveryRecord[]>

replayEvent()
ts
replayEvent(eventId, options?): Promise<ReplayEventResult>;

Defined in: src/webhook.delivery-admin.service.ts:53

Parameters
ParameterType
eventIdstring
options?ReplayEventOptions
Returns

Promise<ReplayEventResult>

retryDelivery()
ts
retryDelivery(deliveryId, options?): Promise<boolean>;

Defined in: src/webhook.delivery-admin.service.ts:33

Parameters
ParameterType
deliveryIdstring
options?RetryDeliveryOptions
Returns

Promise<boolean>

retryFailedDeliveries()
ts
retryFailedDeliveries(filters, options?): Promise<RetryFailedDeliveriesResult>;

Defined in: src/webhook.delivery-admin.service.ts:40

Parameters
ParameterType
filtersRetryFailedDeliveriesFilters
options?RetryDeliveryOptions
Returns

Promise<RetryFailedDeliveriesResult>


WebhookEndpointAdminService

Defined in: src/webhook.endpoint-admin.service.ts:23

Constructors

Constructor
ts
new WebhookEndpointAdminService(
   endpointRepo,
   eventRepo,
   deliveryRepo,
   signer,
   options): WebhookEndpointAdminService;

Defined in: src/webhook.endpoint-admin.service.ts:27

Parameters
ParameterType
endpointRepoWebhookEndpointRepository
eventRepoWebhookEventRepository
deliveryRepoWebhookDeliveryRepository
signerWebhookSigner
optionsWebhookModuleOptions
Returns

WebhookEndpointAdminService

Methods

createEndpoint()
ts
createEndpoint(dto): Promise<EndpointRecordWithSecret>;

Defined in: src/webhook.endpoint-admin.service.ts:41

Parameters
ParameterType
dtoCreateEndpointDto
Returns

Promise<EndpointRecordWithSecret>

deleteEndpoint()
ts
deleteEndpoint(endpointId): Promise<boolean>;

Defined in: src/webhook.endpoint-admin.service.ts:96

Parameters
ParameterType
endpointIdstring
Returns

Promise<boolean>

getEndpoint()
ts
getEndpoint(endpointId): Promise<EndpointRecord | null>;

Defined in: src/webhook.endpoint-admin.service.ts:65

Parameters
ParameterType
endpointIdstring
Returns

Promise<EndpointRecord | null>

listEndpoints()
ts
listEndpoints(tenantId?): Promise<EndpointRecord[]>;

Defined in: src/webhook.endpoint-admin.service.ts:61

Parameters
ParameterType
tenantId?string
Returns

Promise<EndpointRecord[]>

rotateSecret()
ts
rotateSecret(endpointId, dto): Promise<EndpointRecordWithSecret | null>;

Defined in: src/webhook.endpoint-admin.service.ts:79

Parameters
ParameterType
endpointIdstring
dtoRotateEndpointSecretDto
Returns

Promise<EndpointRecordWithSecret | null>

sendTestEvent()
ts
sendTestEvent(endpointId): Promise<string | null>;

Defined in: src/webhook.endpoint-admin.service.ts:100

Parameters
ParameterType
endpointIdstring
Returns

Promise<string | null>

updateEndpoint()
ts
updateEndpoint(endpointId, dto): Promise<EndpointRecord | null>;

Defined in: src/webhook.endpoint-admin.service.ts:69

Parameters
ParameterType
endpointIdstring
dtoUpdateEndpointDto
Returns

Promise<EndpointRecord | null>


abstract WebhookEvent

Defined in: src/webhook.event.ts:1

Constructors

Constructor
ts
new WebhookEvent(): WebhookEvent;
Returns

WebhookEvent

Properties

eventType
ts
readonly static eventType: string;

Defined in: src/webhook.event.ts:2

Accessors

eventType
Get Signature
ts
get eventType(): string;

Defined in: src/webhook.event.ts:4

Returns

string

Methods

toPayload()
ts
toPayload(): Record<string, unknown>;

Defined in: src/webhook.event.ts:14

Returns

Record<string, unknown>


WebhookModule

Defined in: src/webhook.module.ts:139

Implements

  • OnModuleInit
  • OnModuleDestroy

Constructors

Constructor
ts
new WebhookModule(
   schedulerRegistry,
   deliveryWorker,
   options): WebhookModule;

Defined in: src/webhook.module.ts:140

Parameters
ParameterType
schedulerRegistrySchedulerRegistry
deliveryWorkerWebhookDeliveryWorker
optionsWebhookModuleOptions
Returns

WebhookModule

Methods

forRoot()
ts
static forRoot(options): DynamicModule;

Defined in: src/webhook.module.ts:147

Parameters
ParameterType
optionsWebhookModuleOptions
Returns

DynamicModule

forRootAsync()
ts
static forRootAsync(asyncOptions): DynamicModule;

Defined in: src/webhook.module.ts:160

Parameters
ParameterType
asyncOptionsWebhookModuleAsyncOptions
Returns

DynamicModule

onModuleDestroy()
ts
onModuleDestroy(): void;

Defined in: src/webhook.module.ts:209

Returns

void

Implementation of
ts
OnModuleDestroy.onModuleDestroy

onModuleInit()
ts
onModuleInit(): void;

Defined in: src/webhook.module.ts:200

Returns

void

Implementation of
ts
OnModuleInit.onModuleInit

WebhookRetentionAdminService

Defined in: src/webhook.retention-admin.service.ts:17

Constructors

Constructor
ts
new WebhookRetentionAdminService(deliveryRepo, options): WebhookRetentionAdminService;

Defined in: src/webhook.retention-admin.service.ts:18

Parameters
ParameterType
deliveryRepoWebhookDeliveryRepository
optionsWebhookModuleOptions
Returns

WebhookRetentionAdminService

Methods

purgeExpiredData()
ts
purgeExpiredData(now?): Promise<WebhookRetentionPurgeResult>;

Defined in: src/webhook.retention-admin.service.ts:25

Parameters
ParameterType
now?Date
Returns

Promise<WebhookRetentionPurgeResult>


WebhookService

Defined in: src/webhook.service.ts:22

Constructors

Constructor
ts
new WebhookService(
   eventRepo,
   endpointRepo,
   deliveryRepo,
   options): WebhookService;

Defined in: src/webhook.service.ts:27

Parameters
ParameterType
eventRepoWebhookEventRepository
endpointRepoWebhookEndpointRepository
deliveryRepoWebhookDeliveryRepository
optionsWebhookModuleOptions
Returns

WebhookService

Methods

send()
ts
send(event, options?): Promise<string>;

Defined in: src/webhook.service.ts:41

Parameters
ParameterType
eventWebhookEvent
options?WebhookPublishOptions
Returns

Promise<string>

sendToEndpoints()
ts
sendToEndpoints(
   endpointIds,
   event,
   tenantIdOrOptions?,
options?): Promise<string>;

Defined in: src/webhook.service.ts:53

Parameters
ParameterType
endpointIdsstring[]
eventWebhookEvent
tenantIdOrOptions?string | WebhookPublishOptions
options?WebhookPublishOptions
Returns

Promise<string>

sendToTenant()
ts
sendToTenant(
   tenantId,
   event,
options?): Promise<string>;

Defined in: src/webhook.service.ts:45

Parameters
ParameterType
tenantIdstring
eventWebhookEvent
options?WebhookPublishOptions
Returns

Promise<string>


WebhookSigner

Defined in: src/webhook.signer.ts:17

Constructors

Constructor
ts
new WebhookSigner(): WebhookSigner;
Returns

WebhookSigner

Methods

generateSecret()
ts
generateSecret(): string;

Defined in: src/webhook.signer.ts:95

Returns

string

sign()
ts
sign(
   eventId,
   timestamp,
   body,
   secret): SignatureHeaders;

Defined in: src/webhook.signer.ts:39

Parameters
ParameterType
eventIdstring
timestampnumber
bodystring
secretstring
Returns

SignatureHeaders

signAll()
ts
signAll(
   eventId,
   timestamp,
   body,
   secrets): SignatureHeaders;

Defined in: src/webhook.signer.ts:18

Parameters
ParameterType
eventIdstring
timestampnumber
bodystring
secretsstring[]
Returns

SignatureHeaders

verify()
ts
verify(
   eventId,
   timestamp,
   body,
   secret,
   signature): boolean;

Defined in: src/webhook.signer.ts:48

Parameters
ParameterType
eventIdstring
timestampnumber
bodystring
secretstring
signaturestring
Returns

boolean

verifyWithTolerance()
ts
verifyWithTolerance(
   eventId,
   timestamp,
   body,
   secret,
   signature,
   options): boolean;

Defined in: src/webhook.signer.ts:68

Parameters
ParameterType
eventIdstring
timestampnumber
bodystring
secretstring
signaturestring
optionsWebhookVerificationOptions
Returns

boolean


WebhookUrlValidationError

Defined in: src/webhook.url-validator.ts:59

Extends

  • Error

Constructors

Constructor
ts
new WebhookUrlValidationError(
   message,
   reason,
   url?,
   resolvedIp?): WebhookUrlValidationError;

Defined in: src/webhook.url-validator.ts:65

Parameters
ParameterType
messagestring
reasonWebhookUrlValidationReason
url?string
resolvedIp?string
Returns

WebhookUrlValidationError

Overrides
ts
Error.constructor

Properties

cause?
ts
optional cause?: unknown;

Defined in: node_modules/typescript/lib/lib.es2022.error.d.ts:26

Inherited from
ts
Error.cause

message
ts
message: string;

Defined in: node_modules/typescript/lib/lib.es5.d.ts:1077

Inherited from
ts
Error.message

name
ts
readonly name: "WebhookUrlValidationError" = 'WebhookUrlValidationError';

Defined in: src/webhook.url-validator.ts:60

Overrides
ts
Error.name

reason
ts
readonly reason: WebhookUrlValidationReason;

Defined in: src/webhook.url-validator.ts:61

resolvedIp?
ts
readonly optional resolvedIp?: string;

Defined in: src/webhook.url-validator.ts:63

stack?
ts
optional stack?: string;

Defined in: node_modules/typescript/lib/lib.es5.d.ts:1078

Inherited from
ts
Error.stack

stackTraceLimit
ts
static stackTraceLimit: number;

Defined in: node_modules/@types/node/globals.d.ts:67

The Error.stackTraceLimit property specifies the number of stack frames collected by a stack trace (whether generated by new Error().stack or Error.captureStackTrace(obj)).

The default value is 10 but may be set to any valid JavaScript number. Changes will affect any stack trace captured after the value has been changed.

If set to a non-number value, or set to a negative number, stack traces will not capture any frames.

Inherited from
ts
Error.stackTraceLimit

url?
ts
readonly optional url?: string;

Defined in: src/webhook.url-validator.ts:62

Methods

captureStackTrace()
ts
static captureStackTrace(targetObject, constructorOpt?): void;

Defined in: node_modules/@types/node/globals.d.ts:51

Creates a .stack property on targetObject, which when accessed returns a string representing the location in the code at which Error.captureStackTrace() was called.

js
const myObject = {};
Error.captureStackTrace(myObject);
myObject.stack;  // Similar to `new Error().stack`

The first line of the trace will be prefixed with ${myObject.name}: ${myObject.message}.

The optional constructorOpt argument accepts a function. If given, all frames above constructorOpt, including constructorOpt, will be omitted from the generated stack trace.

The constructorOpt argument is useful for hiding implementation details of error generation from the user. For instance:

js
function a() {
  b();
}

function b() {
  c();
}

function c() {
  // Create an error without stack trace to avoid calculating the stack trace twice.
  const { stackTraceLimit } = Error;
  Error.stackTraceLimit = 0;
  const error = new Error();
  Error.stackTraceLimit = stackTraceLimit;

  // Capture the stack trace above function b
  Error.captureStackTrace(error, b); // Neither function c, nor b is included in the stack trace
  throw error;
}

a();
Parameters
ParameterType
targetObjectobject
constructorOpt?Function
Returns

void

Inherited from
ts
Error.captureStackTrace

prepareStackTrace()
ts
static prepareStackTrace(err, stackTraces): any;

Defined in: node_modules/@types/node/globals.d.ts:55

Parameters
ParameterType
errError
stackTracesCallSite[]
Returns

any

See

https://v8.dev/docs/stack-trace-api#customizing-stack-traces

Inherited from
ts
Error.prepareStackTrace

Interfaces

CircuitBreakerOptions

Defined in: src/interfaces/webhook-options.interface.ts:52

Properties

cooldownMinutes?
ts
optional cooldownMinutes?: number;

Defined in: src/interfaces/webhook-options.interface.ts:55

degradedThreshold?
ts
optional degradedThreshold?: number;

Defined in: src/interfaces/webhook-options.interface.ts:54

failureThreshold?
ts
optional failureThreshold?: number;

Defined in: src/interfaces/webhook-options.interface.ts:53


ClaimedDelivery

Defined in: src/ports/webhook-delivery.repository.ts:23

A delivery row claimed by the worker but not yet enriched with endpoint/event data.

Extended by

Properties

attempts
ts
attempts: number;

Defined in: src/ports/webhook-delivery.repository.ts:27

endpointId
ts
endpointId: string;

Defined in: src/ports/webhook-delivery.repository.ts:26

eventId
ts
eventId: string;

Defined in: src/ports/webhook-delivery.repository.ts:25

id
ts
id: string;

Defined in: src/ports/webhook-delivery.repository.ts:24

maxAttempts
ts
maxAttempts: number;

Defined in: src/ports/webhook-delivery.repository.ts:28


CreateEndpointDto

Defined in: src/interfaces/webhook-endpoint.interface.ts:22

Properties

description?
ts
optional description?: string;

Defined in: src/interfaces/webhook-endpoint.interface.ts:27

events
ts
events: string[];

Defined in: src/interfaces/webhook-endpoint.interface.ts:24

metadata?
ts
optional metadata?: Record<string, unknown>;

Defined in: src/interfaces/webhook-endpoint.interface.ts:29

JSON-serializable metadata stored as jsonb. Dates become strings; BigInt is not supported.

secret?
ts
optional secret?: string;

Defined in: src/interfaces/webhook-endpoint.interface.ts:26

Pass 'auto' or omit the field to generate a secure base64 signing secret.

tenantId?
ts
optional tenantId?: string;

Defined in: src/interfaces/webhook-endpoint.interface.ts:30

url
ts
url: string;

Defined in: src/interfaces/webhook-endpoint.interface.ts:23


DeliveryAttemptRecord

Defined in: src/interfaces/webhook-delivery.interface.ts:24

Properties

attemptNumber
ts
attemptNumber: number;

Defined in: src/interfaces/webhook-delivery.interface.ts:27

createdAt
ts
createdAt: Date;

Defined in: src/interfaces/webhook-delivery.interface.ts:34

deliveryId
ts
deliveryId: string;

Defined in: src/interfaces/webhook-delivery.interface.ts:26

id
ts
id: string;

Defined in: src/interfaces/webhook-delivery.interface.ts:25

lastError
ts
lastError: string | null;

Defined in: src/interfaces/webhook-delivery.interface.ts:33

latencyMs
ts
latencyMs: number | null;

Defined in: src/interfaces/webhook-delivery.interface.ts:32

responseBody
ts
responseBody: string | null;

Defined in: src/interfaces/webhook-delivery.interface.ts:30

responseBodyTruncated
ts
responseBodyTruncated: boolean;

Defined in: src/interfaces/webhook-delivery.interface.ts:31

responseStatus
ts
responseStatus: number | null;

Defined in: src/interfaces/webhook-delivery.interface.ts:29

status
ts
status: DeliveryAttemptStatus;

Defined in: src/interfaces/webhook-delivery.interface.ts:28


DeliveryBacklogSummary

Defined in: src/ports/webhook-delivery.repository.ts:41

Properties

oldestPendingAgeMs
ts
oldestPendingAgeMs: number | null;

Defined in: src/ports/webhook-delivery.repository.ts:45

oldestRunnableAgeMs
ts
oldestRunnableAgeMs: number | null;

Defined in: src/ports/webhook-delivery.repository.ts:46

pendingCount
ts
pendingCount: number;

Defined in: src/ports/webhook-delivery.repository.ts:42

runnablePendingCount
ts
runnablePendingCount: number;

Defined in: src/ports/webhook-delivery.repository.ts:44

sendingCount
ts
sendingCount: number;

Defined in: src/ports/webhook-delivery.repository.ts:43


DeliveryFailedContext

Defined in: src/interfaces/webhook-options.interface.ts:131

Properties

attempts
ts
attempts: number;

Defined in: src/interfaces/webhook-options.interface.ts:137

deliveryId
ts
deliveryId: string;

Defined in: src/interfaces/webhook-options.interface.ts:132

endpointId
ts
endpointId: string;

Defined in: src/interfaces/webhook-options.interface.ts:133

eventId
ts
eventId: string;

Defined in: src/interfaces/webhook-options.interface.ts:134

failureKind?
ts
optional failureKind?: DeliveryFailureKind;

Defined in: src/interfaces/webhook-options.interface.ts:143

High-level classification. Built-in workers set this in v0.8.0+; optional for custom/legacy producers.

lastError
ts
lastError: string | null;

Defined in: src/interfaces/webhook-options.interface.ts:139

maxAttempts
ts
maxAttempts: number;

Defined in: src/interfaces/webhook-options.interface.ts:138

resolvedIp?
ts
optional resolvedIp?: string;

Defined in: src/interfaces/webhook-options.interface.ts:149

Set only when failureKind === 'url_validation' and DNS resolution was involved.

responseStatus
ts
responseStatus: number | null;

Defined in: src/interfaces/webhook-options.interface.ts:140

tenantId
ts
tenantId: string | null;

Defined in: src/interfaces/webhook-options.interface.ts:136

Null when the endpoint is not scoped to a tenant.

validationReason?
ts
optional validationReason?: WebhookUrlValidationReason;

Defined in: src/interfaces/webhook-options.interface.ts:145

Set only when failureKind === 'url_validation' — structured reason from WebhookUrlValidationError.

validationUrl?
ts
optional validationUrl?: string;

Defined in: src/interfaces/webhook-options.interface.ts:147

Set only when failureKind === 'url_validation' — URL that triggered validation failure.


DeliveryLogFilters

Defined in: src/interfaces/webhook-delivery.interface.ts:53

Extended by

Properties

eventType?
ts
optional eventType?: string;

Defined in: src/interfaces/webhook-delivery.interface.ts:55

limit?
ts
optional limit?: number;

Defined in: src/interfaces/webhook-delivery.interface.ts:58

offset?
ts
optional offset?: number;

Defined in: src/interfaces/webhook-delivery.interface.ts:59

since?
ts
optional since?: Date;

Defined in: src/interfaces/webhook-delivery.interface.ts:56

status?
ts
optional status?: DeliveryStatus;

Defined in: src/interfaces/webhook-delivery.interface.ts:54

until?
ts
optional until?: Date;

Defined in: src/interfaces/webhook-delivery.interface.ts:57


DeliveryOptions

Defined in: src/interfaces/webhook-options.interface.ts:15

Properties

backoff?
ts
optional backoff?: "exponential";

Defined in: src/interfaces/webhook-options.interface.ts:19

Deprecated

Retry backoff is currently fixed to the default exponential schedule.

jitter?
ts
optional jitter?: boolean;

Defined in: src/interfaces/webhook-options.interface.ts:20

maxRetries?
ts
optional maxRetries?: number;

Defined in: src/interfaces/webhook-options.interface.ts:17

timeout?
ts
optional timeout?: number;

Defined in: src/interfaces/webhook-options.interface.ts:16


DeliveryRecord

Defined in: src/interfaces/webhook-delivery.interface.ts:4

Properties

attempts
ts
attempts: number;

Defined in: src/interfaces/webhook-delivery.interface.ts:13

completedAt
ts
completedAt: Date | null;

Defined in: src/interfaces/webhook-delivery.interface.ts:17

destinationUrl
ts
destinationUrl: string;

Defined in: src/interfaces/webhook-delivery.interface.ts:9

Destination URL used for this delivery. Uses the queued snapshot when available.

endpointId
ts
endpointId: string;

Defined in: src/interfaces/webhook-delivery.interface.ts:7

eventId
ts
eventId: string;

Defined in: src/interfaces/webhook-delivery.interface.ts:6

id
ts
id: string;

Defined in: src/interfaces/webhook-delivery.interface.ts:5

lastAttemptAt
ts
lastAttemptAt: Date | null;

Defined in: src/interfaces/webhook-delivery.interface.ts:16

lastError
ts
lastError: string | null;

Defined in: src/interfaces/webhook-delivery.interface.ts:21

latencyMs
ts
latencyMs: number | null;

Defined in: src/interfaces/webhook-delivery.interface.ts:20

maxAttempts
ts
maxAttempts: number;

Defined in: src/interfaces/webhook-delivery.interface.ts:14

nextAttemptAt
ts
nextAttemptAt: Date | null;

Defined in: src/interfaces/webhook-delivery.interface.ts:15

responseBody
ts
responseBody: string | null;

Defined in: src/interfaces/webhook-delivery.interface.ts:19

responseStatus
ts
responseStatus: number | null;

Defined in: src/interfaces/webhook-delivery.interface.ts:18

status
ts
status: DeliveryStatus;

Defined in: src/interfaces/webhook-delivery.interface.ts:12

tenantId
ts
tenantId: string | null;

Defined in: src/interfaces/webhook-delivery.interface.ts:11

Null when the endpoint is global rather than tenant-scoped.


DeliveryResult

Defined in: src/interfaces/webhook-delivery.interface.ts:45

Properties

body?
ts
optional body?: string;

Defined in: src/interfaces/webhook-delivery.interface.ts:48

error?
ts
optional error?: string;

Defined in: src/interfaces/webhook-delivery.interface.ts:50

latencyMs
ts
latencyMs: number;

Defined in: src/interfaces/webhook-delivery.interface.ts:49

statusCode?
ts
optional statusCode?: number;

Defined in: src/interfaces/webhook-delivery.interface.ts:47

success
ts
success: boolean;

Defined in: src/interfaces/webhook-delivery.interface.ts:46


DeliveryRetryScheduledContext

Defined in: src/interfaces/webhook-options.interface.ts:152

Properties

attempts
ts
attempts: number;

Defined in: src/interfaces/webhook-options.interface.ts:158

deliveryId
ts
deliveryId: string;

Defined in: src/interfaces/webhook-options.interface.ts:153

endpointId
ts
endpointId: string;

Defined in: src/interfaces/webhook-options.interface.ts:154

eventId
ts
eventId: string;

Defined in: src/interfaces/webhook-options.interface.ts:155

failureKind?
ts
optional failureKind?: DeliveryFailureKind;

Defined in: src/interfaces/webhook-options.interface.ts:165

High-level classification for the failed attempt that scheduled the retry.

lastError
ts
lastError: string | null;

Defined in: src/interfaces/webhook-options.interface.ts:161

maxAttempts
ts
maxAttempts: number;

Defined in: src/interfaces/webhook-options.interface.ts:159

nextAttemptAt
ts
nextAttemptAt: Date;

Defined in: src/interfaces/webhook-options.interface.ts:160

resolvedIp?
ts
optional resolvedIp?: string;

Defined in: src/interfaces/webhook-options.interface.ts:171

Set only when failureKind === 'url_validation' and DNS resolution was involved.

responseStatus
ts
responseStatus: number | null;

Defined in: src/interfaces/webhook-options.interface.ts:162

tenantId
ts
tenantId: string | null;

Defined in: src/interfaces/webhook-options.interface.ts:157

Null when the endpoint is not scoped to a tenant.

validationReason?
ts
optional validationReason?: WebhookUrlValidationReason;

Defined in: src/interfaces/webhook-options.interface.ts:167

Set only when failureKind === 'url_validation' — structured reason from WebhookUrlValidationError.

validationUrl?
ts
optional validationUrl?: string;

Defined in: src/interfaces/webhook-options.interface.ts:169

Set only when failureKind === 'url_validation' — URL that triggered validation failure.


EndpointDegradedContext

Defined in: src/interfaces/webhook-options.interface.ts:183

Properties

consecutiveFailures
ts
consecutiveFailures: number;

Defined in: src/interfaces/webhook-options.interface.ts:189

degradedThreshold
ts
degradedThreshold: number;

Defined in: src/interfaces/webhook-options.interface.ts:190

endpointId
ts
endpointId: string;

Defined in: src/interfaces/webhook-options.interface.ts:184

failureThreshold
ts
failureThreshold: number;

Defined in: src/interfaces/webhook-options.interface.ts:191

reason
ts
reason: "consecutive_failures_degraded";

Defined in: src/interfaces/webhook-options.interface.ts:188

tenantId
ts
tenantId: string | null;

Defined in: src/interfaces/webhook-options.interface.ts:186

Null when the endpoint is not scoped to a tenant.

url
ts
url: string;

Defined in: src/interfaces/webhook-options.interface.ts:187


EndpointDisabledContext

Defined in: src/interfaces/webhook-options.interface.ts:174

Properties

consecutiveFailures
ts
consecutiveFailures: number;

Defined in: src/interfaces/webhook-options.interface.ts:180

endpointId
ts
endpointId: string;

Defined in: src/interfaces/webhook-options.interface.ts:175

reason
ts
reason: "consecutive_failures_exceeded";

Defined in: src/interfaces/webhook-options.interface.ts:179

tenantId
ts
tenantId: string | null;

Defined in: src/interfaces/webhook-options.interface.ts:177

Null when the endpoint is not scoped to a tenant.

url
ts
url: string;

Defined in: src/interfaces/webhook-options.interface.ts:178


EndpointRecord

Defined in: src/interfaces/webhook-endpoint.interface.ts:1

Extended by

Properties

active
ts
active: boolean;

Defined in: src/interfaces/webhook-endpoint.interface.ts:5

consecutiveFailures
ts
consecutiveFailures: number;

Defined in: src/interfaces/webhook-endpoint.interface.ts:9

createdAt
ts
createdAt: Date;

Defined in: src/interfaces/webhook-endpoint.interface.ts:13

description
ts
description: string | null;

Defined in: src/interfaces/webhook-endpoint.interface.ts:6

disabledAt
ts
disabledAt: Date | null;

Defined in: src/interfaces/webhook-endpoint.interface.ts:10

disabledReason
ts
disabledReason: string | null;

Defined in: src/interfaces/webhook-endpoint.interface.ts:11

events
ts
events: string[];

Defined in: src/interfaces/webhook-endpoint.interface.ts:4

id
ts
id: string;

Defined in: src/interfaces/webhook-endpoint.interface.ts:2

metadata
ts
metadata: Record<string, unknown> | null;

Defined in: src/interfaces/webhook-endpoint.interface.ts:7

previousSecretExpiresAt
ts
previousSecretExpiresAt: Date | null;

Defined in: src/interfaces/webhook-endpoint.interface.ts:12

tenantId
ts
tenantId: string | null;

Defined in: src/interfaces/webhook-endpoint.interface.ts:8

updatedAt
ts
updatedAt: Date;

Defined in: src/interfaces/webhook-endpoint.interface.ts:14

url
ts
url: string;

Defined in: src/interfaces/webhook-endpoint.interface.ts:3


EndpointRecordWithSecret

Defined in: src/interfaces/webhook-endpoint.interface.ts:18

Internal record that includes the signing secret. Only used for endpoint creation response and delivery enrichment.

Extends

Properties

active
ts
active: boolean;

Defined in: src/interfaces/webhook-endpoint.interface.ts:5

Inherited from

EndpointRecord.active

consecutiveFailures
ts
consecutiveFailures: number;

Defined in: src/interfaces/webhook-endpoint.interface.ts:9

Inherited from

EndpointRecord.consecutiveFailures

createdAt
ts
createdAt: Date;

Defined in: src/interfaces/webhook-endpoint.interface.ts:13

Inherited from

EndpointRecord.createdAt

description
ts
description: string | null;

Defined in: src/interfaces/webhook-endpoint.interface.ts:6

Inherited from

EndpointRecord.description

disabledAt
ts
disabledAt: Date | null;

Defined in: src/interfaces/webhook-endpoint.interface.ts:10

Inherited from

EndpointRecord.disabledAt

disabledReason
ts
disabledReason: string | null;

Defined in: src/interfaces/webhook-endpoint.interface.ts:11

Inherited from

EndpointRecord.disabledReason

events
ts
events: string[];

Defined in: src/interfaces/webhook-endpoint.interface.ts:4

Inherited from

EndpointRecord.events

id
ts
id: string;

Defined in: src/interfaces/webhook-endpoint.interface.ts:2

Inherited from

EndpointRecord.id

metadata
ts
metadata: Record<string, unknown> | null;

Defined in: src/interfaces/webhook-endpoint.interface.ts:7

Inherited from

EndpointRecord.metadata

previousSecretExpiresAt
ts
previousSecretExpiresAt: Date | null;

Defined in: src/interfaces/webhook-endpoint.interface.ts:12

Inherited from

EndpointRecord.previousSecretExpiresAt

secret
ts
secret: string;

Defined in: src/interfaces/webhook-endpoint.interface.ts:19

tenantId
ts
tenantId: string | null;

Defined in: src/interfaces/webhook-endpoint.interface.ts:8

Inherited from

EndpointRecord.tenantId

updatedAt
ts
updatedAt: Date;

Defined in: src/interfaces/webhook-endpoint.interface.ts:14

Inherited from

EndpointRecord.updatedAt

url
ts
url: string;

Defined in: src/interfaces/webhook-endpoint.interface.ts:3

Inherited from

EndpointRecord.url


EventRecord

Defined in: src/interfaces/webhook-delivery.interface.ts:37

Properties

createdAt
ts
createdAt: Date;

Defined in: src/interfaces/webhook-delivery.interface.ts:42

eventType
ts
eventType: string;

Defined in: src/interfaces/webhook-delivery.interface.ts:39

id
ts
id: string;

Defined in: src/interfaces/webhook-delivery.interface.ts:38

payload
ts
payload: Record<string, unknown>;

Defined in: src/interfaces/webhook-delivery.interface.ts:40

tenantId
ts
tenantId: string | null;

Defined in: src/interfaces/webhook-delivery.interface.ts:41


PendingDelivery

Defined in: src/ports/webhook-delivery.repository.ts:32

A claimed delivery enriched with endpoint URL, signing secrets, and event payload. Ready to dispatch.

Extends

Properties

additionalSecrets
ts
additionalSecrets: string[];

Defined in: src/ports/webhook-delivery.repository.ts:36

attempts
ts
attempts: number;

Defined in: src/ports/webhook-delivery.repository.ts:27

Inherited from

ClaimedDelivery.attempts

endpointId
ts
endpointId: string;

Defined in: src/ports/webhook-delivery.repository.ts:26

Inherited from

ClaimedDelivery.endpointId

eventId
ts
eventId: string;

Defined in: src/ports/webhook-delivery.repository.ts:25

Inherited from

ClaimedDelivery.eventId

eventType
ts
eventType: string;

Defined in: src/ports/webhook-delivery.repository.ts:37

id
ts
id: string;

Defined in: src/ports/webhook-delivery.repository.ts:24

Inherited from

ClaimedDelivery.id

maxAttempts
ts
maxAttempts: number;

Defined in: src/ports/webhook-delivery.repository.ts:28

Inherited from

ClaimedDelivery.maxAttempts

payload
ts
payload: Record<string, unknown>;

Defined in: src/ports/webhook-delivery.repository.ts:38

secret
ts
secret: string;

Defined in: src/ports/webhook-delivery.repository.ts:35

tenantId
ts
tenantId: string | null;

Defined in: src/ports/webhook-delivery.repository.ts:33

url
ts
url: string;

Defined in: src/ports/webhook-delivery.repository.ts:34


PollingOptions

Defined in: src/interfaces/webhook-options.interface.ts:58

Properties

batchSize?
ts
optional batchSize?: number;

Defined in: src/interfaces/webhook-options.interface.ts:62

drainLoopDelayMs?
ts
optional drainLoopDelayMs?: number;

Defined in: src/interfaces/webhook-options.interface.ts:72

Optional sleep between continuous drain loops. Default: 0

drainWhileBacklogged?
ts
optional drainWhileBacklogged?: boolean;

Defined in: src/interfaces/webhook-options.interface.ts:68

When true, one poll cycle keeps claiming while backlog and capacity remain. Default: false

enabled?
ts
optional enabled?: boolean;

Defined in: src/interfaces/webhook-options.interface.ts:60

Set to false to disable the polling loop. Useful for API-only processes where a separate worker handles delivery. Default: true

interval?
ts
optional interval?: number;

Defined in: src/interfaces/webhook-options.interface.ts:61

maxConcurrency?
ts
optional maxConcurrency?: number;

Defined in: src/interfaces/webhook-options.interface.ts:66

Maximum delivery dispatches in flight per worker process. Default: batchSize

maxDrainLoopsPerPoll?
ts
optional maxDrainLoopsPerPoll?: number;

Defined in: src/interfaces/webhook-options.interface.ts:70

Maximum claim/drain loops inside one poll cycle. Default: 1, or 10 when drainWhileBacklogged is true

staleSendingMinutes?
ts
optional staleSendingMinutes?: number;

Defined in: src/interfaces/webhook-options.interface.ts:64

Minutes before a SENDING delivery is considered stale and reset to PENDING. Default: 5


ReplayEventOptions

Defined in: src/interfaces/webhook-delivery.interface.ts:76

Properties

endpointIds?
ts
optional endpointIds?: string[];

Defined in: src/interfaces/webhook-delivery.interface.ts:77

reason?
ts
optional reason?: string;

Defined in: src/interfaces/webhook-delivery.interface.ts:79

tenantId?
ts
optional tenantId?: string;

Defined in: src/interfaces/webhook-delivery.interface.ts:78


ReplayEventResult

Defined in: src/interfaces/webhook-delivery.interface.ts:82

Properties

deliveriesCreated
ts
deliveriesCreated: number;

Defined in: src/interfaces/webhook-delivery.interface.ts:84

endpointIds
ts
endpointIds: string[];

Defined in: src/interfaces/webhook-delivery.interface.ts:85

eventId
ts
eventId: string;

Defined in: src/interfaces/webhook-delivery.interface.ts:83


ResolvedCreateEndpointInput

Defined in: src/ports/webhook-endpoint.repository.ts:9

Properties

description
ts
description: string | null;

Defined in: src/ports/webhook-endpoint.repository.ts:13

events
ts
events: string[];

Defined in: src/ports/webhook-endpoint.repository.ts:12

metadata
ts
metadata: Record<string, unknown> | null;

Defined in: src/ports/webhook-endpoint.repository.ts:14

secret
ts
secret: string;

Defined in: src/ports/webhook-endpoint.repository.ts:11

tenantId
ts
tenantId: string | null;

Defined in: src/ports/webhook-endpoint.repository.ts:15

url
ts
url: string;

Defined in: src/ports/webhook-endpoint.repository.ts:10


ResolvedRotateEndpointSecretInput

Defined in: src/ports/webhook-endpoint.repository.ts:18

Extends

Properties

previousSecretExpiresAt
ts
previousSecretExpiresAt: Date;

Defined in: src/interfaces/webhook-endpoint.interface.ts:46

Keep the previous secret valid until this timestamp so queued receivers can overlap during rotation.

Inherited from

RotateEndpointSecretDto.previousSecretExpiresAt

secret
ts
secret: string;

Defined in: src/interfaces/webhook-endpoint.interface.ts:44

Pass 'auto' or omit the field to generate a secure base64 signing secret.

Inherited from

RotateEndpointSecretDto.secret


RetryDeliveryOptions

Defined in: src/interfaces/webhook-delivery.interface.ts:62

Properties

reason?
ts
optional reason?: string;

Defined in: src/interfaces/webhook-delivery.interface.ts:63


RetryFailedDeliveriesFilters

Defined in: src/interfaces/webhook-delivery.interface.ts:66

Extends

Properties

endpointId?
ts
optional endpointId?: string;

Defined in: src/interfaces/webhook-delivery.interface.ts:67

eventType?
ts
optional eventType?: string;

Defined in: src/interfaces/webhook-delivery.interface.ts:55

Inherited from

DeliveryLogFilters.eventType

limit?
ts
optional limit?: number;

Defined in: src/interfaces/webhook-delivery.interface.ts:58

Inherited from

DeliveryLogFilters.limit

offset?
ts
optional offset?: number;

Defined in: src/interfaces/webhook-delivery.interface.ts:59

Inherited from

DeliveryLogFilters.offset

since?
ts
optional since?: Date;

Defined in: src/interfaces/webhook-delivery.interface.ts:56

Inherited from

DeliveryLogFilters.since

status?
ts
optional status?: DeliveryStatus;

Defined in: src/interfaces/webhook-delivery.interface.ts:54

Inherited from

DeliveryLogFilters.status

until?
ts
optional until?: Date;

Defined in: src/interfaces/webhook-delivery.interface.ts:57

Inherited from

DeliveryLogFilters.until


RetryFailedDeliveriesResult

Defined in: src/interfaces/webhook-delivery.interface.ts:70

Properties

matched
ts
matched: number;

Defined in: src/interfaces/webhook-delivery.interface.ts:71

retried
ts
retried: number;

Defined in: src/interfaces/webhook-delivery.interface.ts:72

skipped
ts
skipped: number;

Defined in: src/interfaces/webhook-delivery.interface.ts:73


RotateEndpointSecretDto

Defined in: src/interfaces/webhook-endpoint.interface.ts:42

Properties

previousSecretExpiresAt
ts
previousSecretExpiresAt: Date;

Defined in: src/interfaces/webhook-endpoint.interface.ts:46

Keep the previous secret valid until this timestamp so queued receivers can overlap during rotation.

secret?
ts
optional secret?: string;

Defined in: src/interfaces/webhook-endpoint.interface.ts:44

Pass 'auto' or omit the field to generate a secure base64 signing secret.


SavedWebhookEvent

Defined in: src/ports/webhook-event.repository.ts:4

Properties

created
ts
created: boolean;

Defined in: src/ports/webhook-event.repository.ts:6

id
ts
id: string;

Defined in: src/ports/webhook-event.repository.ts:5


SignatureHeaders

Defined in: src/webhook.signer.ts:4

Indexable

ts
[key: string]: string

Properties

webhook-id
ts
webhook-id: string;

Defined in: src/webhook.signer.ts:6

webhook-signature
ts
webhook-signature: string;

Defined in: src/webhook.signer.ts:8

webhook-timestamp
ts
webhook-timestamp: string;

Defined in: src/webhook.signer.ts:7


UpdateEndpointDto

Defined in: src/interfaces/webhook-endpoint.interface.ts:33

Properties

active?
ts
optional active?: boolean;

Defined in: src/interfaces/webhook-endpoint.interface.ts:39

description?
ts
optional description?: string;

Defined in: src/interfaces/webhook-endpoint.interface.ts:36

events?
ts
optional events?: string[];

Defined in: src/interfaces/webhook-endpoint.interface.ts:35

metadata?
ts
optional metadata?: Record<string, unknown>;

Defined in: src/interfaces/webhook-endpoint.interface.ts:38

JSON-serializable metadata stored as jsonb. Dates become strings; BigInt is not supported.

url?
ts
optional url?: string;

Defined in: src/interfaces/webhook-endpoint.interface.ts:34


WebhookDeliveryProcessingResult

Defined in: src/interfaces/webhook-options.interface.ts:97

Properties

attempts
ts
attempts: number;

Defined in: src/interfaces/webhook-options.interface.ts:102

deliveryId
ts
deliveryId: string;

Defined in: src/interfaces/webhook-options.interface.ts:98

endpointId
ts
endpointId: string;

Defined in: src/interfaces/webhook-options.interface.ts:99

eventId
ts
eventId: string;

Defined in: src/interfaces/webhook-options.interface.ts:100

failureKind?
ts
optional failureKind?: DeliveryFailureKind;

Defined in: src/interfaces/webhook-options.interface.ts:109

lastError
ts
lastError: string | null;

Defined in: src/interfaces/webhook-options.interface.ts:106

latencyMs
ts
latencyMs: number | null;

Defined in: src/interfaces/webhook-options.interface.ts:107

maxAttempts
ts
maxAttempts: number;

Defined in: src/interfaces/webhook-options.interface.ts:103

nextAttemptAt?
ts
optional nextAttemptAt?: Date;

Defined in: src/interfaces/webhook-options.interface.ts:108

resolvedIp?
ts
optional resolvedIp?: string;

Defined in: src/interfaces/webhook-options.interface.ts:112

responseStatus
ts
responseStatus: number | null;

Defined in: src/interfaces/webhook-options.interface.ts:105

status
ts
status: WebhookDeliveryProcessingStatus;

Defined in: src/interfaces/webhook-options.interface.ts:104

tenantId
ts
tenantId: string | null;

Defined in: src/interfaces/webhook-options.interface.ts:101

validationReason?
ts
optional validationReason?: WebhookUrlValidationReason;

Defined in: src/interfaces/webhook-options.interface.ts:110

validationUrl?
ts
optional validationUrl?: string;

Defined in: src/interfaces/webhook-options.interface.ts:111


WebhookDeliveryRepository

Defined in: src/ports/webhook-delivery.repository.ts:49

Methods

claimPendingDeliveries()
ts
claimPendingDeliveries(batchSize): Promise<ClaimedDelivery[]>;

Defined in: src/ports/webhook-delivery.repository.ts:65

Atomically claims pending rows and returns the minimal delivery identity needed for enrichment.

Parameters
ParameterType
batchSizenumber
Returns

Promise<ClaimedDelivery[]>

createDeliveriesInTransaction()
ts
createDeliveriesInTransaction(
   tx,
   eventId,
   endpointIds,
maxAttempts): Promise<void>;

Defined in: src/ports/webhook-delivery.repository.ts:54

Creates queued delivery rows inside the provided transaction. No-op when endpointIds is empty.

Parameters
ParameterType
txWebhookTransaction
eventIdstring
endpointIdsstring[]
maxAttemptsnumber
Returns

Promise<void>

createTestDelivery()
ts
createTestDelivery(eventId, endpointId): Promise<void>;

Defined in: src/ports/webhook-delivery.repository.ts:91

Parameters
ParameterType
eventIdstring
endpointIdstring
Returns

Promise<void>

enrichDeliveries()
ts
enrichDeliveries(deliveryIds): Promise<PendingDelivery[]>;

Defined in: src/ports/webhook-delivery.repository.ts:66

Parameters
ParameterType
deliveryIdsstring[]
Returns

Promise<PendingDelivery[]>

getBacklogSummary()?
ts
optional getBacklogSummary(): Promise<DeliveryBacklogSummary>;

Defined in: src/ports/webhook-delivery.repository.ts:74

Returns

Promise<DeliveryBacklogSummary>

getDeliveryAttempts()
ts
getDeliveryAttempts(deliveryId): Promise<DeliveryAttemptRecord[]>;

Defined in: src/ports/webhook-delivery.repository.ts:77

Parameters
ParameterType
deliveryIdstring
Returns

Promise<DeliveryAttemptRecord[]>

attempts sorted by attemptNumber ASC.

getDeliveryLogs()
ts
getDeliveryLogs(endpointId, filters?): Promise<DeliveryRecord[]>;

Defined in: src/ports/webhook-delivery.repository.ts:75

Parameters
ParameterType
endpointIdstring
filters?DeliveryLogFilters
Returns

Promise<DeliveryRecord[]>

markFailed()
ts
markFailed(
   deliveryId,
   attempts,
result): Promise<void>;

Defined in: src/ports/webhook-delivery.repository.ts:69

Parameters
ParameterType
deliveryIdstring
attemptsnumber
resultDeliveryResult
Returns

Promise<void>

markRetry()
ts
markRetry(
   deliveryId,
   attempts,
   nextAt,
result): Promise<void>;

Defined in: src/ports/webhook-delivery.repository.ts:70

Parameters
ParameterType
deliveryIdstring
attemptsnumber
nextAtDate
resultDeliveryResult
Returns

Promise<void>

markSent()
ts
markSent(
   deliveryId,
   attempts,
result): Promise<void>;

Defined in: src/ports/webhook-delivery.repository.ts:68

Parameters
ParameterType
deliveryIdstring
attemptsnumber
resultDeliveryResult
Returns

Promise<void>

purgeExpiredData()?
ts
optional purgeExpiredData(options, now?): Promise<WebhookRetentionPurgeResult>;

Defined in: src/ports/webhook-delivery.repository.ts:87

Parameters
ParameterType
optionsWebhookRetentionOptions
now?Date
Returns

Promise<WebhookRetentionPurgeResult>

recoverStaleSending()
ts
recoverStaleSending(stalenessMinutes): Promise<number>;

Defined in: src/ports/webhook-delivery.repository.ts:73

Parameters
ParameterType
stalenessMinutesnumber
Returns

Promise<number>

number of stale SENDING deliveries recovered or failed.

replayEvent()?
ts
optional replayEvent(eventId, options?): Promise<ReplayEventResult>;

Defined in: src/ports/webhook-delivery.repository.ts:83

Parameters
ParameterType
eventIdstring
options?ReplayEventOptions
Returns

Promise<ReplayEventResult>

retryDelivery()
ts
retryDelivery(deliveryId, options?): Promise<boolean>;

Defined in: src/ports/webhook-delivery.repository.ts:78

Parameters
ParameterType
deliveryIdstring
options?RetryDeliveryOptions
Returns

Promise<boolean>

retryFailedDeliveries()?
ts
optional retryFailedDeliveries(filters, options?): Promise<RetryFailedDeliveriesResult>;

Defined in: src/ports/webhook-delivery.repository.ts:79

Parameters
ParameterType
filtersRetryFailedDeliveriesFilters
options?RetryDeliveryOptions
Returns

Promise<RetryFailedDeliveriesResult>

runInTransaction()
ts
runInTransaction<T>(fn): Promise<T>;

Defined in: src/ports/webhook-delivery.repository.ts:62

Runs the callback in one repository transaction. Pass the tx only to other *InTransaction port methods.

Type Parameters
Type Parameter
T
Parameters
ParameterType
fn(tx) => Promise<T>
Returns

Promise<T>


WebhookEndpointRepository

Defined in: src/ports/webhook-endpoint.repository.ts:21

Methods

createEndpoint()
ts
createEndpoint(input): Promise<EndpointRecordWithSecret>;

Defined in: src/ports/webhook-endpoint.repository.ts:34

Parameters
ParameterType
inputResolvedCreateEndpointInput
Returns

Promise<EndpointRecordWithSecret>

deleteEndpoint()
ts
deleteEndpoint(id): Promise<boolean>;

Defined in: src/ports/webhook-endpoint.repository.ts:47

Parameters
ParameterType
idstring
Returns

Promise<boolean>

true if a row was deleted, false if the endpoint did not exist. May reject when existing delivery rows still reference the endpoint.

disableEndpoint()
ts
disableEndpoint(endpointId, reason): Promise<boolean>;

Defined in: src/ports/webhook-endpoint.repository.ts:53

Parameters
ParameterType
endpointIdstring
reasonstring
Returns

Promise<boolean>

true when the endpoint transitioned from active to inactive.

findMatchingEndpoints()
ts
findMatchingEndpoints(eventType, tenantId): Promise<EndpointRecord[]>;

Defined in: src/ports/webhook-endpoint.repository.ts:22

Parameters
ParameterType
eventTypestring
tenantIdstring | undefined
Returns

Promise<EndpointRecord[]>

findMatchingEndpointsInTransaction()
ts
findMatchingEndpointsInTransaction(
   tx,
   eventType,
tenantId): Promise<EndpointRecord[]>;

Defined in: src/ports/webhook-endpoint.repository.ts:28

Use only with a transaction object received from WebhookDeliveryRepository.runInTransaction().

Parameters
ParameterType
txWebhookTransaction
eventTypestring
tenantIdstring | undefined
Returns

Promise<EndpointRecord[]>

getEndpoint()
ts
getEndpoint(id): Promise<EndpointRecord | null>;

Defined in: src/ports/webhook-endpoint.repository.ts:36

Parameters
ParameterType
idstring
Returns

Promise<EndpointRecord | null>

incrementFailures()
ts
incrementFailures(endpointId): Promise<number>;

Defined in: src/ports/webhook-endpoint.repository.ts:51

Atomically increments consecutive failures and returns the new value.

Parameters
ParameterType
endpointIdstring
Returns

Promise<number>

listEndpoints()
ts
listEndpoints(tenantId?): Promise<EndpointRecord[]>;

Defined in: src/ports/webhook-endpoint.repository.ts:37

Parameters
ParameterType
tenantId?string
Returns

Promise<EndpointRecord[]>

recoverEligibleEndpoints()
ts
recoverEligibleEndpoints(cooldownMinutes): Promise<number>;

Defined in: src/ports/webhook-endpoint.repository.ts:55

Parameters
ParameterType
cooldownMinutesnumber
Returns

Promise<number>

number of endpoints recovered after cooldown.

resetFailures()
ts
resetFailures(endpointId): Promise<void>;

Defined in: src/ports/webhook-endpoint.repository.ts:49

Parameters
ParameterType
endpointIdstring
Returns

Promise<void>

rotateSecret()
ts
rotateSecret(id, input): Promise<EndpointRecord | null>;

Defined in: src/ports/webhook-endpoint.repository.ts:39

Parameters
ParameterType
idstring
inputResolvedRotateEndpointSecretInput
Returns

Promise<EndpointRecord | null>

updateEndpoint()
ts
updateEndpoint(id, dto): Promise<EndpointRecord | null>;

Defined in: src/ports/webhook-endpoint.repository.ts:38

Parameters
ParameterType
idstring
dtoUpdateEndpointDto
Returns

Promise<EndpointRecord | null>


WebhookEventRepository

Defined in: src/ports/webhook-event.repository.ts:9

Methods

saveEvent()
ts
saveEvent(
   eventType,
   payload,
tenantId): Promise<string>;

Defined in: src/ports/webhook-event.repository.ts:10

Parameters
ParameterType
eventTypestring
payloadRecord<string, unknown>
tenantIdstring | null
Returns

Promise<string>

saveEventInTransaction()
ts
saveEventInTransaction(
   tx,
   eventType,
   payload,
tenantId): Promise<string>;

Defined in: src/ports/webhook-event.repository.ts:17

Use only with a transaction object received from WebhookDeliveryRepository.runInTransaction().

Parameters
ParameterType
txWebhookTransaction
eventTypestring
payloadRecord<string, unknown>
tenantIdstring | null
Returns

Promise<string>

saveEventOnceInTransaction()?
ts
optional saveEventOnceInTransaction(
   tx,
   eventType,
   payload,
   tenantId,
options): Promise<SavedWebhookEvent>;

Defined in: src/ports/webhook-event.repository.ts:24

Parameters
ParameterType
txWebhookTransaction
eventTypestring
payloadRecord<string, unknown>
tenantIdstring | null
optionsRequired<Pick<WebhookPublishOptions, "idempotencyKey">> & Pick<WebhookPublishOptions, "correlationId">
Returns

Promise<SavedWebhookEvent>


WebhookHttpClient

Defined in: src/ports/webhook-http-client.ts:11

Methods

post()
ts
post(
   url,
   headers,
   body,
   timeout,
options?): Promise<DeliveryResult>;

Defined in: src/ports/webhook-http-client.ts:16

Parameters
ParameterTypeDescription
urlstring-
headersRecord<string, string>-
bodystring-
timeoutnumbermilliseconds before the request is aborted.
options?WebhookHttpClientRequestOptions-
Returns

Promise<DeliveryResult>

DeliveryResult with success false on timeout/network failure; implementations should not throw for HTTP failures.


WebhookModuleAsyncOptions

Defined in: src/interfaces/webhook-options.interface.ts:235

Extends

  • Pick<ModuleMetadata, "imports">

Properties

imports?
ts
optional imports?: (
  | DynamicModule
  | Type<any>
  | Promise<DynamicModule>
  | ForwardReference<any>)[];

Defined in: node_modules/@nestjs/common/interfaces/modules/module-metadata.interface.d.ts:18

Optional list of imported modules that export the providers which are required in this module.

Inherited from
ts
Pick.imports

inject?
ts
optional inject?: (InjectionToken | OptionalFactoryDependency)[];

Defined in: src/interfaces/webhook-options.interface.ts:237

useClass?
ts
optional useClass?: Type<WebhookOptionsFactory>;

Defined in: src/interfaces/webhook-options.interface.ts:238

useExisting?
ts
optional useExisting?: Type<WebhookOptionsFactory>;

Defined in: src/interfaces/webhook-options.interface.ts:239

useFactory?
ts
optional useFactory?: (...args) =>
  | WebhookModuleOptions<unknown>
| Promise<WebhookModuleOptions<unknown>>;

Defined in: src/interfaces/webhook-options.interface.ts:236

Parameters
ParameterType
...argsany[]
Returns

| WebhookModuleOptions<unknown> | Promise<WebhookModuleOptions<unknown>>


WebhookModuleOptions

Defined in: src/interfaces/webhook-options.interface.ts:194

Type Parameters

Type ParameterDefault type
TPrismaunknown

Properties

allowPrivateUrls?
ts
optional allowPrivateUrls?: boolean;

Defined in: src/interfaces/webhook-options.interface.ts:203

Allow private/internal URLs for endpoints. Only enable in development/testing. Default: false

circuitBreaker?
ts
optional circuitBreaker?: CircuitBreakerOptions;

Defined in: src/interfaces/webhook-options.interface.ts:198

delivery?
ts
optional delivery?: DeliveryOptions;

Defined in: src/interfaces/webhook-options.interface.ts:197

deliveryRepository?
ts
optional deliveryRepository?: WebhookDeliveryRepository;

Defined in: src/interfaces/webhook-options.interface.ts:207

endpointRepository?
ts
optional endpointRepository?: WebhookEndpointRepository;

Defined in: src/interfaces/webhook-options.interface.ts:206

eventRepository?
ts
optional eventRepository?: WebhookEventRepository;

Defined in: src/interfaces/webhook-options.interface.ts:205

Custom port overrides — provide these to replace default Prisma/fetch adapters.

httpClient?
ts
optional httpClient?: WebhookHttpClient;

Defined in: src/interfaces/webhook-options.interface.ts:208

onDeliveryFailed?
ts
optional onDeliveryFailed?: (context) => void | Promise<void>;

Defined in: src/interfaces/webhook-options.interface.ts:217

Called when a delivery exhausts retry attempts or receives a non-retryable response. Fire-and-forget — errors are logged, not propagated.

Parameters
ParameterType
contextDeliveryFailedContext
Returns

void | Promise<void>

onDeliveryRetryScheduled?
ts
optional onDeliveryRetryScheduled?: (context) => void | Promise<void>;

Defined in: src/interfaces/webhook-options.interface.ts:220

Called after a retriable failed attempt is persisted with a next attempt time. Fire-and-forget — errors are logged, not propagated.

Parameters
ParameterType
contextDeliveryRetryScheduledContext
Returns

void | Promise<void>

onEndpointDegraded?
ts
optional onEndpointDegraded?: (context) => void | Promise<void>;

Defined in: src/interfaces/webhook-options.interface.ts:225

Called when consecutive failures reach the configured degraded threshold before endpoint disablement. Fire-and-forget — errors are logged, not propagated.

Parameters
ParameterType
contextEndpointDegradedContext
Returns

void | Promise<void>

onEndpointDisabled?
ts
optional onEndpointDisabled?: (context) => void | Promise<void>;

Defined in: src/interfaces/webhook-options.interface.ts:228

Called when the circuit breaker disables an endpoint. Fire-and-forget — errors are logged, not propagated.

Parameters
ParameterType
contextEndpointDisabledContext
Returns

void | Promise<void>

polling?
ts
optional polling?: PollingOptions;

Defined in: src/interfaces/webhook-options.interface.ts:199

prisma?
ts
optional prisma?: TPrisma;

Defined in: src/interfaces/webhook-options.interface.ts:196

PrismaClient instance — used by default Prisma adapters. Not needed if all custom repositories are provided.

redaction?
ts
optional redaction?: WebhookRedactionOptions;

Defined in: src/interfaces/webhook-options.interface.ts:214

Optional minimization hooks applied before webhook data is persisted.

retention?
ts
optional retention?: WebhookRetentionOptions;

Defined in: src/interfaces/webhook-options.interface.ts:212

Optional retention purge policy. Disabled when omitted.

secretVault?
ts
optional secretVault?: WebhookSecretVault;

Defined in: src/interfaces/webhook-options.interface.ts:210

Custom secret vault for encrypting/decrypting endpoint signing secrets at rest. Default: PlaintextSecretVault (no-op).

workerObserver?
ts
optional workerObserver?: WebhookWorkerObserver;

Defined in: src/interfaces/webhook-options.interface.ts:201

Best-effort worker lifecycle and delivery metrics observer. Observer errors are logged and ignored.


WebhookOptionsFactory

Defined in: src/interfaces/webhook-options.interface.ts:231

Methods

createWebhookOptions()
ts
createWebhookOptions():
  | WebhookModuleOptions<unknown>
| Promise<WebhookModuleOptions<unknown>>;

Defined in: src/interfaces/webhook-options.interface.ts:232

Returns

| WebhookModuleOptions<unknown> | Promise<WebhookModuleOptions<unknown>>


WebhookPollContext

Defined in: src/interfaces/webhook-options.interface.ts:75

Properties

activeDeliveries
ts
activeDeliveries: number;

Defined in: src/interfaces/webhook-options.interface.ts:81

batchSize
ts
batchSize: number;

Defined in: src/interfaces/webhook-options.interface.ts:76

drainLoopDelayMs
ts
drainLoopDelayMs: number;

Defined in: src/interfaces/webhook-options.interface.ts:80

drainWhileBacklogged
ts
drainWhileBacklogged: boolean;

Defined in: src/interfaces/webhook-options.interface.ts:78

maxConcurrency
ts
maxConcurrency: number;

Defined in: src/interfaces/webhook-options.interface.ts:77

maxDrainLoopsPerPoll
ts
maxDrainLoopsPerPoll: number;

Defined in: src/interfaces/webhook-options.interface.ts:79


WebhookPollResult

Defined in: src/interfaces/webhook-options.interface.ts:84

Properties

claimed
ts
claimed: number;

Defined in: src/interfaces/webhook-options.interface.ts:85

durationMs
ts
durationMs: number;

Defined in: src/interfaces/webhook-options.interface.ts:91

enriched
ts
enriched: number;

Defined in: src/interfaces/webhook-options.interface.ts:86

failed
ts
failed: number;

Defined in: src/interfaces/webhook-options.interface.ts:88

loops
ts
loops: number;

Defined in: src/interfaces/webhook-options.interface.ts:92

recoveredStale
ts
recoveredStale: number;

Defined in: src/interfaces/webhook-options.interface.ts:90

retried
ts
retried: number;

Defined in: src/interfaces/webhook-options.interface.ts:89

sent
ts
sent: number;

Defined in: src/interfaces/webhook-options.interface.ts:87


WebhookPublishOptions

Defined in: src/interfaces/webhook-options.interface.ts:23

Properties

correlationId?
ts
optional correlationId?: string;

Defined in: src/interfaces/webhook-options.interface.ts:27

Optional caller correlation ID stored with the event for diagnostics.

idempotencyKey?
ts
optional idempotencyKey?: string;

Defined in: src/interfaces/webhook-options.interface.ts:25

Application-provided key used to deduplicate publish attempts.


WebhookRedactionOptions

Defined in: src/interfaces/webhook-options.interface.ts:36

Properties

sanitizePayload?
ts
optional sanitizePayload?: (payload, context) => Record<string, unknown>;

Defined in: src/interfaces/webhook-options.interface.ts:37

Parameters
ParameterType
payloadRecord<string, unknown>
context{ eventType: string; tenantId: string | null; }
context.eventTypestring
context.tenantIdstring | null
Returns

Record<string, unknown>

sanitizeResponseBody?
ts
optional sanitizeResponseBody?: (body, context) => string | null;

Defined in: src/interfaces/webhook-options.interface.ts:41

Parameters
ParameterType
bodystring
context{ deliveryId: string; endpointId: string | null; eventId: string | null; statusCode: number | null; }
context.deliveryIdstring
context.endpointIdstring | null
context.eventIdstring | null
context.statusCodenumber | null
Returns

string | null


WebhookRetentionOptions

Defined in: src/interfaces/webhook-options.interface.ts:30

Properties

attemptResponseBodyRetentionDays?
ts
optional attemptResponseBodyRetentionDays?: number;

Defined in: src/interfaces/webhook-options.interface.ts:33

deliveryResponseBodyRetentionDays?
ts
optional deliveryResponseBodyRetentionDays?: number;

Defined in: src/interfaces/webhook-options.interface.ts:32

eventPayloadRetentionDays?
ts
optional eventPayloadRetentionDays?: number;

Defined in: src/interfaces/webhook-options.interface.ts:31


WebhookRetentionPurgeResult

Defined in: src/interfaces/webhook-delivery.interface.ts:88

Properties

attemptsPurged
ts
attemptsPurged: number;

Defined in: src/interfaces/webhook-delivery.interface.ts:91

deliveriesPurged
ts
deliveriesPurged: number;

Defined in: src/interfaces/webhook-delivery.interface.ts:90

eventsPurged
ts
eventsPurged: number;

Defined in: src/interfaces/webhook-delivery.interface.ts:89


WebhookSecretVault

Defined in: src/ports/webhook-secret-vault.ts:7

Port for encrypting/decrypting endpoint signing secrets at rest. Implement this interface to provide custom encryption (e.g. AES-256-GCM). The default PlaintextSecretVault passes values through unchanged. Throws are propagated to callers; implementations should retry transient KMS/network failures internally.

Methods

decrypt()
ts
decrypt(encryptedSecret): Promise<string>;

Defined in: src/ports/webhook-secret-vault.ts:9

Parameters
ParameterType
encryptedSecretstring
Returns

Promise<string>

encrypt()
ts
encrypt(plainSecret): Promise<string>;

Defined in: src/ports/webhook-secret-vault.ts:8

Parameters
ParameterType
plainSecretstring
Returns

Promise<string>


WebhookVerificationOptions

Defined in: src/webhook.signer.ts:11

Properties

now?
ts
optional now?: Date;

Defined in: src/webhook.signer.ts:13

toleranceSeconds
ts
toleranceSeconds: number;

Defined in: src/webhook.signer.ts:12


WebhookWorkerObserver

Defined in: src/interfaces/webhook-options.interface.ts:115

Methods

onDeliveryComplete()?
ts
optional onDeliveryComplete(result): void;

Defined in: src/interfaces/webhook-options.interface.ts:118

Parameters
ParameterType
resultWebhookDeliveryProcessingResult
Returns

void

onPollComplete()?
ts
optional onPollComplete(result): void;

Defined in: src/interfaces/webhook-options.interface.ts:117

Parameters
ParameterType
resultWebhookPollResult
Returns

void

onPollError()?
ts
optional onPollError(error): void;

Defined in: src/interfaces/webhook-options.interface.ts:119

Parameters
ParameterType
errorunknown
Returns

void

onPollStart()?
ts
optional onPollStart(context): void;

Defined in: src/interfaces/webhook-options.interface.ts:116

Parameters
ParameterType
contextWebhookPollContext
Returns

void

Type Aliases

DeliveryAttemptStatus

ts
type DeliveryAttemptStatus = Exclude<DeliveryStatus, "SENDING">;

Defined in: src/interfaces/webhook-delivery.interface.ts:2


DeliveryFailureKind

ts
type DeliveryFailureKind = "url_validation" | "dispatch_error" | "http_error";

Defined in: src/interfaces/webhook-options.interface.ts:129

Category of failure that caused the delivery to stop after retry exhaustion or after a non-retryable receiver response.

  • url_validation: SSRF defense rejected the URL (private/loopback/link-local/etc.)
  • dispatch_error: dispatcher threw an exception (timeout, ECONNREFUSED, etc.)
  • http_error: endpoint responded with a non-2xx status code

DeliveryStatus

ts
type DeliveryStatus = "PENDING" | "SENDING" | "SENT" | "FAILED";

Defined in: src/interfaces/webhook-delivery.interface.ts:1


EndpointDisabledReason

ts
type EndpointDisabledReason = typeof ENDPOINT_DISABLED_REASON_CONSECUTIVE_FAILURES_EXCEEDED;

Defined in: src/webhook.constants.ts:28


WebhookDeliveryProcessingStatus

ts
type WebhookDeliveryProcessingStatus = "sent" | "failed" | "retried";

Defined in: src/interfaces/webhook-options.interface.ts:95


WebhookTransaction

ts
type WebhookTransaction = {
  [webhookTransactionBrand]: "WebhookTransaction";
};

Defined in: src/ports/webhook-delivery.repository.ts:18

Opaque transaction token created by repository adapters.

Properties

[webhookTransactionBrand]
ts
readonly [webhookTransactionBrand]: "WebhookTransaction";

Defined in: src/ports/webhook-delivery.repository.ts:19


WebhookUrlValidationReason

ts
type WebhookUrlValidationReason =
  | "parse"
  | "scheme"
  | "blocked_hostname"
  | "loopback"
  | "private"
  | "link_local"
  | "invalid_target";

Defined in: src/webhook.url-validator.ts:18

Variables

DEFAULT_BACKOFF_SCHEDULE

ts
const DEFAULT_BACKOFF_SCHEDULE: readonly [30, 300, 1800, 7200, 86400];

Defined in: src/webhook.constants.ts:12

Svix/Stripe-style exponential backoff schedule (seconds)


DEFAULT_CIRCUIT_BREAKER_COOLDOWN_MINUTES

ts
const DEFAULT_CIRCUIT_BREAKER_COOLDOWN_MINUTES: 60 = 60;

Defined in: src/webhook.constants.ts:25


DEFAULT_CIRCUIT_BREAKER_THRESHOLD

ts
const DEFAULT_CIRCUIT_BREAKER_THRESHOLD: 5 = 5;

Defined in: src/webhook.constants.ts:24


DEFAULT_DELIVERY_TIMEOUT

ts
const DEFAULT_DELIVERY_TIMEOUT: 10000 = 10_000;

Defined in: src/webhook.constants.ts:20


DEFAULT_MAX_RETRIES

ts
const DEFAULT_MAX_RETRIES: 5 = 5;

Defined in: src/webhook.constants.ts:21


DEFAULT_POLLING_BATCH_SIZE

ts
const DEFAULT_POLLING_BATCH_SIZE: 50 = 50;

Defined in: src/webhook.constants.ts:32


DEFAULT_POLLING_INTERVAL

ts
const DEFAULT_POLLING_INTERVAL: 5000 = 5_000;

Defined in: src/webhook.constants.ts:31


DEFAULT_STALE_SENDING_MINUTES

ts
const DEFAULT_STALE_SENDING_MINUTES: 5 = 5;

Defined in: src/webhook.constants.ts:33


ENDPOINT_DISABLED_REASON_CONSECUTIVE_FAILURES_EXCEEDED

ts
const ENDPOINT_DISABLED_REASON_CONSECUTIVE_FAILURES_EXCEEDED: "consecutive_failures_exceeded";

Defined in: src/webhook.constants.ts:26


WEBHOOK_DELIVERY_REPOSITORY

ts
const WEBHOOK_DELIVERY_REPOSITORY: "WEBHOOK_DELIVERY_REPOSITORY" = 'WEBHOOK_DELIVERY_REPOSITORY';

Defined in: src/webhook.constants.ts:5


WEBHOOK_ENDPOINT_REPOSITORY

ts
const WEBHOOK_ENDPOINT_REPOSITORY: "WEBHOOK_ENDPOINT_REPOSITORY" = 'WEBHOOK_ENDPOINT_REPOSITORY';

Defined in: src/webhook.constants.ts:4


WEBHOOK_EVENT_REPOSITORY

ts
const WEBHOOK_EVENT_REPOSITORY: "WEBHOOK_EVENT_REPOSITORY" = 'WEBHOOK_EVENT_REPOSITORY';

Defined in: src/webhook.constants.ts:3


WEBHOOK_HTTP_CLIENT

ts
const WEBHOOK_HTTP_CLIENT: "WEBHOOK_HTTP_CLIENT" = 'WEBHOOK_HTTP_CLIENT';

Defined in: src/webhook.constants.ts:6


WEBHOOK_MODULE_OPTIONS

ts
const WEBHOOK_MODULE_OPTIONS: "WEBHOOK_MODULE_OPTIONS" = 'WEBHOOK_MODULE_OPTIONS';

Defined in: src/webhook.constants.ts:1


WEBHOOK_SECRET_VAULT

ts
const WEBHOOK_SECRET_VAULT: "WEBHOOK_SECRET_VAULT" = 'WEBHOOK_SECRET_VAULT';

Defined in: src/webhook.constants.ts:7

Functions

resolveAndValidateHost()

ts
function resolveAndValidateHost(hostname, url?): Promise<string[]>;

Defined in: src/webhook.url-validator.ts:166

Parameters

ParameterType
hostnamestring
url?string

Returns

Promise<string[]>


validateWebhookUrl()

ts
function validateWebhookUrl(url): Promise<void>;

Defined in: src/webhook.url-validator.ts:79

Parameters

ParameterType
urlstring

Returns

Promise<void>

Released under the MIT License.