Turn an endpoint, field, API version or SDK method you want to retire into a complete YAML deprecation plan: timeline phases with exit criteria, deprecation and Sunset headers, changelog and SDK warnings, usage thresholds, customer communications, a migration guide with before/after examples, brownouts, exceptions, risks, rollback and final cleanup.
1You are a senior API platform engineer. Turn the information I give you into a complete, realistic deprecation and sunset plan for an API (an endpoint, a field, a version, or an SDK method), returned as a single YAML document that follows the schema below exactly.23Inputs I will provide (ask for anything critical that is missing before writing the plan, at most 4 questions):4- what is being deprecated and what replaces it5- who calls it (internal teams, public customers, partners, mobile apps with slow upgrade cycles)6- current usage data, if any (requests per day, number of distinct API keys or clients)7- hard constraints (contracts, compliance dates, a platform migration deadline)89Rules:10- Output only valid YAML (2-space indentation, no tabs, quote strings that contain colons). Do not copy the schema comments into the output.11- Never invent usage numbers, customer names or contract terms: use "unknown" and add an item to open_questions.12- Use ISO dates (YYYY-MM-DD). If I give no start date, use T0, T0+30d, etc.13- Default minimum notice: 90 days for internal-only callers, 6 months for public APIs, 12 months for partners or mobile apps, unless I give a stricter rule.14- Prefer standard signals: the Deprecation and Sunset HTTP response headers, a Link header to the migration guide, changelog entries, SDK warnings and the API reference.15- Include brownouts (short planned periods where the old API returns errors) only after at least two direct notices and only if usage is still above the threshold you define.16- Keep a rollback path until the final removal.1718Schema:1920```yaml21deprecation_plan:22 summary:23 target: "" # e.g. "GET /v1/invoices/{id}/pdf"24 target_type: "" # endpoint | field | api_version | sdk_method | webhook_event25 replacement: ""26 reason: ""27 owner_team: ""28 audience: [] # internal | public | partners | mobile_apps29 timeline:30 - phase: "" # announce | warn | brownout | freeze | sunset | removal31 date: ""32 actions: []33 exit_criteria: ""34 signals:35 http_headers:36 deprecation: "" # example header value37 sunset: ""38 link: ""39 changelog_entry: ""40 api_reference_note: ""41 sdk_warning: ""42 dashboard_banner: ""43 usage_tracking:44 metrics: [] # e.g. daily calls, distinct keys, top callers45 data_source: ""46 removal_threshold: "" # e.g. "< 50 calls/day from < 3 keys for 14 days"47 review_cadence: ""48 communications:49 - when: ""50 channel: "" # email | changelog | status_page | in_app | account_manager | slack51 audience: ""52 message_outline: []53 migration_guide:54 steps: []55 before_after_example:56 before: ""57 after: ""58 breaking_differences: []59 test_checklist: []60 brownouts:61 - date: ""62 duration: ""63 error_response: "" # status code and body callers will see64 condition: ""65 exceptions:66 process: ""67 max_extension: ""68 approver: ""69 risks:70 - risk: ""71 likelihood: "" # low | medium | high72 mitigation: ""73 rollback:74 trigger: ""75 steps: []76 final_removal:77 code_cleanup: []78 docs_cleanup: []79 monitoring_after_removal: ""80 open_questions: []81 notes: ""82```8384After the YAML, add nothing else. If I only give a one-line description, still produce the full plan with "unknown" values and a thorough open_questions list.8586My deprecation details:
Compares an OpenAPI YAML/JSON spec to a list of implemented routes and flags drift: missing operations, extra routes, method mismatches, and path-parameter shape differences. Use when reviewing API PRs, before a release, or asking "does our code still match the OpenAPI?". Includes a stdlib Python checker with --self-test.
Reviews GitHub Actions workflow YAML for supply-chain and injection risks: pull_request_target with PR checkout, untrusted github.event text in run steps, actions pinned to tags or branches instead of commit SHAs, missing or write-all permissions, secrets in shell commands, curl | bash, self-hosted runners on PRs, and missing timeouts. Use before merging CI changes or auditing a repo. Includes a stdlib Python linter with --self-test.
Simulates API rate limits before you ship them - token bucket, fixed window, sliding log and sliding counter, per client, endpoint, tier or global - against generated or recorded traffic with retrying clients. Shows who gets 429s and for how long, fixed-window boundary bursts, retry herds, noisy neighbours, abusive clients that still get through and peaks over backend capacity. Includes an offline stdlib Python simulator with --self-test.
Reviews OpenAPI/API diffs for breaking changes and writes a migration checklist.
Plans safe API call budgets across services and environments: maps quotas and burst limits, sizes caches and queues, and spots which jobs will trip 429s before they hit production.
Plans realistic load tests before a launch or traffic spike: models expected traffic, writes test scenarios, reads the results and points to the first bottleneck to fix.
Finds preview and ephemeral environments left running after a pull request merges or goes stale, estimates what they cost, and proposes a safe teardown list you approve.
Watches your dead letter queues, groups failed messages by cause, explains what broke and proposes a safe replay plan so failed jobs are fixed instead of piling up silently.