[FEAT] Ordered Webhook Delivery with Dead Letter Queue
Priority: High
Difficulty: Hard
Estimated Effort: 3-4 days
Relevant Packages: OrbitStream_backend/, orbitstream_docs/
Labels: enhancement, infrastructure, priority:high
Requirements
1. Ordered Delivery
- Add a
sequence column to webhook_deliveries table (auto-increment per session)
- When dispatching webhooks for the same session, process them sequentially
- Use a per-session queue within the main queue
- If webhook N for session X fails, block webhook N+1 for session X until N succeeds or goes to dead letter
2. Dead Letter Queue
- After 5 failed attempts, move delivery to a
webhook_dead_letter table
- Dead letter entries include: all delivery attempts with timestamps and error messages
- Merchants can view dead letter entries via
GET /v1/webhooks/dead-letter
- Merchants can manually retry via
POST /v1/webhooks/dead-letter/:id/retry
- Merchants can dismiss via
DELETE /v1/webhooks/dead-letter/:id
3. Delivery Log
GET /v1/webhooks/deliveries — list recent deliveries (last 100, paginated)
- Filter by: event type, status (delivered/failed/pending), date range
- Each entry shows: event, status, attempts, last error, delivered_at
4. Idempotency Keys
- Each delivery gets
X-OrbitStream-Delivery-Id (UUID v4)
- Each delivery gets
X-OrbitStream-Timestamp (ISO 8601)
- Signature covers:
delivery_id + timestamp + payload
- Document idempotency in integration guide
5. Testing
- Test ordering: webhooks for same session arrive in order
- Test dead letter: failed deliveries move to DLQ after 5 attempts
- Test manual retry: dead letter entry is retried successfully
- Test idempotency: duplicate delivery IDs are handled
[FEAT] Ordered Webhook Delivery with Dead Letter Queue
Priority: High
Difficulty: Hard
Estimated Effort: 3-4 days
Relevant Packages:
OrbitStream_backend/,orbitstream_docs/Labels:
enhancement,infrastructure,priority:highRequirements
1. Ordered Delivery
sequencecolumn towebhook_deliveriestable (auto-increment per session)2. Dead Letter Queue
webhook_dead_lettertableGET /v1/webhooks/dead-letterPOST /v1/webhooks/dead-letter/:id/retryDELETE /v1/webhooks/dead-letter/:id3. Delivery Log
GET /v1/webhooks/deliveries— list recent deliveries (last 100, paginated)4. Idempotency Keys
X-OrbitStream-Delivery-Id(UUID v4)X-OrbitStream-Timestamp(ISO 8601)delivery_id + timestamp + payload5. Testing