* feat: codify queue columns * fix: batch with python loop control * fix: cleanup merge * fix: down revision * fix: batch delete in migration * feat: only run alembic tests for changed migration / test (#264) * feat: only run alembic tests for changed migration / test * fix: Run full test suite if alembic testing infra changes * feat: codify times_derived + level on Document (#260) * feat: codify times_derived + level on Document * fix: CR comment * fix: CodeRabbit comments * fix: batch migrations; move types; remove fields from payload * fix: rm duplicate table args * fix: add messages.id FK |
||
|---|---|---|
| .. | ||
| README.md | ||
| events.py | ||
| webhook_delivery.py | ||
README.md
Webhooks
Webhooks are used to deliver event notifications to user-configured URLs.
System Architecture
The webhooks system consists of several key components:
- API Endpoints (
routers/webhooks.py): Provides endpoints for users to create, list, delete, and test their webhook subscriptions. - Event Publishing (
webhooks/events.py): Defines the event types and allows us to publish new events to the processing queue. - Webhook Delivery (
webhooks/webhook_delivery.py): Contains the logic for sending the webhook to the subscriber's URL.
Event Flow
- An event is triggered within the application by calling
publish_webhook_eventwith a defined event payload. - This function creates a
QueueItemand stores it in the database. - The
QueueManagerbackground process polls the database for new items. - When a new event is found, it is passed to the
deliver_webhookfunction. deliver_webhookfetches all subscriber URLs for the event's workspace, signs the payload with a secret key, and sends an HTTP POST request to each URL.
Note that the webhooks require the deriver process to be running to facilitate the delivery of the webhook.