mcpField
A
api-versioning

api-versioning

github.com/rrezartprebrezaDevelopment33852 installsUpdated today
Repository

About api-versioning

api-versioning is a Boot 3 and Framework 6 skill for choosing and maintaining explicit API versioning strategies. It covers routing, documentation, deprecation, and contract testing while keeping version-specific logic at the web boundary.

Key features

  1. 01URL, header, or media-type strategies
  2. 02Versioned controller and DTO guidance
  3. 03OpenAPI version documentation
  4. 04Centralized deprecation headers
  5. 05Contract testing guidance

Use cases

  1. 01Design a versioned public API
  2. 02Retire an API version consistently
  3. 03Keep multiple API contracts tested

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/rrezartprebreza/spring-boot-skills --skill api-versioning

After installing, type/api-versioningin Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

agents/
openai.yaml
examples/
bad-versioned-controller.java
good-versioned-controller.java

Details

From the project README

API Versioning (Boot 3 / Framework 6)

Boot 3 does not provide Boot 4's built-in mapping version attribute. Choose one explicit strategy and keep it consistent: URL segments, a request header, or media-type parameters.

Prefer a visible, testable contract

For a public API, /api/v1/orders and /api/v2/orders are usually the clearest choice. If URLs must remain stable, resolve a request header at the web boundary and route to versioned handlers. Do not hide version selection in business services or duplicate it across filters and controllers.

@RestController
@RequestMapping("/api/v1/orders")
class OrderV1Controller {
    @GetMapping("/{id}")
    OrderV1 get(@PathVariable UUID id) { ... }
}

Document supported versions in OpenAPI, define a removal policy, and return a consistent error for unsupported versions. Add Deprecation, Sunset, and Link headers through a response advice or filter when retiring a version.

Migration boundary

Keep version-specific DTOs and controllers thin. Map both versions to the same application use case, and do not copy domain logic into each version. Add contract tests for every supported version and verify content negotiation if using media types.

Gotchas

  • Agent uses Boot 4's version attribute on Boot 3 - it is not available; choose an explicit routing strategy.
  • Agent mixes URL, header, and media-type resolution - select one source of truth.
  • Agent puts version branching in services - keep compatibility at the web adapter boundary.
  • Agent changes response fields without versioning - preserve old contracts or publish a new version.
  • Agent invents deprecation headers per controller - centralize them in advice or a filter.
  • Agent documents only the latest version - keep OpenAPI and contract tests for every supported version.

Comments

Markdown supported