Implementing API Deprecation Strategies

1. Setting Deprecation Headers

Example: RFC 9745 Deprecation header

HTTP/1.1 200 OK
Deprecation: @1735689600
Sunset: Wed, 31 Dec 2025 23:59:59 GMT
Link: <https://api.example.com/v2/orders>; rel="successor-version"
Link: <https://docs.example.com/migrate-v1-v2>; rel="deprecation"
HeaderStandard
DeprecationRFC 9745
SunsetRFC 8594
Link rel=successor-versionRFC 5829

2. Configuring Deprecation Warnings

Example: Warning header (RFC 9111 obsoleted, use custom)

HTTP/1.1 200 OK
X-API-Warning: Endpoint deprecated. Use /v2/orders. Removed 2026-01-01.
Deprecation: true
Sunset: Sat, 01 Jan 2026 00:00:00 GMT

3. Implementing Sunset Dates

PhaseTimeline
Deprecation announcedT-0 (deprecation header on)
Migration periodT-0 to T-6mo
Brownout testsT-3mo (short 503 windows)
Sunset dateT+6mo (returns 410 Gone)
RemovalT+9mo (route deleted)

4. Using Version Sunset Policies

AudienceNotice
Public APIs12 months minimum
Partner APIs6 months + direct comms
Internal APIs3 months
Security retirement30 days (CVE-driven)

5. Configuring Redirect Rules

Example: 301 redirect old → new

location ~ ^/v1/orders/(.*)$ {
  return 301 /v2/orders/$1$is_args$args;
}

# Optional: 308 preserves method for non-GET
location /v1/payments {
  return 308 /v2/payments;
}

6. Setting Up Migration Guides

SectionContent
Why migrateBenefits, sunset reason
Breaking changesSide-by-side diff
Code samplesBefore/after in N languages
SDK upgradePackage version bumps
FAQ + supportOffice hours, Slack

7. Implementing Usage Tracking

MetricUse
Calls per deprecated routeIdentify hold-outs
Unique consumersReach out to top users
Migration % donev1 / (v1+v2) trend
SDK version distributionForce upgrade messaging

8. Using Deprecation Notices in Responses

LocationDetail
HeadersAlways, machine-readable
JSON envelope_warnings: [...]
Error metaJSON:API meta field
SDK telemetryLog warning to console

9. Configuring Graceful Degradation

TechniqueDetail
BrownoutsBrief 503 windows pre-sunset
Read-only modeBlock writes first
Reduced limitsLower rate-limit on old API
Static responseReturn cached snapshot

10. Setting Up Client Communication

ChannelTiming
Email to API key ownersT-12mo, T-6mo, T-1mo, T-1wk
Dev portal bannerPersistent
Changelog/RSSOn every change
Webhookapi.deprecation event
Status pageSunset milestones