Anchorage API reference
    Preparing search index...
    interface WebhookRouterOptions {
        audit?: SignalProviderAuditSink;
        basePath?: string;
        forgeryAuditWindowMs?: number;
        maxBodyBytes?: number;
        maxForgeryAuditsPerWindow?: number;
        now?: () => number;
        providers: Record<string, SignalProviderAdapter>;
        rateLimit?: WebhookRateLimiter;
        secretForProvider: (providerId: string) => string | undefined;
        subscriptions: SystemSubscriptionStore;
        topology: ThreadTopology;
    }
    Index

    Properties

    Every ingest audited (accepted + rejected). Forgery audits are bounded (see below).

    basePath?: string

    Route prefix. Default '/api/signal-providers'.

    forgeryAuditWindowMs?: number

    Positive safe-integer forgery-audit window in ms. Default 60000.

    maxBodyBytes?: number

    Max raw webhook body in bytes. Must be a nonnegative safe integer; zero denies every non-empty body. Default 1 MiB.

    maxForgeryAuditsPerWindow?: number

    Forgery audits per provider per window. Must be a nonnegative safe integer; zero disables forgery audit writes without accepting forgeries. Default 10.

    now?: () => number

    Epoch-ms clock for the forgery window, injectable for tests. Default Date.now.

    providers: Record<string, SignalProviderAdapter>

    Registered providers, keyed by id. Empty ⇒ every webhook is route-absent.

    rateLimit?: WebhookRateLimiter

    Per provider+tenant delivery rate cap. Absent ⇒ unmetered.

    secretForProvider: (providerId: string) => string | undefined

    Per-provider signing secret (from a binding/env). undefined ⇒ provider route absent.

    The cross-tenant subscription view — the webhook's tenant authority.

    topology: ThreadTopology

    The sanctioned reach into a thread DO (stamps the tenant header, 404s a foreign thread).