zircote/swagger-php
swagger-php generates OpenAPI 3.0/3.1/3.2 documentation from your PHP 8.2+ code using attributes (preferred) or optional Doctrine annotations. Use it via CLI or programmatically, with helpful error reporting and a full documentation site.
It's quite common that endpoints have some overlap in either their request or response data.
To keep things DRY (Don't Repeat Yourself) the specification allows reusing components using $ref's
#[OA\Schema(
schema: 'product_id',
type: 'integer',
format: 'int64',
description: 'The unique identifier of a product in our catalog',
)]
/**
* [@OA](https://github.com/OA)\Schema(
* schema="product_id",
* type="integer",
* format="int64",
* description="The unique identifier of a product in our catalog"
* )
*/
Results in:
openapi: 3.0.0
components:
schemas:
product_id:
description: "The unique identifier of a product in our catalog"
type: integer
format: int64
This doesn't do anything by itself, but now you can reference this fragment by its path in the document tree #/components/schemas/product_id
#[OA\Property(ref: "#/components/schemas/product_id")]
public $id;
/**
* [@OA](https://github.com/OA)\Property(ref="#/components/schemas/product_id")
*/
public $id;
::: info Examples There are more use cases on how to use refs in the using-refs example. :::
How can I help you explore Laravel packages today?