DeprecationWatch
Declare the APIs your project uses. Get alerted before they break.
Open-source API deprecation monitoring for developers who consume third-party APIs — not the teams that publish them.
Dependabot bumps package versions. It doesn't tell you that OpenAI is removing gpt-4-turbo in October or that Stripe deprecated an endpoint your checkout flow still calls. DeprecationWatch closes that gap.
Why this exists
- Dependabot / Renovate — package versions, not API-level deprecations
- Visualping — visual page diffs, not structured developer alerts
- API management platforms — built for API producers, enterprise-priced
- Optic — closest prior art; repository archived January 2026
DeprecationWatch monitors official changelogs, SDK releases, and HTTP Deprecation / Sunset headers — then alerts you at 90, 30, and 7 days before removal.
Dashboard
Local web UI — stat cards, provider health, urgency-sorted timeline:
pip install "deprecationwatch[dashboard]"
dep-watch dashboard
# → http://127.0.0.1:8080
Or from a clone:
git clone https://github.com/arunmm8335/DeprecationWatch && cd DeprecationWatch
pip install -e ".[dashboard]"
dep-watch dashboard
Toggle Show expired to include past removal dates:
Quick start
pip install deprecationwatch
# optional extras
pip install "deprecationwatch[alerts]" # Slack / email
pip install "deprecationwatch[dashboard]" # local web UI
pip install "deprecationwatch[all]" # everything
dep-watch init # creates depwatch.yml
dep-watch check # scan live sources
Install from source (latest main):
pip install git+https://github.com/arunmm8335/DeprecationWatch.git
Example output
✓ Stripe - no deprecations found
⚠ OpenAI gpt-4-turbo - DEPRECATED | removal: 2026-10-23 | 116 days left
→ Guide: https://platform.openai.com/docs/deprecations
✓ GitHub - no deprecations found
Configuration
Copy depwatch.yml.example or run dep-watch init:
version: 1
project: my-app
apis:
- name: OpenAI
type: openai
track:
- gpt-4
- gpt-4-turbo
- name: Stripe
type: stripe
track:
- checkout.sessions.create
- name: Twilio
type: generic_changelog
changelog_url: https://www.twilio.com/en-us/changelog
track_keywords:
- SMS
alerts:
slack_webhook: https://hooks.slack.com/services/XXX/YYY/ZZZ
days_warning: [90, 30, 7]
Supported adapters
| Type | Source | LLM needed |
|---|---|---|
openai |
OpenAI deprecations page | No |
stripe |
Stripe changelog RSS | Optional |
github_rest |
GitHub changelog RSS | Optional |
generic_changelog |
Any changelog URL | Yes (for diffs) |
http_headers |
Live endpoint Deprecation / Sunset headers |
No |
Add more providers — see CONTRIBUTING.md.
HTTP header probes
Many APIs send standard Deprecation and Sunset headers on live responses. Probe endpoints you call in production:
- name: Example API
type: http_headers
track:
- https://api.example.com/v1/users
request_headers:
Authorization: "Bearer ${YOUR_TOKEN}"
Daemon mode
Run checks on a schedule locally (cron alternative):
dep-watch watch --interval 24h
dep-watch watch --interval 30m --once # single run
Pairs with alerts — get Slack/email when thresholds are crossed without setting up cron.
Alerts
Email and Slack via Apprise. Deduplicated — you won't get the same 30-day warning twice.
pip install "deprecationwatch[alerts]"
dep-watch check --alert-dry-run # test without sending
dep-watch check # sends when thresholds hit
dep-watch check --no-alerts # skip (for CI)
CI / GitHub Action
Fail the build when a tracked API is within 30 days of sunset:
# .github/workflows/dep-watch.yml
name: API Deprecation Check
on:
schedule:
- cron: "0 9 * * 1"
pull_request:
workflow_dispatch:
jobs:
check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: arunmm8335/DeprecationWatch/action@v1
with:
config: depwatch.yml
fail-on: breaking
days-threshold: "30"
Or run locally in CI mode:
dep-watch check --fail-on breaking --days-threshold 30
Emits GitHub workflow annotations when running in Actions.
LLM classification
Unstructured changelogs use LiteLLM — bring your own model:
export DEPWATCH_LLM_MODEL=ollama/llama3 # free, local
export DEPWATCH_LLM_MODEL=anthropic/claude-haiku-4-5 # ~$0.001/run
export DEPWATCH_LLM_MODEL=none # skip LLM (OpenAI adapter still works)
What we can't detect (yet)
Be honest about limits — PRs welcome:
- Providers that don't publish deprecations anywhere
- Changes buried in blog posts with no changelog
- Undocumented breaking changes with no headers
- False positives from LLM classification on generic changelogs
We optimize for precision over recall. A missed deprecation is bad; a false alarm every week is worse.
Development
git clone https://github.com/arunmm8335/DeprecationWatch
cd DeprecationWatch
python3 -m venv .venv && source .venv/bin/activate
pip install -e ".[dev,alerts,dashboard]"
pytest
dep-watch check --config depwatch.yml.example --fail-on none
Project layout
dep-watch check CLI — scan & alert
dep-watch watch Daemon — scheduled checks
dep-watch dashboard Local web UI
dep-watch report JSON/table export
action/ GitHub Action composite
src/dep_watch/
adapters/ One module per API provider
alerts.py Apprise + deduplication
classifier.py LiteLLM fallback
Roadmap
- Config parser, SQLite storage, OpenAI adapter
- Stripe / GitHub / generic changelog adapters
- Apprise alerts with deduplication
- GitHub Action, local dashboard, expired filter
- HTTP
Deprecation/Sunsetheader monitor -
dep-watch watchdaemon mode - PyPI packaging (
pip install deprecationwatch) — see PUBLISHING.md - Community adapters (AWS, Azure, Razorpay, …)
Contributing
Contributions are welcome — especially new adapters. Read CONTRIBUTING.md for the adapter pattern and PR guidelines.
License
MIT — see LICENSE.
Release files for deprecationwatch 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| deprecationwatch-0.1.0.tar.gz | 24.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| deprecationwatch-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 55.5 kB
Release files / deprecationwatch-0.1.0.tar.gz
| Download URL | deprecationwatch-0.1.0.tar.gz |
|---|---|
| Size | 24.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
0535617b167265032127b6c7fa0e6adce318f3ecda514d6c934007831cef8abd
|
|
BLAKE2b-256 checksum How to use checksums |
65fcfa639c50ea056937f744e4d8471821e8658ef3e0d524e1b21276541717bb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.3
|
Release files / deprecationwatch-0.1.0-py3-none-any.whl
| Download URL | deprecationwatch-0.1.0-py3-none-any.whl |
|---|---|
| Size | 31.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c051255cebac53d51afc677b60c5b81e5dbc33d4e82b908b2cef22a52fea7c90
|
|
BLAKE2b-256 checksum How to use checksums |
ae529013c687565d4ad96c272cbaac3395db7a46e65f7e249dfdc43bf10ec124
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.3
|