Skip to content
Agentmart
Submit a tool

api-versioning

API versioning — compatibility rules and deprecation lifecycle.

Skill by Dev-Toolbelt

IndexedMIT★ 7
Write a review

Install

Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.

npx agentmarket install skill/dev-toolbelt-api-versioning

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

API versioning — compatibility rules and deprecation lifecycle.

Use cases: backend

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this skill can do and what it asks for, from its SKILL.md and code. Checked Oct 25, 2026.

Tools
No tools found
Secrets
None asked for
Install scripts
None found

Network hosts it talks to 1

  • codeload.github.com · found in install command

Files it touches

  • ~/.claude/skills/api-versioning

What's inside

Skill name
api-versioning
Description
API versioning — compatibility rules and deprecation lifecycle.
License
MIT
Instructions
90 lines in SKILL.md · view on GitHub

Files (1)

  • SKILL.md

SKILL.md (first lines)

# API Versioning

## When to Load
Load when designing a new API, planning a breaking change, or reviewing a PR that modifies public API contracts.

## Versioning Strategies

| Strategy | Example | Pros | Cons |
|----------|---------|------|------|
| **URL path** | `/v1/users`, `/v2/users` | Simple; explicit; cacheable | URL pollution; hard to version individual resources |
| **Query param** | `/users?version=2` | No URL change | Easy to ignore; pollutes query strings |
| **Header** | `Accept-Version: 2` | Clean URL; HTTP-idiomatic | Less discoverable; harder to test in browser |
| **Content negotiation** | `Accept: application/vnd.api+json; version=2` | Most REST-correct | Complex; vendor MIME types are opaque |

**Recommended default**: URL path for public APIs (simplest, most debuggable). Header versioning for internal APIs where clients are controlled.

## Backwards-Compatible vs Breaking Changes

### Safe (backwards-compatible)
- Add new optional field to request/response
- Add new endpoint
- Add new enum value at the end (caution: if clients enumerate all values)
- Loosen validation (accept more input)

### Breaking
- Remove or rename a field
- Change field type (string → integer)
- Change required/optional inverse (make optional field required)
- Change HTTP method or status code
- Tighten validation (reject previously-accepted input)
- Change pagination behaviour

**Rule**: if an existing client would break, it is a breaking change → new version required.

## Deprecation Lifecycle

1. **Announce**: publish deprecation notice in docs and via `Deprecation` and `Sunset` response headers
2. **Grace period**: minimum 6 months for external APIs; 3 months for internal
3. **Monitor**: track usage of deprecated endpoints (`/v1/*`) via logs
4. **Remove**: only after usage drops to zero or grace period ends

Response headers:
```
Deprecation: Sat, 01 Jun 2025 00:00:00 GMT
Sunset: Mon, 01 Dec 2025 00:00:00 GMT
Link: <https://api.example.com/v2/users>; rel="successor-version"
```

## Version Support Window

| Client type | Minimum support | Reason |
|-------------|-----------------|--------|
| Web browser | 3 months | Can force update |
| Mobile app | 12-18 months | App store review delay; user adoption |
| Third-party integrations | 12 months | Enterprise change management cycles |
| Internal services | 3 months | Can coordinate deploys |

For mobile clients, track app version in `User-Agent` or a custom header to identify when old clients are gone.

## SDK vs API Versioning

- SDK version != API version; a v3 SDK may still call v1 or v2 API endpoints
- Pin SDK-to-API mapping in release notes
- SDK should surface the `Deprecation` header as a warning log to developers

## API Gateway Routing

Route by version at the gateway level:
```
/v1/* → service:v1
/v2/* → service:v2
```
This enables blue/green deployment of API versions without code changes in consumers.

## OpenAPI Evolution

- Maintain separate `openapi-v1.yaml` and `openapi-v2.yaml`
- Use `x-deprecated: true` extension to mark deprecated operations
- Generate a diff with `oasdiff` or `openapi-diff` in CI to detect breaking changes automatically

## Decision Checklist

- [ ] Is the change backwards-compatible? (if yes, no new version needed)
- [ ] If breaking: has a new version path been defined?
- [ ] Are `Deprecation` and `Sunset` headers added to the old version?
- [ ] Is the support window appropriate for the client type?
- [ ] Is the new version documented in OpenAPI?
- [ ] Is the gateway routing configured for both versions?

From Dev-Toolbelt/dev-team-agents, MIT.

More from Dev-Toolbelt/dev-team-agents

Signals

Stars
7
Forks
0
Open issues
0
Last commit (this folder)
Oct 18, 2026 (11 days ago)

From GitHub (fetched Oct 24, 2026).

Details

License
MIT
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

More from Dev-Toolbelt

Cite this page

api-versioning skill. Agent Mart. https://agentmart.dev/skills/dev-toolbelt-api-versioning (last updated 2026-10-24)