Skip to content

Laragen: Automatic OpenAPI Generation

Laragen provides zero-config OpenAPI generation for Laravel applications. It analyzes your codebase and generates comprehensive API documentation with minimal setup.

What Laragen Does

Laragen inspects your Laravel application and auto-generates OpenAPI schemas by analyzing:

  • Route discovery — finds API routes by URI patterns (no annotations needed)
  • Path parameters — infers types from route constraints (whereUuid, whereNumber, etc.)
  • Request body schemas — from FormRequest validation rules, Spatie Data objects, or docblock annotations
  • Response schemas — from JsonResource, ResourceCollection, Spatie Data, Fractal Transformer, Eloquent Model, or docblock annotations
  • Authentication — detects auth middleware and generates SecurityScheme components

Supported Auto-Detection

Request Body

SourceDescription
@bodyParam annotationsExplicit parameter definitions in docblocks
@queryParam annotationsExplicit query parameter definitions in docblocks
Spatie Data objectsType-hinted Data parameters in controller methods
FormRequest rulesLaravel validation rules converted to JSON Schema

Response Schema

SourceDescription
@response annotationsExplicit JSON response examples in docblocks
ResourceCollectionDetects ResourceCollection return types
JsonResourceAnalyzes toArray() method AST
Spatie DataAnalyzes Data class constructor parameters
Fractal TransformerAnalyzes transform() method AST
Eloquent ModelInfers schema from $casts, $hidden, $appends

Detection strategies are tried in the order listed above. The first match wins.

Configuration

Publish the config file:

bash
php artisan vendor:publish --tag=laragen-config

config/laragen.php

php
return [
    'enabled' => env('LARAGEN_ENABLED', true),
    'docs_path' => '.laragen/openapi.json',

    'route_discovery' => [
        'mode' => 'attribute', // 'auto' | 'attribute' | 'combined'
        'include' => ['api/*'],
        'exclude' => ['api/admin/*', 'api/telescope/*', 'api/horizon/*'],
    ],

    'autogen' => [
        'request_body' => true,
        'example' => true,
        'security' => true,
        'path_parameters' => true,
        'response' => true,
    ],

    'strategies' => [
        'request' => [
            'prepend' => [], // Custom strategies before built-in
            'append' => [],  // Custom strategies after built-in
        ],
        'response' => [
            'prepend' => [],
            'append' => [],
        ],
    ],
];

Route Discovery Modes

ModeBehavior
attributeOnly routes with #[Collection] attribute
autoRoutes matching include patterns (excluding exclude patterns)
combinedBoth attributed and pattern-matched routes

Usage

Generate the OpenAPI spec:

bash
php artisan laragen:generate

The generated spec is available at the configured docs_path and served at /laragen/docs.

Released under the MIT License.