-
Notifications
You must be signed in to change notification settings - Fork 1
docs: document API deprecation process (closes #75) #86
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from 1 commit
Commits
Show all changes
4 commits
Select commit
Hold shift + click to select a range
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,41 @@ | ||
| # API Deprecation Policy | ||
|
|
||
| How the HTTP API (`/api/*`), CLI flags (`cursor-chat-export`), and shared JSON response fields are deprecated and removed. Complements the [Versioning](../README.md#versioning) section and [CHANGELOG.md](../CHANGELOG.md). | ||
|
|
||
| ## Pre-1.0 posture | ||
|
|
||
| While the project is at `0.x.y`, **breaking changes may land in any minor release** without a prior deprecation cycle. Deprecations are still recorded in the changelog when practicable, but there is no guarantee of advance notice before removal. After `1.0.0`, the workflow below applies in full. | ||
|
|
||
| ## Deprecation workflow | ||
|
|
||
| When an endpoint, parameter, response field, or CLI flag is scheduled for removal: | ||
|
|
||
| 1. **CHANGELOG** — Add an entry under `### Deprecated` naming the surface, its replacement (if any), and the planned removal version. | ||
| 2. **Response headers** — Deprecated HTTP endpoints and parameters emit a `Deprecation` header on every affected response (see [Header format](#header-format)). | ||
| 3. **Server log** — Route handlers log `logging.warning()` with the deprecated symbol and recommended replacement. | ||
| 4. **Removal** — Remove no earlier than **one minor version** after the deprecation was announced (e.g. deprecated in `1.2.0`, removable from `1.4.0`). Document under `### Removed` in the changelog. | ||
|
|
||
| ## Header format | ||
|
|
||
| Deprecated HTTP routes and query parameters set: | ||
|
|
||
| ```http | ||
| Deprecation: true; sunset=2026-09-01 | ||
| ``` | ||
|
|
||
| - `sunset` — ISO 8601 calendar date (UTC) when removal is scheduled. | ||
| - Optionally add `link="<url>"` pointing to the changelog entry or migration notes. | ||
|
|
||
| Clients should treat any `Deprecation: true` response as a signal to migrate before the sunset date. | ||
|
|
||
| ## Surfaces covered | ||
|
|
||
| | Surface | Signals | | ||
| |---------|---------| | ||
| | HTTP endpoint or parameter | `Deprecation` header, changelog entry, server log | | ||
| | JSON response field | Changelog entry; field remains until removal | | ||
| | CLI flag | `(deprecated)` in `--help`, changelog entry | | ||
|
|
||
| ## Removal documentation | ||
|
|
||
| Removals go under `### Removed` in [CHANGELOG.md](../CHANGELOG.md): what was removed, which version deprecated it, and the migration path. | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.