Skip to content
versioning-apis logo

Versioning APIs

versioning-apis

Implement API versioning with backward compatibility, deprecation notices,

SKILL.md

Full skill instructions

Versioning APIs

Overview

Implement API versioning strategies -- URL path (/​v1/, /​v2/), header-based (Accept: application/​vnd.api.v2+json), or query parameter (?version=2) -- with backward compatibility layers, deprecation notices, and automated migration paths. Manage concurrent version support, sunset timelines, and breaking change detection across the API surface.

Prerequisites

  • Existing API codebase with route definitions and controller implementations
  • Version control history for tracking breaking changes across releases
  • OpenAPI specs for each supported API version (or ability to generate them)
  • API gateway or reverse proxy capable of version-based routing (optional: Kong, AWS API Gateway)
  • Consumer notification channel for deprecation announcements (changelog, email, response headers)

Instructions

  1. Audit existing endpoints using Grep and Read to identify current versioning approach (if any) and catalog all public-facing endpoints with their request/​response contracts.
  2. Select a versioning strategy based on API consumer patterns: URL path versioning for public APIs, header versioning for APIs needing clean URLs, or content negotiation for advanced use cases.
  3. Create a version router that directs requests to the appropriate version handler set based on the extracted version identifier from URL, header, or query parameter.
  4. Implement version-specific controller directories (/​v1/​controllers/, /​v2/​controllers/) with shared business logic extracted into version-independent service layers.
  5. Build a compatibility layer that transforms v1 requests into v2 format and v2 responses back to v1 format, enabling older versions to run on the latest business logic.
  6. Add deprecation headers to sunset versions: Deprecation: true, Sunset: <date>, and Link: <migration-guide-url>; rel="sunset" per the Sunset HTTP header RFC.
  7. Create a breaking change detector that compares OpenAPI specs between versions and flags removed fields, changed types, new required parameters, and altered response structures.
  8. Write version compatibility tests that send v1-formatted requests and verify correct responses, ensuring the compatibility layer preserves backward compatibility.

See ${CLAUDE_SKILL_DIR}/​references/​implementation.md for the full implementation guide.

Output

  • ${CLAUDE_SKILL_DIR}/​src/​routes/​v1/ - Version 1 route definitions
  • ${CLAUDE_SKILL_DIR}/​src/​routes/​v2/ - Version 2 route definitions
  • ${CLAUDE_SKILL_DIR}/​src/​middleware/​version-router.js - Version extraction and routing middleware
  • ${CLAUDE_SKILL_DIR}/​src/​compatibility/ - Request/​response transformation layers between versions
  • ${CLAUDE_SKILL_DIR}/​src/​utils/​breaking-change-detector.js - OpenAPI diff tool for breaking changes
  • ${CLAUDE_SKILL_DIR}/​docs/​migration-guide-v1-to-v2.md - Consumer migration documentation

Error Handling

ErrorCauseSolution
400 Unsupported VersionClient requests a version that does not existReturn available versions list in error body; suggest closest valid version
410 GoneClient requests a sunset version past its end-of-life dateReturn migration guide URL and recommended current version in error body
Compatibility layer failurev1-to-v2 transform encounters a field with no mappingLog unmapped fields; return partial response with warning header; alert API team
Version header ignoredClient sets version header but reverse proxy strips custom headersDocument required proxy configuration; add URL path fallback for header-based versioning
Breaking change undetectedSemantic change (same field name, different meaning) not caught by schema diffAdd contract tests with business-logic assertions beyond schema structure

Refer to ${CLAUDE_SKILL_DIR}/​references/​errors.md for comprehensive error patterns.

Examples

URL path versioning: Migrate from /​api/​users to /​api/​v1/​users and /​api/​v2/​users where v2 changes name (string) to firstName/lastName (object), with v1 compatibility layer that joins the fields.

Header-based versioning: Route requests using Accept: application/​vnd.myapi.v2+json with a default version fallback for clients omitting the header, and version discovery via OPTIONS responses.

Sunset lifecycle management: Announce v1 deprecation with 6-month sunset timeline, add Sunset headers immediately, log v1 usage metrics to track migration progress, and auto-disable after sunset date.

See ${CLAUDE_SKILL_DIR}/​references/​examples.md for additional examples.

Resources

  • RFC 8594 The Sunset HTTP Header Field
  • API Versioning strategies comparison (Stripe, GitHub, Twilio approaches)
  • OpenAPI diff tools: oasdiff, openapi-diff
  • Semantic Versioning 2.0.0: https://semver.org/

More skills from jeremylongshore

openrouter-compliance-review logo
jeremylongshore/claude-code-plugins-plus-skills

openrouter-compliance-review

Review OpenRouter integration for regulatory compliance (SOC2, GDPR,

2.8K 0
View
maintainx-data-handling logo
jeremylongshore/claude-code-plugins-plus-skills

maintainx-data-handling

Data synchronization, ETL patterns, and data management for MaintainX.

2.8K 0
View
groq-core-workflow-a logo
jeremylongshore/claude-code-plugins-plus-skills

groq-core-workflow-a

Execute Groq primary workflow: chat completions with tool use and JSON

2.8K 0
View
validating-csrf-protection logo
jeremylongshore/claude-code-plugins-plus-skills

validating-csrf-protection

Validate CSRF protection implementations for security gaps. Use when

2.8K 0
View
api-contract logo
jeremylongshore/claude-code-plugins-plus-skills

api-contract

Configure this skill should be used when the user asks about "API contract",

2.8K 0
View
ideogram-incident-runbook logo
jeremylongshore/claude-code-plugins-plus-skills

ideogram-incident-runbook

Execute Ideogram incident response with triage, mitigation, and postmortem.

2.8K 0
View
gamma-sdk-patterns logo
jeremylongshore/claude-code-plugins-plus-skills

gamma-sdk-patterns

Reusable patterns for the Gamma REST API (no SDK exists).

2.8K 0
View
deepgram-sdk-patterns logo
jeremylongshore/claude-code-plugins-plus-skills

deepgram-sdk-patterns

Apply production-ready Deepgram SDK patterns for TypeScript and Python.

2.8K 0
View
openrouter-upgrade-migration logo
jeremylongshore/claude-code-plugins-plus-skills

openrouter-upgrade-migration

Migrate to OpenRouter from direct provider APIs or upgrade between SDK/model

2.8K 0
View
openrouter-common-errors logo
jeremylongshore/claude-code-plugins-plus-skills

openrouter-common-errors

Diagnose and fix common OpenRouter API errors. Use when encountering

2.8K 0
View
linear-cost-tuning logo
jeremylongshore/claude-code-plugins-plus-skills

linear-cost-tuning

Optimize Linear API usage, reduce unnecessary calls, and maximize

2.8K 0
View

Popular AI tools

Kaiber logo
Video

Kaiber

Generate, edit, and beat-sync AI video with leading models in one workspace.

Paid
View
Vimcal logo
Productivity

Vimcal

The world's fastest calendar for remote work

Free
View

Transform Your Design with AI Designer by ImgCreator.ai

Freemium
View
Akool AI logo
Content & writing

Akool AI

Revolutionizing Video Production with AI-Powered Creativity

Paid
View

Extend an image past the frame and let AI fill the new aspect ratio.

Freemium
View
StarByFace logo
Security

StarByFace

Discover your celebrity doppelgänger with StarByFace!

Free
View
C

ChainClarity explains 700+ crypto whitepapers in plain English, with layered summaries, comparisons, research tools, alerts, and a $4.99 Pro plan.

Freemium
View
Opus Clip logo
Coding & apps

Opus Clip

Opus.ai: Revolutionize Your Web Experience

Free
View