Installation
Requirements
- PHP ^8.2
- An OpenAPI 3.0.x spec (YAML or JSON)
- Laravel, Slim, or Mezzio
5-step integration
Step 1 — Install
composer require fissible/accordStep 2 — Get a spec
Scaffold one from your existing routes using forge:
php artisan accord:generateOr drop an existing spec at resources/openapi/v1.yaml.
Step 3 — Register the middleware
Laravel 11+ (using bootstrap/app.php):
->withMiddleware(function (Middleware $middleware) { $middleware->appendToGroup('api', [ \Fissible\Accord\Drivers\Laravel\Middleware\ValidateApiContract::class, ]);})Scoped route group:
Route::middleware([ 'api', \Fissible\Accord\Drivers\Laravel\Middleware\ValidateApiContract::class,])->group(function () { // your API routes});Step 4 — Set failure mode for adoption
Start with log mode so violations appear in your logs without breaking requests:
ACCORD_FAILURE_MODE=logOnce your spec covers all your routes, switch to exception:
ACCORD_FAILURE_MODE=exceptionStep 5 — Add drift detection to CI
composer require --dev fissible/driftIn your GitHub Actions workflow:
- name: Check API contract (drift) run: php artisan accord:validate
- name: Check implementation coverage run: php artisan drift:coveragePublish config
php artisan vendor:publish --tag=accord-configThis creates config/accord.php with all available options. See the Reference page for the full config reference.
Slim driver
$app->add(new \Fissible\Accord\Drivers\Slim\ValidateApiContract($specSource));Mezzio driver
$pipeline->pipe(\Fissible\Accord\Drivers\Mezzio\ValidateApiContract::class);