Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -227,7 +227,7 @@ The tray is currently in beta. Feedback is highly appreciated at [github.com/onl

**Push notifications (Beta)** -- Receive browser push notifications when quotas cross thresholds. onWatch is a PWA (Progressive Web App) - install it from your browser for a native app experience. Uses Web Push protocol (VAPID) with zero external dependencies. Configure delivery channels (email, push, webhook, or any combination) per your preference.

**Webhook notifications (Beta)** -- POST a JSON payload to any HTTP endpoint on warning, critical, reset, auth error, and Codex quota-starter events. Works with ntfy, Gotify, and custom services, with optional bearer-token auth and custom headers. Payloads never contain credentials. See [docs/WEBHOOK_SETUP.md](docs/WEBHOOK_SETUP.md).
**Webhook notifications (Beta)** -- POST a JSON payload to any HTTP endpoint on warning, critical, reset, auth error, Codex quota-starter, and banked Codex reset expiry events. Works with ntfy, Gotify, and custom services, with optional bearer-token auth and custom headers. Payloads never contain credentials. See [docs/WEBHOOK_SETUP.md](docs/WEBHOOK_SETUP.md).

**Dark/Light mode** -- Toggle via sun/moon icon in the header. Auto-detects system preference on first visit and persists your choice across sessions.

Expand Down
9 changes: 8 additions & 1 deletion docs/WEBHOOK_SETUP.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,8 +38,13 @@ The test button uses the *saved* configuration, so save before testing.
| `auth_error` | A provider token refresh or authentication fails |
| `starter_success` | The Codex auto quota-starter successfully started a limit window |
| `starter_failure` | The Codex auto quota-starter ping failed |
| `reset_credit_expiry` | A banked Codex reset expires within 24 hours |
| `test` | You press **Send Test Webhook** |

A newly added event is off for webhooks that already exist: its stored value is
absent, and only `warning` and `critical` default on. Tick it once under
**Webhook Configuration** and save.

## Payload

`POST` with `Content-Type: application/json`:
Expand All @@ -62,7 +67,9 @@ The test button uses the *saved* configuration, so save before testing.

Optional fields are omitted rather than sent as zero. `reset_at` appears only
when the provider reports a reset time. `quota_key`, `utilization`, `limit`, and
`threshold` are absent on auth-error and starter events.
`threshold` are absent on auth-error and starter events. On
`reset_credit_expiry`, `quota_key` is the reset credit ID and `reset_at` is the
expiry time.

**The payload never contains credentials** - no OAuth tokens, API keys, or the
webhook bearer token itself.
Expand Down
Loading