28 lines
1.1 KiB
SQL
28 lines
1.1 KiB
SQL
-- Zentrale Webhook-Registry & Zustellung (API-07, siehe
|
|
-- core-kanban/tickets/API-07.md) — Postgres-basierte Jobqueue, kein
|
|
-- Redis/AMQP (Ticket-Vorgabe).
|
|
CREATE TABLE webhook_subscriptions (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
event_type TEXT NOT NULL,
|
|
target_url TEXT NOT NULL,
|
|
secret TEXT NOT NULL,
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT now()
|
|
);
|
|
|
|
CREATE INDEX webhook_subscriptions_event_type_idx ON webhook_subscriptions (event_type);
|
|
|
|
CREATE TABLE webhook_deliveries (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
subscription_id UUID NOT NULL REFERENCES webhook_subscriptions(id),
|
|
event_type TEXT NOT NULL,
|
|
payload JSONB NOT NULL,
|
|
status TEXT NOT NULL DEFAULT 'pending', -- pending|delivered|failed
|
|
attempt INT NOT NULL DEFAULT 0,
|
|
next_attempt_at TIMESTAMPTZ NOT NULL DEFAULT now(),
|
|
last_error TEXT,
|
|
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
|
|
delivered_at TIMESTAMPTZ
|
|
);
|
|
|
|
CREATE INDEX webhook_deliveries_due_idx ON webhook_deliveries (status, next_attempt_at);
|