Declare the APIs your project uses. Get alerted before they break.
Project description
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.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file deprecationwatch-0.1.0.tar.gz.
File metadata
- Download URL: deprecationwatch-0.1.0.tar.gz
- Upload date:
- Size: 24.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0535617b167265032127b6c7fa0e6adce318f3ecda514d6c934007831cef8abd
|
|
| MD5 |
2082b974d5463a687d3ab9c978e96e01
|
|
| BLAKE2b-256 |
65fcfa639c50ea056937f744e4d8471821e8658ef3e0d524e1b21276541717bb
|
File details
Details for the file deprecationwatch-0.1.0-py3-none-any.whl.
File metadata
- Download URL: deprecationwatch-0.1.0-py3-none-any.whl
- Upload date:
- Size: 31.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c051255cebac53d51afc677b60c5b81e5dbc33d4e82b908b2cef22a52fea7c90
|
|
| MD5 |
16f90123e60c8f794f23cd0e613822af
|
|
| BLAKE2b-256 |
ae529013c687565d4ad96c272cbaac3395db7a46e65f7e249dfdc43bf10ec124
|