In-memory store for webhook deliveries in test mode.
When webhook_mode: :collect is configured, webhooks are stored here
instead of being delivered via HTTP. Tests can then inspect what
webhooks would have been delivered.
Data is namespace-scoped for test isolation with async: true.
Summary
Functions
Returns a specification to start this module under a supervisor.
Clears all webhook_deliverys from the store (all namespaces).
Clears all webhook_deliveries for a specific namespace.
Counts total webhook_deliveries in current namespace.
Deletes a webhook_delivery from the store.
Retrieves a webhook_delivery by ID.
Gets all recorded webhook deliveries for the current namespace.
Gets webhook deliveries filtered by event type.
Inserts a webhook_delivery into the store.
Lists all webhook_deliveries with optional pagination.
Returns all items in a specific namespace.
Returns the ID prefix for this resource.
Records a webhook delivery for later inspection.
Starts the webhook_delivery store GenServer.
Returns the ETS table name for this store.
Updates a webhook_delivery in the store.
Functions
Returns a specification to start this module under a supervisor.
See Supervisor.
@spec clear() :: :ok
Clears all webhook_deliverys from the store (all namespaces).
Serialized write - goes through GenServer.
Useful for test cleanup. Note: This clears ALL data, not just
the current namespace. For namespace-specific cleanup, use
clear_namespace/1.
@spec clear_namespace(pid() | :global) :: :ok
Clears all webhook_deliveries for a specific namespace.
Used by PaperTiger.Test to clean up after each test.
@spec count() :: non_neg_integer()
Counts total webhook_deliveries in current namespace.
Direct ETS access - does not go through GenServer.
@spec delete(String.t()) :: :ok
Deletes a webhook_delivery from the store.
Serialized write - goes through GenServer. Data is scoped to the current test namespace.
Retrieves a webhook_delivery by ID.
Direct ETS access - does not go through GenServer. Data is scoped to the current test namespace.
Gets all recorded webhook deliveries for the current namespace.
Returns deliveries in chronological order (oldest first).
Gets webhook deliveries filtered by event type.
Examples
# Get all customer.created events
get_by_type("customer.created")
# Get all invoice events
get_by_type("invoice.*")
Inserts a webhook_delivery into the store.
Serialized write - goes through GenServer to prevent race conditions. Data is scoped to the current test namespace.
@spec list(keyword() | map()) :: PaperTiger.List.t()
Lists all webhook_deliveries with optional pagination.
Direct ETS access - does not go through GenServer. Data is scoped to the current test namespace.
Options
:limit- Number of items (default: 10, max: 100):starting_after- Cursor for pagination:ending_before- Reverse cursor
Returns all items in a specific namespace.
Useful for debugging test isolation.
@spec prefix() :: String.t() | nil
Returns the ID prefix for this resource.
Records a webhook delivery for later inspection.
Called by the telemetry handler when in :collect mode.
@spec start_link(keyword()) :: GenServer.on_start()
Starts the webhook_delivery store GenServer.
@spec table_name() :: atom()
Returns the ETS table name for this store.
Updates a webhook_delivery in the store.
Serialized write - goes through GenServer. Data is scoped to the current test namespace.