Generic webhook as reminder channel #950

Closed
opened 2026-06-18 10:58:02 +02:00 by sleepy · 1 comment
Owner

Overview

Add generic webhook as a fourth reminder channel (alongside browser notification, email, ntfy). Fires a POST to a configurable URL when a reminder fires.

Upstream References

  • PR #2952: Add generic webhook as fourth reminder channel
  • Upstream commit: f72e1bd
  • Local paths: ../odysseus_upstream/routes/webhook_routes.py, ../odysseus_upstream/src/webhook_manager.py

Implementation

  1. Add webhook URL + optional auth header to reminder settings
  2. On reminder fire, POST JSON payload to configured webhook URL
  3. SSRF-guarded (validate URL scheme, no internal hosts)
  4. Handle webhook failures gracefully (log, do not block)
  5. Port relevant tests from upstream

Priority

Low — enables integration with external notification systems (Telegram, Discord, custom scripts).

## Overview Add generic webhook as a fourth reminder channel (alongside browser notification, email, ntfy). Fires a POST to a configurable URL when a reminder fires. ## Upstream References - PR #2952: Add generic webhook as fourth reminder channel - Upstream commit: f72e1bd - Local paths: ../odysseus_upstream/routes/webhook_routes.py, ../odysseus_upstream/src/webhook_manager.py ## Implementation 1. Add webhook URL + optional auth header to reminder settings 2. On reminder fire, POST JSON payload to configured webhook URL 3. SSRF-guarded (validate URL scheme, no internal hosts) 4. Handle webhook failures gracefully (log, do not block) 5. Port relevant tests from upstream ## Priority Low — enables integration with external notification systems (Telegram, Discord, custom scripts).
Author
Owner

Merged via squash to dev (e537b2e). 11 files, +577 lines. Webhook as 4th reminder channel with SSRF-guarded POST, auth header support, graceful failure handling. Frontend: webhook URL + auth header in settings. 13 tests passing (10 new reminder dispatch tests). PR review: 2 rounds (missing test coverage → fixed). Also fixed pre-existing bugs: untracked webhook_manager.fire calls, _spawn_tracked task management, sanitize_error IPv6 handling.

Merged via squash to dev (e537b2e). 11 files, +577 lines. Webhook as 4th reminder channel with SSRF-guarded POST, auth header support, graceful failure handling. Frontend: webhook URL + auth header in settings. 13 tests passing (10 new reminder dispatch tests). PR review: 2 rounds (missing test coverage → fixed). Also fixed pre-existing bugs: untracked webhook_manager.fire calls, _spawn_tracked task management, sanitize_error IPv6 handling.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
sleepy/odysseus#950
No description provided.