|
| 1 | +# API Deprecation Policy |
| 2 | + |
| 3 | +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). |
| 4 | + |
| 5 | +## Pre-1.0 posture |
| 6 | + |
| 7 | +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. |
| 8 | + |
| 9 | +## Deprecation workflow |
| 10 | + |
| 11 | +When an endpoint, parameter, response field, or CLI flag is scheduled for removal: |
| 12 | + |
| 13 | +1. **CHANGELOG** — Add an entry under `### Deprecated` naming the surface, its replacement (if any), and the planned removal version. |
| 14 | +2. **Response headers** — Deprecated HTTP endpoints and parameters emit a `Deprecation` header on every affected response (see [Header format](#header-format)). |
| 15 | +3. **Server log** — Route handlers log `logging.warning()` with the deprecated symbol and recommended replacement. |
| 16 | +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. |
| 17 | + |
| 18 | +## Header format |
| 19 | + |
| 20 | +Deprecated HTTP routes and query parameters set: |
| 21 | + |
| 22 | +```http |
| 23 | +Deprecation: true; sunset=2026-09-01 |
| 24 | +``` |
| 25 | + |
| 26 | +- `sunset` — ISO 8601 calendar date (UTC) when removal is scheduled. |
| 27 | +- Optionally add `link="<url>"` pointing to the changelog entry or migration notes. |
| 28 | + |
| 29 | +Clients should treat any `Deprecation: true` response as a signal to migrate before the sunset date. |
| 30 | + |
| 31 | +## Surfaces covered |
| 32 | + |
| 33 | +| Surface | Signals | |
| 34 | +|---------|---------| |
| 35 | +| HTTP endpoint or parameter | `Deprecation` header, changelog entry, server log | |
| 36 | +| JSON response field | Changelog entry; field remains until removal | |
| 37 | +| CLI flag | `(deprecated)` in `--help`, changelog entry | |
| 38 | + |
| 39 | +## Removal documentation |
| 40 | + |
| 41 | +Removals go under `### Removed` in [CHANGELOG.md](../CHANGELOG.md): what was removed, which version deprecated it, and the migration path. |
0 commit comments