Back to browse
GitHub Repository

Intelligent API version manager for Laravel — one codebase, infinite API versions via bidirectional transformers.

12 starsPHP

API versioning for Laravel – one codebase, support old versions forever

by jay123anta·Mar 8, 2026·1 point·1 comment

AI Analysis

●●SolidBig BrainSolve My ProblemNiche Gem

Stripe's versioning pattern for Laravel—transformers, not duplicate controllers.

Strengths
  • Bidirectional transformation (upgradeRequest/downgradeResponse) genuinely eliminates controller duplication.
  • Multiple version detection strategies (URL, header, query, Accept) and Sunset/Deprecation headers ship out of box.
  • 110 tests with 224 assertions—verification of a non-trivial middleware chain.
Weaknesses
  • Niche problem: only applies to teams already supporting 3+ API versions long-term.
  • No evidence of production usage or adoption; pattern is proven (Stripe), approach unproven at scale in Laravel.
Target Audience

Laravel developers maintaining multiple API versions in production

Similar To

API Platform (Symfony) · Laravel API versioning middleware packages

Post Description

Stripe supports API versions going back to 2014 from a single codebase. Each version is handled by transformation layers, not duplicate controllers.

I built this package to bring that pattern to Laravel.

Each old version gets a transformer class with two methods:

- upgradeRequest() — converts old payload to current format before your controller runs - downgradeResponse() — converts response back to old format before it leaves

The middleware chains them automatically across versions. Your controllers never change.

Supports 4 version detection strategies: URL prefix, header, query param, Accept header. Ships with deprecation headers (Sunset, Deprecation), artisan commands for changelog and audit.

composer require jayanta/laravel-api-versionist

Similar Projects