# Spec Attribute Reference

This page is generated automatically from the `swagger-php` sources.

For improvements head over to [GitHub](https://github.com/zircote/swagger-php) and create a PR ;)


Spec attributes are typed PHP attributes in the `OpenApi\Spec` namespace — the foundation of the
spec-attributes pipeline (`--mode spec` or `--mode hybrid`).

They are data containers with no serialization logic; augmenters fill in derived values. Relationships are
declared via `merge()` (what sibling an attribute composes into on the same reflector) and `contained()`
(what parent types can absorb this attribute from inner reflector levels). The [Assembler](/reference/architecture)
resolves nesting, and [Augmenters](/reference/augmenters.md) enrich the collected specification before compilation.

Typed subclasses (e.g. `Operation\Get`, `Parameter\Path`, `Flow\AuthorizationCode`) pre-fill common
fields to reduce boilerplate — the base class can always be used directly.

## Spec Attributes

### [Attachable](https://github.com/zircote/swagger-php/tree/master/src/Spec/Attachable.php)

Base class for custom attributes.

By default not allowed to contain other attributes, but can be inline nested into any other attribute
(including itself).

### [Components](https://github.com/zircote/swagger-php/tree/master/src/Spec/Components.php)

Container for reusable component definitions.

Place on a class to declare standalone components that go into the components section
of the OpenAPI document. The Components attribute itself is not emitted — its children
are promoted to their respective Specification buckets.

The primary use case is for DTOs that are NOT roots and therefore cannot be declared
at class level on their own: Parameter, Header, Link, and Example. Other types
(Schema, PathItem, SecurityScheme, named Response/RequestBody) are already roots and
can be declared directly on a class without needing a Components wrapper.

  #[Components]
  class SharedComponents {
      #[Parameter(parameter: 'tenant_id', name: 'tenant_id', in: 'path', schema: new Schema(type: 'string'))]
      public string $tenantId;

      #[Header(header: 'X-Rate-Limit', schema: new Schema(type: 'integer'))]
      public string $rateLimit;

      #[Example(example: 'dog', summary: 'A dog', value: ['name' => 'Fido'])]
      public string $dogExample;
  }

#### Nested elements
---
<a href="#security-scheme">Security\Scheme</a>, <a href="#security-scheme-apikey">Security\Scheme\ApiKey</a>, <a href="#security-scheme-http">Security\Scheme\Http</a>, <a href="#security-scheme-mutualtls">Security\Scheme\MutualTls</a>, <a href="#security-scheme-oauth2">Security\Scheme\OAuth2</a>, <a href="#security-scheme-openidconnect">Security\Scheme\OpenIdConnect</a>

#### Parameters
---
<dl>
  <dt><strong>schemas</strong> : <span style="font-family: monospace;">list&lt;Schema&gt;</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>parameters</strong> : <span style="font-family: monospace;">list&lt;Parameter&gt;</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>responses</strong> : <span style="font-family: monospace;">list&lt;Response&gt;</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>requestBodies</strong> : <span style="font-family: monospace;">list&lt;RequestBody&gt;</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>headers</strong> : <span style="font-family: monospace;">list&lt;Header&gt;</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>securitySchemes</strong> : <span style="font-family: monospace;">list&lt;Security\Scheme&gt;</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>links</strong> : <span style="font-family: monospace;">list&lt;Link&gt;</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>examples</strong> : <span style="font-family: monospace;">list&lt;Example&gt;</span></dt>
  <dd><p>No details available.</p></dd>
</dl>

### [Contact](https://github.com/zircote/swagger-php/tree/master/src/Spec/Contact.php)

Contact information for the exposed API.

#### Allowed in
---
<a href="#info">Info</a>

#### Parameters
---
<dl>
  <dt><strong>name</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>The identifying name of the contact person/organization</p></dd>
  <dt><strong>url</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>A URL pointing to the contact information</p></dd>
  <dt><strong>email</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>The email address of the contact person/organization</p></dd>
</dl>

#### Reference
---
- [Contact Object](https://spec.openapis.org/oas/v3.1.1.html#contact-object) ↗

### [Discriminator](https://github.com/zircote/swagger-php/tree/master/src/Spec/Discriminator.php)

Aids in serialization, deserialization, and validation when request bodies or responses
can be one of several schemas (used with oneOf, anyOf, allOf).

#### Allowed in
---
<a href="#schema">Schema</a>

#### Parameters
---
<dl>
  <dt><strong>propertyName</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>The name of the property in the payload that distinguishes types</p></dd>
  <dt><strong>mapping</strong> : <span style="font-family: monospace;">array&lt;string,string&gt;|null</span></dt>
  <dd><p>Maps payload values to schema names or references</p></dd>
</dl>

#### Reference
---
- [Discriminator Object](https://spec.openapis.org/oas/v3.1.1.html#discriminator-object) ↗

### [Encoding](https://github.com/zircote/swagger-php/tree/master/src/Spec/Encoding.php)

Describes the encoding for a single property in a media type.

#### Allowed in
---
<a href="#mediatype">MediaType</a>

#### Parameters
---
<dl>
  <dt><strong>encoding</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>The property name this encoding applies to</p></dd>
  <dt><strong>contentType</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>The Content-Type for encoding a specific property</p></dd>
  <dt><strong>headers</strong> : <span style="font-family: monospace;">list&lt;Header&gt;|null</span></dt>
  <dd><p>Additional headers for multipart media types</p></dd>
  <dt><strong>style</strong> : <span style="font-family: monospace;">string|ParameterStyle|null</span></dt>
  <dd><p>How the property value is serialized</p></dd>
  <dt><strong>explode</strong> : <span style="font-family: monospace;">bool|null</span></dt>
  <dd><p>Whether arrays/objects generate separate parameters</p></dd>
  <dt><strong>allowReserved</strong> : <span style="font-family: monospace;">bool|null</span></dt>
  <dd><p>Whether reserved characters are allowed without encoding</p></dd>
</dl>

#### Reference
---
- [Encoding Object](https://spec.openapis.org/oas/v3.1.1.html#encoding-object) ↗

### [Example](https://github.com/zircote/swagger-php/tree/master/src/Spec/Example.php)

Describes an example value for a parameter, media type, or schema.

#### Allowed in
---
<a href="#mediatype">MediaType</a>, <a href="#parameter">Parameter</a>, <a href="#header">Header</a>

#### Parameters
---
<dl>
  <dt><strong>example</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>Reusable example identifier (component key)</p></dd>
  <dt><strong>summary</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>Short description of the example</p></dd>
  <dt><strong>description</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>Long description of the example (CommonMark syntax)</p></dd>
  <dt><strong>value</strong> : <span style="font-family: monospace;">mixed</span></dt>
  <dd><p>Embedded literal example value</p></dd>
  <dt><strong>externalValue</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>A URI pointing to the literal example</p></dd>
  <dt><strong>ref</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>A JSON Reference to a reusable example</p></dd>
</dl>

#### Reference
---
- [Example Object](https://spec.openapis.org/oas/v3.1.1.html#example-object) ↗

### [ExternalDocumentation](https://github.com/zircote/swagger-php/tree/master/src/Spec/ExternalDocumentation.php)

Allows referencing an external resource for extended documentation.

#### Allowed in
---
<a href="#tag">Tag</a>

#### Parameters
---
<dl>
  <dt><strong>url</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>The URL for the target documentation</p></dd>
  <dt><strong>description</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>A description of the target documentation (CommonMark syntax)</p></dd>
</dl>

#### Reference
---
- [External Documentation Object](https://spec.openapis.org/oas/v3.1.1.html#external-documentation-object) ↗

### [Flow](https://github.com/zircote/swagger-php/tree/master/src/Spec/Flow.php)

Configuration details for a supported OAuth2 flow.

Typed subtypes pre-fill the flow type:
- `OA\Flow\Implicit` - implicit grant (authorizationUrl required)
- `OA\Flow\Password` - resource owner password credentials (tokenUrl required)
- `OA\Flow\ClientCredentials` - client credentials grant (tokenUrl required)
- `OA\Flow\AuthorizationCode` - authorization code grant (authorizationUrl + tokenUrl required)

  #[OA\Security\Scheme\OAuth2(securityScheme: 'oauth2', flows: [
      new OA\Flow\AuthorizationCode(
          authorizationUrl: 'https://example.com/oauth/authorize',
          tokenUrl: 'https://example.com/oauth/token',
          scopes: ['read:pets' => 'Read pets', 'write:pets' => 'Write pets'],
      ),
  ])]

Produces:
  components:
    securitySchemes:
      oauth2:
        type: oauth2
        flows:
          authorizationCode:
            authorizationUrl: https://example.com/oauth/authorize
            tokenUrl: https://example.com/oauth/token
            scopes:
              read:pets: Read pets
              write:pets: Write pets

#### Allowed in
---
<a href="#security-scheme">Security\Scheme</a>

#### Parameters
---
<dl>
  <dt><strong>flow</strong> : <span style="font-family: monospace;">string|FlowType|null</span></dt>
  <dd><p>The OAuth2 flow type (implicit, password, clientCredentials, authorizationCode)</p></dd>
  <dt><strong>authorizationUrl</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>The authorization URL for this flow</p></dd>
  <dt><strong>tokenUrl</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>The token URL for this flow</p></dd>
  <dt><strong>refreshUrl</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>The URL for obtaining refresh tokens</p></dd>
  <dt><strong>scopes</strong> : <span style="font-family: monospace;">array&lt;string,string&gt;|null</span></dt>
  <dd><p>The available scopes for the OAuth2 security scheme</p></dd>
</dl>

#### Reference
---
- [OAuth Flow Object](https://spec.openapis.org/oas/v3.1.1.html#oauth-flow-object) ↗
- [OAuth Flows Object](https://spec.openapis.org/oas/v3.1.1.html#oauth-flows-object) ↗

### [Flow\AuthorizationCode](https://github.com/zircote/swagger-php/tree/master/src/Spec/Flow/AuthorizationCode.php)

Configuration for the OAuth2 Authorization Code flow.

#### Allowed in
---
<a href="#security-scheme">Security\Scheme</a>

#### Parameters
---
<dl>
  <dt><strong>authorizationUrl</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>tokenUrl</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>refreshUrl</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>scopes</strong> : <span style="font-family: monospace;">array&lt;string,string&gt;|null</span></dt>
  <dd><p>No details available.</p></dd>
</dl>

#### Reference
---
- [OAuth Flow Object](https://spec.openapis.org/oas/v3.1.1.html#oauth-flow-object) ↗

### [Flow\ClientCredentials](https://github.com/zircote/swagger-php/tree/master/src/Spec/Flow/ClientCredentials.php)

Configuration for the OAuth2 Client Credentials flow.

#### Allowed in
---
<a href="#security-scheme">Security\Scheme</a>

#### Parameters
---
<dl>
  <dt><strong>tokenUrl</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>refreshUrl</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>scopes</strong> : <span style="font-family: monospace;">array&lt;string,string&gt;|null</span></dt>
  <dd><p>No details available.</p></dd>
</dl>

#### Reference
---
- [OAuth Flow Object](https://spec.openapis.org/oas/v3.1.1.html#oauth-flow-object) ↗

### [Flow\Implicit](https://github.com/zircote/swagger-php/tree/master/src/Spec/Flow/Implicit.php)

Configuration for the OAuth2 Implicit flow.

#### Allowed in
---
<a href="#security-scheme">Security\Scheme</a>

#### Parameters
---
<dl>
  <dt><strong>authorizationUrl</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>refreshUrl</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>scopes</strong> : <span style="font-family: monospace;">array&lt;string,string&gt;|null</span></dt>
  <dd><p>No details available.</p></dd>
</dl>

#### Reference
---
- [OAuth Flow Object](https://spec.openapis.org/oas/v3.1.1.html#oauth-flow-object) ↗

### [Flow\Password](https://github.com/zircote/swagger-php/tree/master/src/Spec/Flow/Password.php)

Configuration for the OAuth2 Resource Owner Password flow.

#### Allowed in
---
<a href="#security-scheme">Security\Scheme</a>

#### Parameters
---
<dl>
  <dt><strong>tokenUrl</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>refreshUrl</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>scopes</strong> : <span style="font-family: monospace;">array&lt;string,string&gt;|null</span></dt>
  <dd><p>No details available.</p></dd>
</dl>

#### Reference
---
- [OAuth Flow Object](https://spec.openapis.org/oas/v3.1.1.html#oauth-flow-object) ↗

### [Header](https://github.com/zircote/swagger-php/tree/master/src/Spec/Header.php)

Describes a single HTTP header.

#### Allowed in
---
<a href="#response">Response</a>

#### Nested elements
---
<a href="#example">Example</a>, <a href="#mediatype">MediaType</a>, <a href="#mediatype-json">MediaType\Json</a>, <a href="#mediatype-xml">MediaType\Xml</a>

#### Parameters
---
<dl>
  <dt><strong>header</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>The header name (component key)</p></dd>
  <dt><strong>description</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>A brief description of the header (CommonMark syntax)</p></dd>
  <dt><strong>required</strong> : <span style="font-family: monospace;">bool|null</span></dt>
  <dd><p>Whether the header is mandatory</p></dd>
  <dt><strong>deprecated</strong> : <span style="font-family: monospace;">bool|null</span></dt>
  <dd><p>Whether the header is deprecated</p></dd>
  <dt><strong>ref</strong> : <span style="font-family: monospace;">string|Schema\Ref|null</span></dt>
  <dd><p>A JSON Reference to a reusable header</p></dd>
  <dt><strong>style</strong> : <span style="font-family: monospace;">string|ParameterStyle|null</span></dt>
  <dd><p>How the header value is serialized</p></dd>
  <dt><strong>explode</strong> : <span style="font-family: monospace;">bool|null</span></dt>
  <dd><p>Whether arrays/objects generate separate parameters</p></dd>
  <dt><strong>schema</strong> : <span style="font-family: monospace;">Schema|null</span></dt>
  <dd><p>The schema defining the type for the header</p></dd>
  <dt><strong>example</strong> : <span style="font-family: monospace;">mixed</span></dt>
  <dd><p>Example of the header's value</p></dd>
  <dt><strong>examples</strong> : <span style="font-family: monospace;">list&lt;Example&gt;|null</span></dt>
  <dd><p>Examples of the header's value</p></dd>
  <dt><strong>content</strong> : <span style="font-family: monospace;">MediaType|list&lt;MediaType&gt;|null</span></dt>
  <dd><p>Content-type based header serialization</p></dd>
</dl>

#### Reference
---
- [Header Object](https://spec.openapis.org/oas/v3.1.1.html#header-object) ↗

### [Info](https://github.com/zircote/swagger-php/tree/master/src/Spec/Info.php)

Metadata about the API.

#### Nested elements
---
<a href="#contact">Contact</a>, <a href="#license">License</a>

#### Parameters
---
<dl>
  <dt><strong>title</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>The title of the API</p></dd>
  <dt><strong>description</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>A description of the API (CommonMark syntax)</p></dd>
  <dt><strong>termsOfService</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>A URL to the Terms of Service for the API</p></dd>
  <dt><strong>version</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>The version of the API document</p></dd>
  <dt><strong>contact</strong> : <span style="font-family: monospace;">Contact|null</span></dt>
  <dd><p>Contact information for the API</p></dd>
  <dt><strong>license</strong> : <span style="font-family: monospace;">License|null</span></dt>
  <dd><p>License information for the API</p></dd>
  <dt><strong>summary</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>A short summary of the API</p></dd>
</dl>

#### Reference
---
- [Info Object](https://spec.openapis.org/oas/v3.1.1.html#info-object) ↗

### [License](https://github.com/zircote/swagger-php/tree/master/src/Spec/License.php)

License information for the exposed API.

#### Allowed in
---
<a href="#info">Info</a>

#### Parameters
---
<dl>
  <dt><strong>name</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>The license name used for the API</p></dd>
  <dt><strong>identifier</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>An SPDX license expression for the API</p></dd>
  <dt><strong>url</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>A URL to the license used for the API</p></dd>
</dl>

#### Reference
---
- [License Object](https://spec.openapis.org/oas/v3.1.1.html#license-object) ↗

### [Link](https://github.com/zircote/swagger-php/tree/master/src/Spec/Link.php)

Describes a possible design-time link for a response.

#### Allowed in
---
<a href="#response">Response</a>

#### Parameters
---
<dl>
  <dt><strong>link</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>Reusable link identifier (component key)</p></dd>
  <dt><strong>operationRef</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>A relative or absolute URI reference to a linked operation</p></dd>
  <dt><strong>operationId</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>The name of an existing operation (mutually exclusive with operationRef)</p></dd>
  <dt><strong>parameters</strong> : <span style="font-family: monospace;">array&lt;string,mixed&gt;|null</span></dt>
  <dd><p>Values to pass to the linked operation's parameters</p></dd>
  <dt><strong>requestBody</strong> : <span style="font-family: monospace;">mixed</span></dt>
  <dd><p>A value to use as the request body for the linked operation</p></dd>
  <dt><strong>description</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>A description of the link (CommonMark syntax)</p></dd>
  <dt><strong>ref</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>A JSON Reference to a reusable link</p></dd>
  <dt><strong>server</strong> : <span style="font-family: monospace;">Server|null</span></dt>
  <dd><p>A server object to be used by the target operation</p></dd>
</dl>

#### Reference
---
- [Link Object](https://spec.openapis.org/oas/v3.1.1.html#link-object) ↗

### [MediaType](https://github.com/zircote/swagger-php/tree/master/src/Spec/MediaType.php)

Describes the content payload for a specific media type.

#### Allowed in
---
<a href="#response">Response</a>, <a href="#requestbody">RequestBody</a>, <a href="#parameter">Parameter</a>, <a href="#header">Header</a>

#### Nested elements
---
<a href="#encoding">Encoding</a>, <a href="#example">Example</a>

#### Parameters
---
<dl>
  <dt><strong>mediaType</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>The media type identifier (e.g. 'application/json')</p></dd>
  <dt><strong>schema</strong> : <span style="font-family: monospace;">Schema|null</span></dt>
  <dd><p>The schema defining the content</p></dd>
  <dt><strong>example</strong> : <span style="font-family: monospace;">mixed</span></dt>
  <dd><p>Example of the media type content</p></dd>
  <dt><strong>examples</strong> : <span style="font-family: monospace;">list&lt;Example&gt;|null</span></dt>
  <dd><p>Examples of the media type content</p></dd>
  <dt><strong>encoding</strong> : <span style="font-family: monospace;">list&lt;Encoding&gt;|array&lt;string,Encoding&gt;|null</span></dt>
  <dd><p>Encoding information for specific properties</p></dd>
</dl>

#### Reference
---
- [Media Type Object](https://spec.openapis.org/oas/v3.1.1.html#media-type-object) ↗

### [MediaType\Json](https://github.com/zircote/swagger-php/tree/master/src/Spec/MediaType/Json.php)

Describes the content payload for `application/json`.

A shortcut version of `OA\MediaType` with some of the more common `OA\Schema` properties added.
* `mediaType` is set to `application/json` by default.
* `ref`, `type`, `items`, `properties` and `required` may be used and will be expanded into a nested `OA\Schema` automatically.
* If `schema` is explicitly set, the custom `OA\Schema` properties will be ignored.

Allows to shorten this:

  #[OA\Response(response: 200, content: [
      new OA\MediaType(mediaType: 'application/json', schema: new OA\Schema(type: 'array', items: new OA\Schema(ref: Pet::class))),
  ])]

to this:

  #[OA\Response(response: 200, content: [new OA\MediaType\Json(type: 'array', items: new OA\Schema(ref: Pet::class))])]

The `Shortcuts` augmenter expands the schema properties into a nested `OA\Schema` automatically.

#### Allowed in
---
<a href="#response">Response</a>, <a href="#requestbody">RequestBody</a>, <a href="#parameter">Parameter</a>, <a href="#header">Header</a>

#### Parameters
---
<dl>
  <dt><strong>ref</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>A JSON Reference to a reusable schema</p></dd>
  <dt><strong>type</strong> : <span style="font-family: monospace;">string|list&lt;string&gt;|null</span></dt>
  <dd><p>The value type(s) (string, number, integer, boolean, array, object, null)</p></dd>
  <dt><strong>items</strong> : <span style="font-family: monospace;">Schema|string|null</span></dt>
  <dd><p>Schema for array items</p></dd>
  <dt><strong>properties</strong> : <span style="font-family: monospace;">list&lt;Property&gt;|null</span></dt>
  <dd><p>Object property definitions</p></dd>
  <dt><strong>required</strong> : <span style="font-family: monospace;">list&lt;string&gt;|null</span></dt>
  <dd><p>List of required property names</p></dd>
  <dt><strong>schema</strong> : <span style="font-family: monospace;">Schema|null</span></dt>
  <dd><p>The schema defining the content</p></dd>
  <dt><strong>example</strong> : <span style="font-family: monospace;">mixed</span></dt>
  <dd><p>Example of the media type content</p></dd>
  <dt><strong>examples</strong> : <span style="font-family: monospace;">list&lt;OA\Example&gt;|null</span></dt>
  <dd><p>Examples of the media type content</p></dd>
  <dt><strong>encoding</strong> : <span style="font-family: monospace;">list&lt;OA\Encoding&gt;|array&lt;string,OA\Encoding&gt;|null</span></dt>
  <dd><p>Encoding information for specific properties</p></dd>
</dl>

#### Reference
---
- [Media Type Object](https://spec.openapis.org/oas/v3.1.1.html#media-type-object) ↗

### [MediaType\Xml](https://github.com/zircote/swagger-php/tree/master/src/Spec/MediaType/Xml.php)

Describes the content payload for `application/xml`.

A shortcut version of `OA\MediaType` with some of the more common `OA\Schema` properties added.
* `mediaType` is set to `application/xml` by default.
* `ref`, `type`, `items`, `properties` and `required` may be used and will be expanded into a nested `OA\Schema` automatically.
* If `schema` is explicitly set, the custom `OA\Schema` properties will be ignored.

Allows to shorten this:

  #[OA\Response(response: 200, content: [
      new OA\MediaType(mediaType: 'application/xml', schema: new OA\Schema(type: 'array', items: new OA\Schema(ref: Pet::class))),
  ])]

to this:

  #[OA\Response(response: 200, content: [new OA\MediaType\Xml(type: 'array', items: new OA\Schema(ref: Pet::class))])]

The `Shortcuts` augmenter expands the schema properties into a nested `OA\Schema` automatically.

#### Allowed in
---
<a href="#response">Response</a>, <a href="#requestbody">RequestBody</a>, <a href="#parameter">Parameter</a>, <a href="#header">Header</a>

#### Parameters
---
<dl>
  <dt><strong>ref</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>A JSON Reference to a reusable schema</p></dd>
  <dt><strong>type</strong> : <span style="font-family: monospace;">string|list&lt;string&gt;|null</span></dt>
  <dd><p>The value type(s) (string, number, integer, boolean, array, object, null)</p></dd>
  <dt><strong>items</strong> : <span style="font-family: monospace;">Schema|string|null</span></dt>
  <dd><p>Schema for array items</p></dd>
  <dt><strong>properties</strong> : <span style="font-family: monospace;">list&lt;Property&gt;|null</span></dt>
  <dd><p>Object property definitions</p></dd>
  <dt><strong>required</strong> : <span style="font-family: monospace;">list&lt;string&gt;|null</span></dt>
  <dd><p>List of required property names</p></dd>
  <dt><strong>schema</strong> : <span style="font-family: monospace;">Schema|null</span></dt>
  <dd><p>The schema defining the content</p></dd>
  <dt><strong>example</strong> : <span style="font-family: monospace;">mixed</span></dt>
  <dd><p>Example of the media type content</p></dd>
  <dt><strong>examples</strong> : <span style="font-family: monospace;">list&lt;OA\Example&gt;|null</span></dt>
  <dd><p>Examples of the media type content</p></dd>
  <dt><strong>encoding</strong> : <span style="font-family: monospace;">list&lt;OA\Encoding&gt;|array&lt;string,OA\Encoding&gt;|null</span></dt>
  <dd><p>Encoding information for specific properties</p></dd>
</dl>

#### Reference
---
- [Media Type Object](https://spec.openapis.org/oas/v3.1.1.html#media-type-object) ↗

### [OpenApi](https://github.com/zircote/swagger-php/tree/master/src/Spec/OpenApi.php)

The root element of an OpenAPI definition.

#### Nested elements
---
<a href="#security-requirement">Security\Requirement</a>

#### Parameters
---
<dl>
  <dt><strong>version</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>The OpenAPI specification version (e.g. '3.1.0')</p></dd>
  <dt><strong>security</strong> : <span style="font-family: monospace;">list&lt;Security\Requirement&gt;|null</span></dt>
  <dd><p>Default security requirements for the API</p></dd>
</dl>

#### Reference
---
- [OpenAPI Object](https://spec.openapis.org/oas/v3.1.1.html#openapi-object) ↗

### [Operation](https://github.com/zircote/swagger-php/tree/master/src/Spec/Operation.php)

Describes a single API operation on a path.

Typed subclasses pre-fill the HTTP method — use them instead of specifying method manually:

  #[OA\Operation\Get(path: '/pets/{id}', responses: [
      new OA\Response(response: 200, description: 'A pet', content: [
          new OA\MediaType(schema: new OA\Schema(ref: Pet::class)),
      ]),
  ])]
  public function show(int $id) {}

Produces:
  paths:
    /pets/{id}:
      get:
        operationId: show
        responses:
          '200':
            description: A pet
            content:
              application/json:
                schema:
                  $ref: '#/components/schemas/Pet'

For webhooks, use `webhook` instead of `path`:

  #[OA\Operation\Post(webhook: 'petAdopted', responses: [...])]

#### Nested elements
---
<a href="#parameter">Parameter</a>, <a href="#parameter-cookie">Parameter\Cookie</a>, <a href="#parameter-header">Parameter\Header</a>, <a href="#parameter-path">Parameter\Path</a>, <a href="#parameter-query">Parameter\Query</a>, <a href="#requestbody">RequestBody</a>, <a href="#response">Response</a>, <a href="#security-requirement">Security\Requirement</a>, <a href="#server">Server</a>

#### Parameters
---
<dl>
  <dt><strong>path</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>The URL path for the operation</p></dd>
  <dt><strong>webhook</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>The webhook name (mutually exclusive with path)</p></dd>
  <dt><strong>method</strong> : <span style="font-family: monospace;">string|HttpMethod|null</span></dt>
  <dd><p>The HTTP method (get, post, put, delete, etc.)</p></dd>
  <dt><strong>operationId</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>Unique identifier for the operation</p></dd>
  <dt><strong>summary</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>A short summary of what the operation does</p></dd>
  <dt><strong>description</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>A verbose explanation of the operation (CommonMark syntax)</p></dd>
  <dt><strong>tags</strong> : <span style="font-family: monospace;">list&lt;string&gt;|null</span></dt>
  <dd><p>Tags for API documentation grouping</p></dd>
  <dt><strong>parameters</strong> : <span style="font-family: monospace;">list&lt;Parameter&gt;|null</span></dt>
  <dd><p>Parameters applicable to this operation</p></dd>
  <dt><strong>requestBody</strong> : <span style="font-family: monospace;">RequestBody|null</span></dt>
  <dd><p>The request body applicable to this operation</p></dd>
  <dt><strong>responses</strong> : <span style="font-family: monospace;">list&lt;Response&gt;|null</span></dt>
  <dd><p>The list of possible responses</p></dd>
  <dt><strong>callbacks</strong> : <span style="font-family: monospace;">array&lt;string,mixed&gt;|null</span></dt>
  <dd><p>Possible out-of-band callbacks related to the operation</p></dd>
  <dt><strong>deprecated</strong> : <span style="font-family: monospace;">bool|null</span></dt>
  <dd><p>Whether the operation is deprecated</p></dd>
  <dt><strong>security</strong> : <span style="font-family: monospace;">list&lt;Security\Requirement&gt;|null</span></dt>
  <dd><p>Security mechanisms that can be used for this operation</p></dd>
  <dt><strong>servers</strong> : <span style="font-family: monospace;">list&lt;Server&gt;|null</span></dt>
  <dd><p>Alternative servers for this operation</p></dd>
  <dt><strong>externalDocs</strong> : <span style="font-family: monospace;">ExternalDocumentation|null</span></dt>
  <dd><p>Additional external documentation</p></dd>
</dl>

#### Reference
---
- [Operation Object](https://spec.openapis.org/oas/v3.1.1.html#operation-object) ↗
- [Webhooks](https://spec.openapis.org/oas/v3.1.1.html#fixed-fields) ↗

### [Operation\Delete](https://github.com/zircote/swagger-php/tree/master/src/Spec/Operation/Delete.php)

Shorthand for an HTTP DELETE operation.

#### Parameters
---
<dl>
  <dt><strong>path</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>webhook</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>operationId</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>summary</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>description</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>tags</strong> : <span style="font-family: monospace;">list&lt;string&gt;|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>parameters</strong> : <span style="font-family: monospace;">list&lt;OA\Parameter&gt;|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>requestBody</strong> : <span style="font-family: monospace;">OpenApi\Spec\RequestBody|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>responses</strong> : <span style="font-family: monospace;">list&lt;OA\Response&gt;|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>callbacks</strong> : <span style="font-family: monospace;">array&lt;string,mixed&gt;|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>deprecated</strong> : <span style="font-family: monospace;">bool|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>security</strong> : <span style="font-family: monospace;">list&lt;OA\Security\Requirement&gt;|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>servers</strong> : <span style="font-family: monospace;">list&lt;OA\Server&gt;|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>externalDocs</strong> : <span style="font-family: monospace;">OpenApi\Spec\ExternalDocumentation|null</span></dt>
  <dd><p>No details available.</p></dd>
</dl>

#### Reference
---
- [Operation Object](https://spec.openapis.org/oas/v3.1.1.html#operation-object) ↗

### [Operation\Get](https://github.com/zircote/swagger-php/tree/master/src/Spec/Operation/Get.php)

Shorthand for an HTTP GET operation.

#### Parameters
---
<dl>
  <dt><strong>path</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>webhook</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>operationId</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>summary</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>description</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>tags</strong> : <span style="font-family: monospace;">list&lt;string&gt;|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>parameters</strong> : <span style="font-family: monospace;">list&lt;Parameter&gt;|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>responses</strong> : <span style="font-family: monospace;">list&lt;Response&gt;|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>callbacks</strong> : <span style="font-family: monospace;">array&lt;string,mixed&gt;|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>deprecated</strong> : <span style="font-family: monospace;">bool|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>security</strong> : <span style="font-family: monospace;">list&lt;OA\Security\Requirement&gt;|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>servers</strong> : <span style="font-family: monospace;">list&lt;Server&gt;|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>externalDocs</strong> : <span style="font-family: monospace;">OpenApi\Spec\ExternalDocumentation|null</span></dt>
  <dd><p>No details available.</p></dd>
</dl>

#### Reference
---
- [Operation Object](https://spec.openapis.org/oas/v3.1.1.html#operation-object) ↗

### [Operation\Head](https://github.com/zircote/swagger-php/tree/master/src/Spec/Operation/Head.php)

Shorthand for an HTTP HEAD operation.

#### Parameters
---
<dl>
  <dt><strong>path</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>webhook</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>operationId</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>summary</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>description</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>tags</strong> : <span style="font-family: monospace;">list&lt;string&gt;|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>parameters</strong> : <span style="font-family: monospace;">list&lt;OA\Parameter&gt;|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>responses</strong> : <span style="font-family: monospace;">list&lt;OA\Response&gt;|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>callbacks</strong> : <span style="font-family: monospace;">array&lt;string,mixed&gt;|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>deprecated</strong> : <span style="font-family: monospace;">bool|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>security</strong> : <span style="font-family: monospace;">list&lt;OA\Security\Requirement&gt;|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>servers</strong> : <span style="font-family: monospace;">list&lt;OA\Server&gt;|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>externalDocs</strong> : <span style="font-family: monospace;">OpenApi\Spec\ExternalDocumentation|null</span></dt>
  <dd><p>No details available.</p></dd>
</dl>

#### Reference
---
- [Operation Object](https://spec.openapis.org/oas/v3.1.1.html#operation-object) ↗

### [Operation\Options](https://github.com/zircote/swagger-php/tree/master/src/Spec/Operation/Options.php)

Shorthand for an HTTP OPTIONS operation.

#### Parameters
---
<dl>
  <dt><strong>path</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>webhook</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>operationId</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>summary</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>description</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>tags</strong> : <span style="font-family: monospace;">list&lt;string&gt;|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>parameters</strong> : <span style="font-family: monospace;">list&lt;OA\Parameter&gt;|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>responses</strong> : <span style="font-family: monospace;">list&lt;OA\Response&gt;|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>callbacks</strong> : <span style="font-family: monospace;">array&lt;string,mixed&gt;|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>deprecated</strong> : <span style="font-family: monospace;">bool|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>security</strong> : <span style="font-family: monospace;">list&lt;OA\Security\Requirement&gt;|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>servers</strong> : <span style="font-family: monospace;">list&lt;OA\Server&gt;|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>externalDocs</strong> : <span style="font-family: monospace;">OpenApi\Spec\ExternalDocumentation|null</span></dt>
  <dd><p>No details available.</p></dd>
</dl>

#### Reference
---
- [Operation Object](https://spec.openapis.org/oas/v3.1.1.html#operation-object) ↗

### [Operation\Patch](https://github.com/zircote/swagger-php/tree/master/src/Spec/Operation/Patch.php)

Shorthand for an HTTP PATCH operation.

#### Parameters
---
<dl>
  <dt><strong>path</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>webhook</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>operationId</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>summary</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>description</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>tags</strong> : <span style="font-family: monospace;">list&lt;string&gt;|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>parameters</strong> : <span style="font-family: monospace;">list&lt;OA\Parameter&gt;|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>requestBody</strong> : <span style="font-family: monospace;">OpenApi\Spec\RequestBody|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>responses</strong> : <span style="font-family: monospace;">list&lt;OA\Response&gt;|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>callbacks</strong> : <span style="font-family: monospace;">array&lt;string,mixed&gt;|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>deprecated</strong> : <span style="font-family: monospace;">bool|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>security</strong> : <span style="font-family: monospace;">list&lt;OA\Security\Requirement&gt;|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>servers</strong> : <span style="font-family: monospace;">list&lt;OA\Server&gt;|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>externalDocs</strong> : <span style="font-family: monospace;">OpenApi\Spec\ExternalDocumentation|null</span></dt>
  <dd><p>No details available.</p></dd>
</dl>

#### Reference
---
- [Operation Object](https://spec.openapis.org/oas/v3.1.1.html#operation-object) ↗

### [Operation\Post](https://github.com/zircote/swagger-php/tree/master/src/Spec/Operation/Post.php)

Shorthand for an HTTP POST operation.

#### Parameters
---
<dl>
  <dt><strong>path</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>webhook</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>operationId</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>summary</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>description</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>tags</strong> : <span style="font-family: monospace;">list&lt;string&gt;|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>parameters</strong> : <span style="font-family: monospace;">list&lt;OA\Parameter&gt;|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>requestBody</strong> : <span style="font-family: monospace;">OpenApi\Spec\RequestBody|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>responses</strong> : <span style="font-family: monospace;">list&lt;OA\Response&gt;|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>callbacks</strong> : <span style="font-family: monospace;">array&lt;string,mixed&gt;|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>deprecated</strong> : <span style="font-family: monospace;">bool|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>security</strong> : <span style="font-family: monospace;">list&lt;OA\Security\Requirement&gt;|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>servers</strong> : <span style="font-family: monospace;">list&lt;OA\Server&gt;|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>externalDocs</strong> : <span style="font-family: monospace;">OpenApi\Spec\ExternalDocumentation|null</span></dt>
  <dd><p>No details available.</p></dd>
</dl>

#### Reference
---
- [Operation Object](https://spec.openapis.org/oas/v3.1.1.html#operation-object) ↗

### [Operation\Put](https://github.com/zircote/swagger-php/tree/master/src/Spec/Operation/Put.php)

Shorthand for an HTTP PUT operation.

#### Parameters
---
<dl>
  <dt><strong>path</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>webhook</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>operationId</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>summary</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>description</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>tags</strong> : <span style="font-family: monospace;">list&lt;string&gt;|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>parameters</strong> : <span style="font-family: monospace;">list&lt;OA\Parameter&gt;|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>requestBody</strong> : <span style="font-family: monospace;">OpenApi\Spec\RequestBody|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>responses</strong> : <span style="font-family: monospace;">list&lt;OA\Response&gt;|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>callbacks</strong> : <span style="font-family: monospace;">array&lt;string,mixed&gt;|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>deprecated</strong> : <span style="font-family: monospace;">bool|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>security</strong> : <span style="font-family: monospace;">list&lt;OA\Security\Requirement&gt;|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>servers</strong> : <span style="font-family: monospace;">list&lt;OA\Server&gt;|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>externalDocs</strong> : <span style="font-family: monospace;">OpenApi\Spec\ExternalDocumentation|null</span></dt>
  <dd><p>No details available.</p></dd>
</dl>

#### Reference
---
- [Operation Object](https://spec.openapis.org/oas/v3.1.1.html#operation-object) ↗

### [Operation\Trace](https://github.com/zircote/swagger-php/tree/master/src/Spec/Operation/Trace.php)

Shorthand for an HTTP TRACE operation.

#### Parameters
---
<dl>
  <dt><strong>path</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>webhook</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>operationId</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>summary</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>description</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>tags</strong> : <span style="font-family: monospace;">list&lt;string&gt;|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>parameters</strong> : <span style="font-family: monospace;">list&lt;OA\Parameter&gt;|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>responses</strong> : <span style="font-family: monospace;">list&lt;OA\Response&gt;|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>callbacks</strong> : <span style="font-family: monospace;">array&lt;string,mixed&gt;|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>deprecated</strong> : <span style="font-family: monospace;">bool|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>security</strong> : <span style="font-family: monospace;">list&lt;OA\Security\Requirement&gt;|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>servers</strong> : <span style="font-family: monospace;">list&lt;OA\Server&gt;|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>externalDocs</strong> : <span style="font-family: monospace;">OpenApi\Spec\ExternalDocumentation|null</span></dt>
  <dd><p>No details available.</p></dd>
</dl>

#### Reference
---
- [Operation Object](https://spec.openapis.org/oas/v3.1.1.html#operation-object) ↗

### [Parameter](https://github.com/zircote/swagger-php/tree/master/src/Spec/Parameter.php)

Describes a single operation parameter.

Typed subtypes pre-fill `in` (and `required` for path):
- `OA\Parameter\Path` - path parameters (in: path, required: true)
- `OA\Parameter\Query` - query string parameters (in: query)
- `OA\Parameter\Header` - header parameters (in: header)
- `OA\Parameter\Cookie` - cookie parameters (in: cookie)

Inline on an operation:

  #[OA\Operation\Get(path: '/pets', parameters: [
      new OA\Parameter\Query(name: 'status', schema: new OA\Schema(type: 'string', enum: ['active', 'sold'])),
  ])]

Or as a reusable component (set `parameter` for the component key):

  #[OA\Parameter\Path(parameter: 'petId', name: 'id', schema: new OA\Schema(type: 'integer'))]

Produces:
  components:
    parameters:
      petId:
        name: id
        in: path
        required: true
        schema:
          type: integer

#### Allowed in
---
<a href="#operation">Operation</a>, <a href="#pathitem">PathItem</a>

#### Nested elements
---
<a href="#example">Example</a>, <a href="#mediatype">MediaType</a>, <a href="#mediatype-json">MediaType\Json</a>, <a href="#mediatype-xml">MediaType\Xml</a>

#### Parameters
---
<dl>
  <dt><strong>parameter</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>Reusable parameter identifier (component key)</p></dd>
  <dt><strong>name</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>The name of the parameter</p></dd>
  <dt><strong>in</strong> : <span style="font-family: monospace;">string|ParameterIn|null</span></dt>
  <dd><p>The location of the parameter (query, header, path, cookie)</p></dd>
  <dt><strong>description</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>A brief description of the parameter (CommonMark syntax)</p></dd>
  <dt><strong>required</strong> : <span style="font-family: monospace;">bool|null</span></dt>
  <dd><p>Whether the parameter is mandatory</p></dd>
  <dt><strong>deprecated</strong> : <span style="font-family: monospace;">bool|null</span></dt>
  <dd><p>Whether the parameter is deprecated</p></dd>
  <dt><strong>allowEmptyValue</strong> : <span style="font-family: monospace;">bool|null</span></dt>
  <dd><p>Whether empty-valued parameters are allowed</p></dd>
  <dt><strong>ref</strong> : <span style="font-family: monospace;">string|Schema\Ref|null</span></dt>
  <dd><p>A JSON Reference to a reusable parameter</p></dd>
  <dt><strong>style</strong> : <span style="font-family: monospace;">string|ParameterStyle|null</span></dt>
  <dd><p>How the parameter value is serialized</p></dd>
  <dt><strong>explode</strong> : <span style="font-family: monospace;">bool|null</span></dt>
  <dd><p>Whether arrays/objects generate separate parameters</p></dd>
  <dt><strong>allowReserved</strong> : <span style="font-family: monospace;">bool|null</span></dt>
  <dd><p>Whether reserved characters are allowed without encoding</p></dd>
  <dt><strong>schema</strong> : <span style="font-family: monospace;">Schema|null</span></dt>
  <dd><p>The schema defining the type for the parameter</p></dd>
  <dt><strong>example</strong> : <span style="font-family: monospace;">mixed</span></dt>
  <dd><p>Example of the parameter's value</p></dd>
  <dt><strong>examples</strong> : <span style="font-family: monospace;">list&lt;Example&gt;|null</span></dt>
  <dd><p>Examples of the parameter's value</p></dd>
  <dt><strong>content</strong> : <span style="font-family: monospace;">MediaType|list&lt;MediaType&gt;|null</span></dt>
  <dd><p>Content-type based parameter serialization</p></dd>
</dl>

#### Reference
---
- [Parameter Object](https://spec.openapis.org/oas/v3.1.1.html#parameter-object) ↗

### [Parameter\Cookie](https://github.com/zircote/swagger-php/tree/master/src/Spec/Parameter/Cookie.php)

A parameter passed via an HTTP cookie.

#### Allowed in
---
<a href="#operation">Operation</a>, <a href="#pathitem">PathItem</a>

#### Parameters
---
<dl>
  <dt><strong>parameter</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>name</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>description</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>required</strong> : <span style="font-family: monospace;">bool|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>deprecated</strong> : <span style="font-family: monospace;">bool|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>ref</strong> : <span style="font-family: monospace;">OpenApi\Spec\Schema\Ref|string|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>explode</strong> : <span style="font-family: monospace;">bool|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>schema</strong> : <span style="font-family: monospace;">OpenApi\Spec\Schema|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>example</strong> : <span style="font-family: monospace;">mixed|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>examples</strong> : <span style="font-family: monospace;">list&lt;OA\Example&gt;|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>content</strong> : <span style="font-family: monospace;">OA\MediaType|list&lt;OA\MediaType&gt;|null</span></dt>
  <dd><p>No details available.</p></dd>
</dl>

#### Reference
---
- [Parameter Object](https://spec.openapis.org/oas/v3.1.1.html#parameter-object) ↗

### [Parameter\Header](https://github.com/zircote/swagger-php/tree/master/src/Spec/Parameter/Header.php)

A parameter passed via an HTTP header.

#### Allowed in
---
<a href="#operation">Operation</a>, <a href="#pathitem">PathItem</a>

#### Parameters
---
<dl>
  <dt><strong>parameter</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>name</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>description</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>required</strong> : <span style="font-family: monospace;">bool|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>deprecated</strong> : <span style="font-family: monospace;">bool|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>ref</strong> : <span style="font-family: monospace;">OpenApi\Spec\Schema\Ref|string|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>explode</strong> : <span style="font-family: monospace;">bool|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>schema</strong> : <span style="font-family: monospace;">OpenApi\Spec\Schema|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>example</strong> : <span style="font-family: monospace;">mixed|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>examples</strong> : <span style="font-family: monospace;">list&lt;OA\Example&gt;|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>content</strong> : <span style="font-family: monospace;">OA\MediaType|list&lt;OA\MediaType&gt;|null</span></dt>
  <dd><p>No details available.</p></dd>
</dl>

#### Reference
---
- [Parameter Object](https://spec.openapis.org/oas/v3.1.1.html#parameter-object) ↗

### [Parameter\Path](https://github.com/zircote/swagger-php/tree/master/src/Spec/Parameter/Path.php)

A parameter passed via the URL path (always required).

#### Allowed in
---
<a href="#operation">Operation</a>, <a href="#pathitem">PathItem</a>

#### Parameters
---
<dl>
  <dt><strong>parameter</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>name</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>description</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>required</strong> : <span style="font-family: monospace;">bool|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>deprecated</strong> : <span style="font-family: monospace;">bool|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>ref</strong> : <span style="font-family: monospace;">OpenApi\Spec\Schema\Ref|string|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>style</strong> : <span style="font-family: monospace;">OpenApi\Spec\ParameterStyle|string|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>explode</strong> : <span style="font-family: monospace;">bool|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>schema</strong> : <span style="font-family: monospace;">OpenApi\Spec\Schema|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>example</strong> : <span style="font-family: monospace;">mixed|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>examples</strong> : <span style="font-family: monospace;">list&lt;OA\Example&gt;|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>content</strong> : <span style="font-family: monospace;">OA\MediaType|list&lt;OA\MediaType&gt;|null</span></dt>
  <dd><p>No details available.</p></dd>
</dl>

#### Reference
---
- [Parameter Object](https://spec.openapis.org/oas/v3.1.1.html#parameter-object) ↗

### [Parameter\Query](https://github.com/zircote/swagger-php/tree/master/src/Spec/Parameter/Query.php)

A parameter passed via the URL query string.

#### Allowed in
---
<a href="#operation">Operation</a>, <a href="#pathitem">PathItem</a>

#### Parameters
---
<dl>
  <dt><strong>parameter</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>name</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>description</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>required</strong> : <span style="font-family: monospace;">bool|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>deprecated</strong> : <span style="font-family: monospace;">bool|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>allowEmptyValue</strong> : <span style="font-family: monospace;">bool|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>ref</strong> : <span style="font-family: monospace;">OpenApi\Spec\Schema\Ref|string|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>style</strong> : <span style="font-family: monospace;">OpenApi\Spec\ParameterStyle|string|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>explode</strong> : <span style="font-family: monospace;">bool|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>allowReserved</strong> : <span style="font-family: monospace;">bool|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>schema</strong> : <span style="font-family: monospace;">OpenApi\Spec\Schema|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>example</strong> : <span style="font-family: monospace;">mixed|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>examples</strong> : <span style="font-family: monospace;">list&lt;OA\Example&gt;|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>content</strong> : <span style="font-family: monospace;">OA\MediaType|list&lt;OA\MediaType&gt;|null</span></dt>
  <dd><p>No details available.</p></dd>
</dl>

#### Reference
---
- [Parameter Object](https://spec.openapis.org/oas/v3.1.1.html#parameter-object) ↗

### [PathItem](https://github.com/zircote/swagger-php/tree/master/src/Spec/PathItem.php)

Describes shared metadata for all operations under a path.

Place on a controller class — the path is inferred from its operations.
Parameters, summary, description and servers are emitted at path level in the
OpenAPI output. Prefix, tags, security and responses are controller-level features
that compose via class hierarchy and apply to all contained operations.

Shared path-level properties (parameters, summary, description, servers per OpenAPI spec):

  #[PathItem(parameters: [new Parameter\Path(name: 'id', schema: new Schema(type: 'integer'))])]
  class ProductController {
      #[Operation\Get(path: '/products/{id}')]
      public function get() {}
  }

The path in the output is inferred from the operations — no need to declare it
on PathItem, avoiding duplication.

Prefix composition with inherited metadata:

  #[PathItem(prefix: '/api/v1')]
  class BaseController {}

  #[PathItem(prefix: '/users', tags: ['Users'], security: [new Security\Requirement(scheme: 'bearerAuth')])]
  #[Response(response: 401, description: 'Unauthorized')]
  #[Response(response: 500, description: 'Server error')]
  class UserController extends BaseController {
      #[Operation\Get(path: '/list')]       // resolved: /api/v1/users/list, tags: ['Users']
      public function list() {}

      #[Operation\Get(path: '/{id}')]       // resolved: /api/v1/users/{id}, tags: ['Users']
      public function get() {}
  }

Prefixes compose by walking the class hierarchy — each ancestor PathItem contributes
its prefix segment. All collection properties merge additively: tags, security,
responses, and parameters accumulate from the full ancestor chain. Deduplication
is by value (tags), by scheme (security), by status code (responses), and by
name+in (parameters).

#### Nested elements
---
<a href="#parameter">Parameter</a>, <a href="#parameter-cookie">Parameter\Cookie</a>, <a href="#parameter-header">Parameter\Header</a>, <a href="#parameter-path">Parameter\Path</a>, <a href="#parameter-query">Parameter\Query</a>, <a href="#response">Response</a>, <a href="#security-requirement">Security\Requirement</a>, <a href="#server">Server</a>

#### Parameters
---
<dl>
  <dt><strong>ref</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>A JSON Reference to a reusable path item</p></dd>
  <dt><strong>prefix</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>Path prefix — composable via class hierarchy</p></dd>
  <dt><strong>summary</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>An optional summary, intended to apply to all operations in this path</p></dd>
  <dt><strong>description</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>An optional description, intended to apply to all operations in this path</p></dd>
  <dt><strong>parameters</strong> : <span style="font-family: monospace;">list&lt;Parameter&gt;|null</span></dt>
  <dd><p>Parameters applicable to all operations under this path</p></dd>
  <dt><strong>servers</strong> : <span style="font-family: monospace;">list&lt;Server&gt;|null</span></dt>
  <dd><p>Alternative servers for all operations under this path</p></dd>
  <dt><strong>tags</strong> : <span style="font-family: monospace;">list&lt;string&gt;|null</span></dt>
  <dd><p>Tags to clone to contained operations</p></dd>
  <dt><strong>security</strong> : <span style="font-family: monospace;">list&lt;Security\Requirement&gt;|null</span></dt>
  <dd><p>Security requirements to clone to contained operations</p></dd>
  <dt><strong>responses</strong> : <span style="font-family: monospace;">list&lt;Response&gt;|null</span></dt>
  <dd><p>Shared responses to clone to contained operations</p></dd>
</dl>

#### Reference
---
- [Path Item Object](https://spec.openapis.org/oas/v3.1.1.html#path-item-object) ↗

### [Property](https://github.com/zircote/swagger-php/tree/master/src/Spec/Property.php)

Defines a single property within a Schema object.

The name comes from the property, parameter or constant the attribute sits on. A method
supplies none, so a getter needs `property:` explicitly; without it the property is
reported as missing one and omitted.

#### Allowed in
---
<a href="#schema">Schema</a>

#### Parameters
---
<dl>
  <dt><strong>property</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>The property name</p></dd>
  <dt><strong>schema</strong> : <span style="font-family: monospace;">Schema|null</span></dt>
  <dd><p>The schema defining the property type and constraints</p></dd>
</dl>

#### Reference
---
- [Schema Object](https://spec.openapis.org/oas/v3.1.1.html#schema-object) ↗

### [Property\Encoded](https://github.com/zircote/swagger-php/tree/master/src/Spec/Property/Encoded.php)

Shortcut for a property that carries its own encoding definition.

Instead of declaring `OA\Encoding` separately on the `OA\MediaType`, this attribute
bundles property and encoding together. The `MediaTypes` augmenter promotes the nested
encoding to the parent MediaType automatically.

#### Allowed in
---
<a href="#schema">Schema</a>

#### Parameters
---
<dl>
  <dt><strong>property</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>The property name</p></dd>
  <dt><strong>schema</strong> : <span style="font-family: monospace;">OA\Schema|null</span></dt>
  <dd><p>The schema defining the property type and constraints</p></dd>
  <dt><strong>encoding</strong> : <span style="font-family: monospace;">OpenApi\Spec\Encoding|null</span></dt>
  <dd><p>No details available.</p></dd>
</dl>

#### Reference
---
- [Encoding Object](https://spec.openapis.org/oas/v3.1.1.html#encoding-object) ↗

### [RequestBody](https://github.com/zircote/swagger-php/tree/master/src/Spec/RequestBody.php)

Describes a single request body.

#### Allowed in
---
<a href="#operation">Operation</a>

#### Nested elements
---
<a href="#mediatype">MediaType</a>, <a href="#mediatype-json">MediaType\Json</a>, <a href="#mediatype-xml">MediaType\Xml</a>

#### Parameters
---
<dl>
  <dt><strong>request</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>Reusable request body identifier (component key)</p></dd>
  <dt><strong>description</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>A brief description of the request body (CommonMark syntax)</p></dd>
  <dt><strong>required</strong> : <span style="font-family: monospace;">bool|null</span></dt>
  <dd><p>Whether the request body is required</p></dd>
  <dt><strong>ref</strong> : <span style="font-family: monospace;">string|Schema\Ref|null</span></dt>
  <dd><p>A JSON Reference to a reusable request body</p></dd>
  <dt><strong>content</strong> : <span style="font-family: monospace;">MediaType|list&lt;MediaType&gt;|null</span></dt>
  <dd><p>The content of the request body</p></dd>
</dl>

#### Reference
---
- [Request Body Object](https://spec.openapis.org/oas/v3.1.1.html#request-body-object) ↗

### [Response](https://github.com/zircote/swagger-php/tree/master/src/Spec/Response.php)

Describes a single response from an API operation.

#### Allowed in
---
<a href="#operation">Operation</a>, <a href="#pathitem">PathItem</a>

#### Nested elements
---
<a href="#header">Header</a>, <a href="#link">Link</a>, <a href="#mediatype">MediaType</a>, <a href="#mediatype-json">MediaType\Json</a>, <a href="#mediatype-xml">MediaType\Xml</a>

#### Parameters
---
<dl>
  <dt><strong>response</strong> : <span style="font-family: monospace;">string|int|null</span></dt>
  <dd><p>The HTTP status code or 'default'</p></dd>
  <dt><strong>description</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>A description of the response (CommonMark syntax)</p></dd>
  <dt><strong>ref</strong> : <span style="font-family: monospace;">string|Schema\Ref|null</span></dt>
  <dd><p>A JSON Reference to a reusable response</p></dd>
  <dt><strong>headers</strong> : <span style="font-family: monospace;">list&lt;Header&gt;|null</span></dt>
  <dd><p>Headers sent with the response</p></dd>
  <dt><strong>content</strong> : <span style="font-family: monospace;">MediaType|list&lt;MediaType&gt;|null</span></dt>
  <dd><p>Possible response payloads</p></dd>
  <dt><strong>links</strong> : <span style="font-family: monospace;">list&lt;Link&gt;|null</span></dt>
  <dd><p>Design-time links for the response</p></dd>
</dl>

#### Reference
---
- [Response Object](https://spec.openapis.org/oas/v3.1.1.html#response-object) ↗

### [Schema](https://github.com/zircote/swagger-php/tree/master/src/Spec/Schema.php)

Defines the structure and validation rules for a data type.

On a class — becomes a reusable component schema (name inferred from class):

  #[OA\Schema]
  class Pet {
      #[OA\Property]
      public string $name;
      #[OA\Property]
      public ?int $age;
  }

Produces:
  components:
    schemas:
      Pet:
        type: object
        properties:
          name: { type: string }
          age: { type: integer, nullable: true }

Inline — used within parameters, responses, or other schemas:

  new OA\Schema(type: 'array', items: new OA\Schema(ref: Pet::class))

Only a class supplies a name. On a method or a parameter, pass `schema:` explicitly;
without it the schema has no component key and is reported as missing one.

#### Allowed in
---
<a href="#components">Components</a>, <a href="#property">Property</a>, <a href="#parameter">Parameter</a>, <a href="#header">Header</a>, <a href="#mediatype">MediaType</a>

#### Nested elements
---
<a href="#property">Property</a>, <a href="#property-encoded">Property\Encoded</a>

#### Parameters
---
<dl>
  <dt><strong>schema</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>Reusable schema identifier (component key)</p></dd>
  <dt><strong>title</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>A title for the schema</p></dd>
  <dt><strong>description</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>A description of the schema (CommonMark syntax)</p></dd>
  <dt><strong>ref</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>A JSON Reference to a reusable schema</p></dd>
  <dt><strong>type</strong> : <span style="font-family: monospace;">string|list&lt;string&gt;|null</span></dt>
  <dd><p>The value type(s) (string, number, integer, boolean, array, object, null)</p></dd>
  <dt><strong>format</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>Further refines the type (e.g. int32, int64, float, double, date-time, email)</p></dd>
  <dt><strong>nullable</strong> : <span style="font-family: monospace;">bool|null</span></dt>
  <dd><p>Whether the value can be null (OAS 3.0 only; use type array in 3.1+)</p></dd>
  <dt><strong>minLength</strong> : <span style="font-family: monospace;">int|null</span></dt>
  <dd><p>Minimum string length</p></dd>
  <dt><strong>maxLength</strong> : <span style="font-family: monospace;">int|null</span></dt>
  <dd><p>Maximum string length</p></dd>
  <dt><strong>pattern</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>Regular expression pattern the string must match</p></dd>
  <dt><strong>contentMediaType</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>The media type of string content encoding</p></dd>
  <dt><strong>contentEncoding</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>The encoding used for string content (e.g. base64)</p></dd>
  <dt><strong>contentSchema</strong> : <span style="font-family: monospace;">Schema|null</span></dt>
  <dd><p>Schema for the decoded content described by contentMediaType</p></dd>
  <dt><strong>minimum</strong> : <span style="font-family: monospace;">int|float|null</span></dt>
  <dd><p>Minimum numeric value (inclusive)</p></dd>
  <dt><strong>maximum</strong> : <span style="font-family: monospace;">int|float|null</span></dt>
  <dd><p>Maximum numeric value (inclusive)</p></dd>
  <dt><strong>exclusiveMinimum</strong> : <span style="font-family: monospace;">int|float|bool|null</span></dt>
  <dd><p>Exclusive minimum value</p></dd>
  <dt><strong>exclusiveMaximum</strong> : <span style="font-family: monospace;">int|float|bool|null</span></dt>
  <dd><p>Exclusive maximum value</p></dd>
  <dt><strong>multipleOf</strong> : <span style="font-family: monospace;">int|float|null</span></dt>
  <dd><p>The value must be a multiple of this number</p></dd>
  <dt><strong>items</strong> : <span style="font-family: monospace;">Schema|string|null</span></dt>
  <dd><p>Schema for array items</p></dd>
  <dt><strong>minItems</strong> : <span style="font-family: monospace;">int|null</span></dt>
  <dd><p>Minimum number of array items</p></dd>
  <dt><strong>maxItems</strong> : <span style="font-family: monospace;">int|null</span></dt>
  <dd><p>Maximum number of array items</p></dd>
  <dt><strong>uniqueItems</strong> : <span style="font-family: monospace;">bool|null</span></dt>
  <dd><p>Whether array items must be unique</p></dd>
  <dt><strong>prefixItems</strong> : <span style="font-family: monospace;">list&lt;Schema&gt;|null</span></dt>
  <dd><p>Schemas for positional array items (tuple validation)</p></dd>
  <dt><strong>contains</strong> : <span style="font-family: monospace;">Schema|bool|null</span></dt>
  <dd><p>Schema that at least one array item must match</p></dd>
  <dt><strong>minContains</strong> : <span style="font-family: monospace;">int|null</span></dt>
  <dd><p>Minimum number of items matching contains</p></dd>
  <dt><strong>maxContains</strong> : <span style="font-family: monospace;">int|null</span></dt>
  <dd><p>Maximum number of items matching contains</p></dd>
  <dt><strong>unevaluatedItems</strong> : <span style="font-family: monospace;">Schema|bool|null</span></dt>
  <dd><p>Schema for items not covered by other keywords</p></dd>
  <dt><strong>properties</strong> : <span style="font-family: monospace;">list&lt;Property&gt;|null</span></dt>
  <dd><p>Object property definitions</p></dd>
  <dt><strong>required</strong> : <span style="font-family: monospace;">list&lt;string&gt;|null</span></dt>
  <dd><p>List of required property names</p></dd>
  <dt><strong>additionalProperties</strong> : <span style="font-family: monospace;">Schema|Schema\AdditionalProperties|bool|null</span></dt>
  <dd><p>Schema or boolean for additional properties</p></dd>
  <dt><strong>patternProperties</strong> : <span style="font-family: monospace;">array&lt;string,Schema&gt;|null</span></dt>
  <dd><p>Schemas for properties matching regex patterns</p></dd>
  <dt><strong>minProperties</strong> : <span style="font-family: monospace;">int|null</span></dt>
  <dd><p>Minimum number of properties</p></dd>
  <dt><strong>maxProperties</strong> : <span style="font-family: monospace;">int|null</span></dt>
  <dd><p>Maximum number of properties</p></dd>
  <dt><strong>unevaluatedProperties</strong> : <span style="font-family: monospace;">Schema|bool|null</span></dt>
  <dd><p>Schema for properties not covered by other keywords</p></dd>
  <dt><strong>propertyNames</strong> : <span style="font-family: monospace;">Schema|null</span></dt>
  <dd><p>Schema that property names must validate against</p></dd>
  <dt><strong>dependentRequired</strong> : <span style="font-family: monospace;">array&lt;string,list&lt;string&gt;&gt;|null</span></dt>
  <dd><p>Property-level required dependencies</p></dd>
  <dt><strong>dependentSchemas</strong> : <span style="font-family: monospace;">array&lt;string,Schema&gt;|null</span></dt>
  <dd><p>Property-level schema dependencies</p></dd>
  <dt><strong>allOf</strong> : <span style="font-family: monospace;">list&lt;Schema&gt;|null</span></dt>
  <dd><p>All schemas must match (AND composition)</p></dd>
  <dt><strong>anyOf</strong> : <span style="font-family: monospace;">list&lt;Schema&gt;|null</span></dt>
  <dd><p>At least one schema must match (OR composition)</p></dd>
  <dt><strong>oneOf</strong> : <span style="font-family: monospace;">list&lt;Schema&gt;|null</span></dt>
  <dd><p>Exactly one schema must match (XOR composition)</p></dd>
  <dt><strong>not</strong> : <span style="font-family: monospace;">Schema|null</span></dt>
  <dd><p>The schema must NOT match</p></dd>
  <dt><strong>if</strong> : <span style="font-family: monospace;">Schema|null</span></dt>
  <dd><p>Conditional schema (if-then-else)</p></dd>
  <dt><strong>then</strong> : <span style="font-family: monospace;">Schema|null</span></dt>
  <dd><p>Applied when 'if' succeeds</p></dd>
  <dt><strong>else</strong> : <span style="font-family: monospace;">Schema|null</span></dt>
  <dd><p>Applied when 'if' fails</p></dd>
  <dt><strong>enum</strong> : <span style="font-family: monospace;">list&lt;string|int|float|bool|\UnitEnum|class-string&lt;\UnitEnum&gt;|null&gt;|null</span></dt>
  <dd><p>Allowed values</p></dd>
  <dt><strong>const</strong> : <span style="font-family: monospace;">mixed</span></dt>
  <dd><p>A single allowed value</p></dd>
  <dt><strong>example</strong> : <span style="font-family: monospace;">mixed</span></dt>
  <dd><p>An example value</p></dd>
  <dt><strong>examples</strong> : <span style="font-family: monospace;">list&lt;mixed&gt;|null</span></dt>
  <dd><p>A list of example values</p></dd>
  <dt><strong>deprecated</strong> : <span style="font-family: monospace;">bool|null</span></dt>
  <dd><p>Whether the schema is deprecated</p></dd>
  <dt><strong>readOnly</strong> : <span style="font-family: monospace;">bool|null</span></dt>
  <dd><p>Whether the value is read-only</p></dd>
  <dt><strong>writeOnly</strong> : <span style="font-family: monospace;">bool|null</span></dt>
  <dd><p>Whether the value is write-only</p></dd>
  <dt><strong>default</strong> : <span style="font-family: monospace;">mixed</span></dt>
  <dd><p>The default value</p></dd>
  <dt><strong>discriminator</strong> : <span style="font-family: monospace;">Discriminator|null</span></dt>
  <dd><p>Discriminator for polymorphism</p></dd>
  <dt><strong>externalDocs</strong> : <span style="font-family: monospace;">ExternalDocumentation|null</span></dt>
  <dd><p>Additional external documentation</p></dd>
  <dt><strong>xml</strong> : <span style="font-family: monospace;">Xml|null</span></dt>
  <dd><p>XML representation metadata</p></dd>
</dl>

#### Reference
---
- [Schema Object](https://spec.openapis.org/oas/v3.1.1.html#schema-object) ↗
- [JSON Schema](https://json-schema.org/draft/2020-12/json-schema-validation) ↗

### [Schema\AdditionalProperties](https://github.com/zircote/swagger-php/tree/master/src/Spec/Schema/AdditionalProperties.php)

Typed alias for Schema used as the `additionalProperties` value.

Identical to OA\Schema in functionality — exists for readability when declaring
schemas with constrained additional properties:

    new OA\Schema(
        type: 'object',
        additionalProperties: new OA\Schema\AdditionalProperties(type: 'string'),
    )

#### Allowed in
---
<a href="#components">Components</a>, <a href="#property">Property</a>, <a href="#parameter">Parameter</a>, <a href="#header">Header</a>, <a href="#mediatype">MediaType</a>

#### Parameters
---
<dl>
  <dt><strong>schema</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>Reusable schema identifier (component key)</p></dd>
  <dt><strong>title</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>A title for the schema</p></dd>
  <dt><strong>description</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>A description of the schema (CommonMark syntax)</p></dd>
  <dt><strong>ref</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>A JSON Reference to a reusable schema</p></dd>
  <dt><strong>type</strong> : <span style="font-family: monospace;">string|list&lt;string&gt;|null</span></dt>
  <dd><p>The value type(s) (string, number, integer, boolean, array, object, null)</p></dd>
  <dt><strong>format</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>Further refines the type (e.g. int32, int64, float, double, date-time, email)</p></dd>
  <dt><strong>nullable</strong> : <span style="font-family: monospace;">bool|null</span></dt>
  <dd><p>Whether the value can be null (OAS 3.0 only; use type array in 3.1+)</p></dd>
  <dt><strong>minLength</strong> : <span style="font-family: monospace;">int|null</span></dt>
  <dd><p>Minimum string length</p></dd>
  <dt><strong>maxLength</strong> : <span style="font-family: monospace;">int|null</span></dt>
  <dd><p>Maximum string length</p></dd>
  <dt><strong>pattern</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>Regular expression pattern the string must match</p></dd>
  <dt><strong>contentMediaType</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>The media type of string content encoding</p></dd>
  <dt><strong>contentEncoding</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>The encoding used for string content (e.g. base64)</p></dd>
  <dt><strong>contentSchema</strong> : <span style="font-family: monospace;">Schema|null</span></dt>
  <dd><p>Schema for the decoded content described by contentMediaType</p></dd>
  <dt><strong>minimum</strong> : <span style="font-family: monospace;">int|float|null</span></dt>
  <dd><p>Minimum numeric value (inclusive)</p></dd>
  <dt><strong>maximum</strong> : <span style="font-family: monospace;">int|float|null</span></dt>
  <dd><p>Maximum numeric value (inclusive)</p></dd>
  <dt><strong>exclusiveMinimum</strong> : <span style="font-family: monospace;">int|float|bool|null</span></dt>
  <dd><p>Exclusive minimum value</p></dd>
  <dt><strong>exclusiveMaximum</strong> : <span style="font-family: monospace;">int|float|bool|null</span></dt>
  <dd><p>Exclusive maximum value</p></dd>
  <dt><strong>multipleOf</strong> : <span style="font-family: monospace;">int|float|null</span></dt>
  <dd><p>The value must be a multiple of this number</p></dd>
  <dt><strong>items</strong> : <span style="font-family: monospace;">Schema|string|null</span></dt>
  <dd><p>Schema for array items</p></dd>
  <dt><strong>minItems</strong> : <span style="font-family: monospace;">int|null</span></dt>
  <dd><p>Minimum number of array items</p></dd>
  <dt><strong>maxItems</strong> : <span style="font-family: monospace;">int|null</span></dt>
  <dd><p>Maximum number of array items</p></dd>
  <dt><strong>uniqueItems</strong> : <span style="font-family: monospace;">bool|null</span></dt>
  <dd><p>Whether array items must be unique</p></dd>
  <dt><strong>prefixItems</strong> : <span style="font-family: monospace;">list&lt;Schema&gt;|null</span></dt>
  <dd><p>Schemas for positional array items (tuple validation)</p></dd>
  <dt><strong>contains</strong> : <span style="font-family: monospace;">Schema|bool|null</span></dt>
  <dd><p>Schema that at least one array item must match</p></dd>
  <dt><strong>minContains</strong> : <span style="font-family: monospace;">int|null</span></dt>
  <dd><p>Minimum number of items matching contains</p></dd>
  <dt><strong>maxContains</strong> : <span style="font-family: monospace;">int|null</span></dt>
  <dd><p>Maximum number of items matching contains</p></dd>
  <dt><strong>unevaluatedItems</strong> : <span style="font-family: monospace;">Schema|bool|null</span></dt>
  <dd><p>Schema for items not covered by other keywords</p></dd>
  <dt><strong>properties</strong> : <span style="font-family: monospace;">list&lt;Property&gt;|null</span></dt>
  <dd><p>Object property definitions</p></dd>
  <dt><strong>required</strong> : <span style="font-family: monospace;">list&lt;string&gt;|null</span></dt>
  <dd><p>List of required property names</p></dd>
  <dt><strong>additionalProperties</strong> : <span style="font-family: monospace;">Schema|Schema\AdditionalProperties|bool|null</span></dt>
  <dd><p>Schema or boolean for additional properties</p></dd>
  <dt><strong>patternProperties</strong> : <span style="font-family: monospace;">array&lt;string,Schema&gt;|null</span></dt>
  <dd><p>Schemas for properties matching regex patterns</p></dd>
  <dt><strong>minProperties</strong> : <span style="font-family: monospace;">int|null</span></dt>
  <dd><p>Minimum number of properties</p></dd>
  <dt><strong>maxProperties</strong> : <span style="font-family: monospace;">int|null</span></dt>
  <dd><p>Maximum number of properties</p></dd>
  <dt><strong>unevaluatedProperties</strong> : <span style="font-family: monospace;">Schema|bool|null</span></dt>
  <dd><p>Schema for properties not covered by other keywords</p></dd>
  <dt><strong>propertyNames</strong> : <span style="font-family: monospace;">Schema|null</span></dt>
  <dd><p>Schema that property names must validate against</p></dd>
  <dt><strong>dependentRequired</strong> : <span style="font-family: monospace;">array&lt;string,list&lt;string&gt;&gt;|null</span></dt>
  <dd><p>Property-level required dependencies</p></dd>
  <dt><strong>dependentSchemas</strong> : <span style="font-family: monospace;">array&lt;string,Schema&gt;|null</span></dt>
  <dd><p>Property-level schema dependencies</p></dd>
  <dt><strong>allOf</strong> : <span style="font-family: monospace;">list&lt;Schema&gt;|null</span></dt>
  <dd><p>All schemas must match (AND composition)</p></dd>
  <dt><strong>anyOf</strong> : <span style="font-family: monospace;">list&lt;Schema&gt;|null</span></dt>
  <dd><p>At least one schema must match (OR composition)</p></dd>
  <dt><strong>oneOf</strong> : <span style="font-family: monospace;">list&lt;Schema&gt;|null</span></dt>
  <dd><p>Exactly one schema must match (XOR composition)</p></dd>
  <dt><strong>not</strong> : <span style="font-family: monospace;">Schema|null</span></dt>
  <dd><p>The schema must NOT match</p></dd>
  <dt><strong>if</strong> : <span style="font-family: monospace;">Schema|null</span></dt>
  <dd><p>Conditional schema (if-then-else)</p></dd>
  <dt><strong>then</strong> : <span style="font-family: monospace;">Schema|null</span></dt>
  <dd><p>Applied when 'if' succeeds</p></dd>
  <dt><strong>else</strong> : <span style="font-family: monospace;">Schema|null</span></dt>
  <dd><p>Applied when 'if' fails</p></dd>
  <dt><strong>enum</strong> : <span style="font-family: monospace;">list&lt;string|int|float|bool|\UnitEnum|class-string&lt;\UnitEnum&gt;|null&gt;|null</span></dt>
  <dd><p>Allowed values</p></dd>
  <dt><strong>const</strong> : <span style="font-family: monospace;">mixed</span></dt>
  <dd><p>A single allowed value</p></dd>
  <dt><strong>example</strong> : <span style="font-family: monospace;">mixed</span></dt>
  <dd><p>An example value</p></dd>
  <dt><strong>examples</strong> : <span style="font-family: monospace;">list&lt;mixed&gt;|null</span></dt>
  <dd><p>A list of example values</p></dd>
  <dt><strong>deprecated</strong> : <span style="font-family: monospace;">bool|null</span></dt>
  <dd><p>Whether the schema is deprecated</p></dd>
  <dt><strong>readOnly</strong> : <span style="font-family: monospace;">bool|null</span></dt>
  <dd><p>Whether the value is read-only</p></dd>
  <dt><strong>writeOnly</strong> : <span style="font-family: monospace;">bool|null</span></dt>
  <dd><p>Whether the value is write-only</p></dd>
  <dt><strong>default</strong> : <span style="font-family: monospace;">mixed</span></dt>
  <dd><p>The default value</p></dd>
  <dt><strong>discriminator</strong> : <span style="font-family: monospace;">Discriminator|null</span></dt>
  <dd><p>Discriminator for polymorphism</p></dd>
  <dt><strong>externalDocs</strong> : <span style="font-family: monospace;">ExternalDocumentation|null</span></dt>
  <dd><p>Additional external documentation</p></dd>
  <dt><strong>xml</strong> : <span style="font-family: monospace;">Xml|null</span></dt>
  <dd><p>XML representation metadata</p></dd>
</dl>

### [Schema\Items](https://github.com/zircote/swagger-php/tree/master/src/Spec/Schema/Items.php)

Shortcut for `OA\Schema` with type `array` and `items`.

Allows to shorten this:

  #[OA\Schema]
  class Pet {
      #[OA\Property]
      #[OA\Schema(type: 'array', items: new OA\Schema(ref: MyModel::class))]
      public array $names;
  }

to this:

  #[OA\Schema]
  class Pet {
      #[OA\Schema\Items(ref: MyModel::class)]
      public array $names;
  }

Since Items extends Schema, the implicit `OA\Property` shortcut applies — no explicit
`#[OA\Property]` is needed. The `Shortcuts` augmenter wraps this into
`OA\Schema(type: 'array', items: ...)` automatically.

#### Allowed in
---
<a href="#components">Components</a>, <a href="#property">Property</a>, <a href="#parameter">Parameter</a>, <a href="#header">Header</a>, <a href="#mediatype">MediaType</a>

#### Parameters
---
<dl>
  <dt><strong>schema</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>Reusable schema identifier (component key)</p></dd>
  <dt><strong>title</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>A title for the schema</p></dd>
  <dt><strong>description</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>A description of the schema (CommonMark syntax)</p></dd>
  <dt><strong>ref</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>A JSON Reference to a reusable schema</p></dd>
  <dt><strong>type</strong> : <span style="font-family: monospace;">string|list&lt;string&gt;|null</span></dt>
  <dd><p>The value type(s) (string, number, integer, boolean, array, object, null)</p></dd>
  <dt><strong>format</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>Further refines the type (e.g. int32, int64, float, double, date-time, email)</p></dd>
  <dt><strong>nullable</strong> : <span style="font-family: monospace;">bool|null</span></dt>
  <dd><p>Whether the value can be null (OAS 3.0 only; use type array in 3.1+)</p></dd>
  <dt><strong>minLength</strong> : <span style="font-family: monospace;">int|null</span></dt>
  <dd><p>Minimum string length</p></dd>
  <dt><strong>maxLength</strong> : <span style="font-family: monospace;">int|null</span></dt>
  <dd><p>Maximum string length</p></dd>
  <dt><strong>pattern</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>Regular expression pattern the string must match</p></dd>
  <dt><strong>contentMediaType</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>The media type of string content encoding</p></dd>
  <dt><strong>contentEncoding</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>The encoding used for string content (e.g. base64)</p></dd>
  <dt><strong>contentSchema</strong> : <span style="font-family: monospace;">Schema|null</span></dt>
  <dd><p>Schema for the decoded content described by contentMediaType</p></dd>
  <dt><strong>minimum</strong> : <span style="font-family: monospace;">int|float|null</span></dt>
  <dd><p>Minimum numeric value (inclusive)</p></dd>
  <dt><strong>maximum</strong> : <span style="font-family: monospace;">int|float|null</span></dt>
  <dd><p>Maximum numeric value (inclusive)</p></dd>
  <dt><strong>exclusiveMinimum</strong> : <span style="font-family: monospace;">int|float|bool|null</span></dt>
  <dd><p>Exclusive minimum value</p></dd>
  <dt><strong>exclusiveMaximum</strong> : <span style="font-family: monospace;">int|float|bool|null</span></dt>
  <dd><p>Exclusive maximum value</p></dd>
  <dt><strong>multipleOf</strong> : <span style="font-family: monospace;">int|float|null</span></dt>
  <dd><p>The value must be a multiple of this number</p></dd>
  <dt><strong>items</strong> : <span style="font-family: monospace;">Schema|string|null</span></dt>
  <dd><p>Schema for array items</p></dd>
  <dt><strong>minItems</strong> : <span style="font-family: monospace;">int|null</span></dt>
  <dd><p>Minimum number of array items</p></dd>
  <dt><strong>maxItems</strong> : <span style="font-family: monospace;">int|null</span></dt>
  <dd><p>Maximum number of array items</p></dd>
  <dt><strong>uniqueItems</strong> : <span style="font-family: monospace;">bool|null</span></dt>
  <dd><p>Whether array items must be unique</p></dd>
  <dt><strong>prefixItems</strong> : <span style="font-family: monospace;">list&lt;Schema&gt;|null</span></dt>
  <dd><p>Schemas for positional array items (tuple validation)</p></dd>
  <dt><strong>contains</strong> : <span style="font-family: monospace;">Schema|bool|null</span></dt>
  <dd><p>Schema that at least one array item must match</p></dd>
  <dt><strong>minContains</strong> : <span style="font-family: monospace;">int|null</span></dt>
  <dd><p>Minimum number of items matching contains</p></dd>
  <dt><strong>maxContains</strong> : <span style="font-family: monospace;">int|null</span></dt>
  <dd><p>Maximum number of items matching contains</p></dd>
  <dt><strong>unevaluatedItems</strong> : <span style="font-family: monospace;">Schema|bool|null</span></dt>
  <dd><p>Schema for items not covered by other keywords</p></dd>
  <dt><strong>properties</strong> : <span style="font-family: monospace;">list&lt;Property&gt;|null</span></dt>
  <dd><p>Object property definitions</p></dd>
  <dt><strong>required</strong> : <span style="font-family: monospace;">list&lt;string&gt;|null</span></dt>
  <dd><p>List of required property names</p></dd>
  <dt><strong>additionalProperties</strong> : <span style="font-family: monospace;">Schema|Schema\AdditionalProperties|bool|null</span></dt>
  <dd><p>Schema or boolean for additional properties</p></dd>
  <dt><strong>patternProperties</strong> : <span style="font-family: monospace;">array&lt;string,Schema&gt;|null</span></dt>
  <dd><p>Schemas for properties matching regex patterns</p></dd>
  <dt><strong>minProperties</strong> : <span style="font-family: monospace;">int|null</span></dt>
  <dd><p>Minimum number of properties</p></dd>
  <dt><strong>maxProperties</strong> : <span style="font-family: monospace;">int|null</span></dt>
  <dd><p>Maximum number of properties</p></dd>
  <dt><strong>unevaluatedProperties</strong> : <span style="font-family: monospace;">Schema|bool|null</span></dt>
  <dd><p>Schema for properties not covered by other keywords</p></dd>
  <dt><strong>propertyNames</strong> : <span style="font-family: monospace;">Schema|null</span></dt>
  <dd><p>Schema that property names must validate against</p></dd>
  <dt><strong>dependentRequired</strong> : <span style="font-family: monospace;">array&lt;string,list&lt;string&gt;&gt;|null</span></dt>
  <dd><p>Property-level required dependencies</p></dd>
  <dt><strong>dependentSchemas</strong> : <span style="font-family: monospace;">array&lt;string,Schema&gt;|null</span></dt>
  <dd><p>Property-level schema dependencies</p></dd>
  <dt><strong>allOf</strong> : <span style="font-family: monospace;">list&lt;Schema&gt;|null</span></dt>
  <dd><p>All schemas must match (AND composition)</p></dd>
  <dt><strong>anyOf</strong> : <span style="font-family: monospace;">list&lt;Schema&gt;|null</span></dt>
  <dd><p>At least one schema must match (OR composition)</p></dd>
  <dt><strong>oneOf</strong> : <span style="font-family: monospace;">list&lt;Schema&gt;|null</span></dt>
  <dd><p>Exactly one schema must match (XOR composition)</p></dd>
  <dt><strong>not</strong> : <span style="font-family: monospace;">Schema|null</span></dt>
  <dd><p>The schema must NOT match</p></dd>
  <dt><strong>if</strong> : <span style="font-family: monospace;">Schema|null</span></dt>
  <dd><p>Conditional schema (if-then-else)</p></dd>
  <dt><strong>then</strong> : <span style="font-family: monospace;">Schema|null</span></dt>
  <dd><p>Applied when 'if' succeeds</p></dd>
  <dt><strong>else</strong> : <span style="font-family: monospace;">Schema|null</span></dt>
  <dd><p>Applied when 'if' fails</p></dd>
  <dt><strong>enum</strong> : <span style="font-family: monospace;">list&lt;string|int|float|bool|\UnitEnum|class-string&lt;\UnitEnum&gt;|null&gt;|null</span></dt>
  <dd><p>Allowed values</p></dd>
  <dt><strong>const</strong> : <span style="font-family: monospace;">mixed</span></dt>
  <dd><p>A single allowed value</p></dd>
  <dt><strong>example</strong> : <span style="font-family: monospace;">mixed</span></dt>
  <dd><p>An example value</p></dd>
  <dt><strong>examples</strong> : <span style="font-family: monospace;">list&lt;mixed&gt;|null</span></dt>
  <dd><p>A list of example values</p></dd>
  <dt><strong>deprecated</strong> : <span style="font-family: monospace;">bool|null</span></dt>
  <dd><p>Whether the schema is deprecated</p></dd>
  <dt><strong>readOnly</strong> : <span style="font-family: monospace;">bool|null</span></dt>
  <dd><p>Whether the value is read-only</p></dd>
  <dt><strong>writeOnly</strong> : <span style="font-family: monospace;">bool|null</span></dt>
  <dd><p>Whether the value is write-only</p></dd>
  <dt><strong>default</strong> : <span style="font-family: monospace;">mixed</span></dt>
  <dd><p>The default value</p></dd>
  <dt><strong>discriminator</strong> : <span style="font-family: monospace;">Discriminator|null</span></dt>
  <dd><p>Discriminator for polymorphism</p></dd>
  <dt><strong>externalDocs</strong> : <span style="font-family: monospace;">ExternalDocumentation|null</span></dt>
  <dd><p>Additional external documentation</p></dd>
  <dt><strong>xml</strong> : <span style="font-family: monospace;">Xml|null</span></dt>
  <dd><p>XML representation metadata</p></dd>
</dl>

#### Reference
---
- [Schema Object](https://spec.openapis.org/oas/v3.1.1.html#schema-object) ↗

### [Schema\Ref](https://github.com/zircote/swagger-php/tree/master/src/Spec/Schema/Ref.php)

A reference-only schema — $ref is required, most other Schema properties are unavailable.

In OpenAPI 3.1+, $ref can be combined with title and description to override
the referenced schema's metadata without duplicating the definition.

Usage:
  #[OA\Property(schema: new OA\Schema\Ref(ref: Pet::class))]
  #[OA\Property(schema: new OA\Schema\Ref(ref: '#/components/schemas/Pet', title: 'The pet'))]
  #[OA\Property(schema: new OA\Schema\Ref(ref: Pet::class, description: 'Override desc'))]

If used on a `$ref` directly, only the ref value is used.

#### Allowed in
---
<a href="#components">Components</a>, <a href="#property">Property</a>, <a href="#parameter">Parameter</a>, <a href="#header">Header</a>, <a href="#mediatype">MediaType</a>

#### Parameters
---
<dl>
  <dt><strong>ref</strong> : <span style="font-family: monospace;">string</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>title</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>description</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>No details available.</p></dd>
</dl>

### [Security\Requirement](https://github.com/zircote/swagger-php/tree/master/src/Spec/Security/Requirement.php)

A security requirement declaring which security schemes apply.

Each requirement instance represents one entry in the security array (OR logic).
Multiple schemes within a single requirement represent AND logic.

#### Allowed in
---
<a href="#openapi">OpenApi</a>, <a href="#operation">Operation</a>, <a href="#pathitem">PathItem</a>

#### Parameters
---
<dl>
  <dt><strong>scheme</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>Single scheme name (shorthand for simple requirements)</p></dd>
  <dt><strong>scopes</strong> : <span style="font-family: monospace;">list&lt;string&gt;|null</span></dt>
  <dd><p>Scopes for the single scheme (OAuth2/OpenIdConnect)</p></dd>
  <dt><strong>schemes</strong> : <span style="font-family: monospace;">array&lt;string,list&lt;string&gt;&gt;|null</span></dt>
  <dd><p>Map of scheme names to scopes (for AND logic with multiple schemes)</p></dd>
</dl>

#### Reference
---
- [Security Requirement Object](https://spec.openapis.org/oas/v3.1.1.html#security-requirement-object) ↗

### [Security\Scheme](https://github.com/zircote/swagger-php/tree/master/src/Spec/Security/Scheme.php)

Defines a security scheme that can be used by the operations.

Typed subtypes are available for each security scheme type:
- `OA\Security\Scheme\Http` - HTTP authentication (Basic, Bearer, etc.)
- `OA\Security\Scheme\ApiKey` - API key in header, query, or cookie
- `OA\Security\Scheme\OAuth2` - OAuth2 with one or more flows
- `OA\Security\Scheme\OpenIdConnect` - OpenID Connect discovery
- `OA\Security\Scheme\MutualTls` - Mutual TLS authentication

#### Allowed in
---
<a href="#components">Components</a>

#### Nested elements
---
<a href="#flow">Flow</a>, <a href="#flow-authorizationcode">Flow\AuthorizationCode</a>, <a href="#flow-clientcredentials">Flow\ClientCredentials</a>, <a href="#flow-implicit">Flow\Implicit</a>, <a href="#flow-password">Flow\Password</a>

#### Parameters
---
<dl>
  <dt><strong>securityScheme</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>Reusable security scheme identifier (component key)</p></dd>
  <dt><strong>type</strong> : <span style="font-family: monospace;">string|OA\SchemeType|null</span></dt>
  <dd><p>The type of the security scheme (apiKey, http, mutualTLS, oauth2, openIdConnect)</p></dd>
  <dt><strong>description</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>A description of the security scheme (CommonMark syntax)</p></dd>
  <dt><strong>name</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>The name of the header, query, or cookie parameter (apiKey)</p></dd>
  <dt><strong>in</strong> : <span style="font-family: monospace;">string|OA\SchemeIn|null</span></dt>
  <dd><p>The location of the API key (query, header, cookie)</p></dd>
  <dt><strong>scheme</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>The HTTP authorization scheme (http)</p></dd>
  <dt><strong>bearerFormat</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>A hint about the format of the bearer token (http/bearer)</p></dd>
  <dt><strong>openIdConnectUrl</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>The OpenID Connect URL to discover configuration (openIdConnect)</p></dd>
  <dt><strong>flows</strong> : <span style="font-family: monospace;">list&lt;OA\Flow&gt;|null</span></dt>
  <dd><p>The available OAuth2 flows (oauth2)</p></dd>
  <dt><strong>ref</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>A JSON Reference to a reusable security scheme</p></dd>
</dl>

#### Reference
---
- [Security Scheme Object](https://spec.openapis.org/oas/v3.1.1.html#security-scheme-object) ↗

### [Security\Scheme\ApiKey](https://github.com/zircote/swagger-php/tree/master/src/Spec/Security/Scheme/ApiKey.php)

An API key security scheme (header, query, or cookie).

#### Allowed in
---
<a href="#components">Components</a>

#### Parameters
---
<dl>
  <dt><strong>securityScheme</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>description</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>name</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>in</strong> : <span style="font-family: monospace;">OpenApi\Spec\SchemeIn|string|null</span></dt>
  <dd><p>No details available.</p></dd>
</dl>

#### Reference
---
- [Security Scheme Object](https://spec.openapis.org/oas/v3.1.1.html#security-scheme-object) ↗

### [Security\Scheme\Http](https://github.com/zircote/swagger-php/tree/master/src/Spec/Security/Scheme/Http.php)

An HTTP authentication security scheme (Basic, Bearer, etc.).

#### Allowed in
---
<a href="#components">Components</a>

#### Parameters
---
<dl>
  <dt><strong>securityScheme</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>description</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>scheme</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>bearerFormat</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>No details available.</p></dd>
</dl>

#### Reference
---
- [Security Scheme Object](https://spec.openapis.org/oas/v3.1.1.html#security-scheme-object) ↗

### [Security\Scheme\MutualTls](https://github.com/zircote/swagger-php/tree/master/src/Spec/Security/Scheme/MutualTls.php)

A Mutual TLS security scheme.

#### Allowed in
---
<a href="#components">Components</a>

#### Parameters
---
<dl>
  <dt><strong>securityScheme</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>description</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>No details available.</p></dd>
</dl>

#### Reference
---
- [Security Scheme Object](https://spec.openapis.org/oas/v3.1.1.html#security-scheme-object) ↗

### [Security\Scheme\OAuth2](https://github.com/zircote/swagger-php/tree/master/src/Spec/Security/Scheme/OAuth2.php)

An OAuth2 security scheme with one or more flows.

#### Allowed in
---
<a href="#components">Components</a>

#### Parameters
---
<dl>
  <dt><strong>securityScheme</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>description</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>flows</strong> : <span style="font-family: monospace;">list&lt;OA\Flow&gt;|null</span></dt>
  <dd><p>No details available.</p></dd>
</dl>

#### Reference
---
- [Security Scheme Object](https://spec.openapis.org/oas/v3.1.1.html#security-scheme-object) ↗

### [Security\Scheme\OpenIdConnect](https://github.com/zircote/swagger-php/tree/master/src/Spec/Security/Scheme/OpenIdConnect.php)

An OpenID Connect Discovery security scheme.

#### Allowed in
---
<a href="#components">Components</a>

#### Parameters
---
<dl>
  <dt><strong>securityScheme</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>description</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>No details available.</p></dd>
  <dt><strong>openIdConnectUrl</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>No details available.</p></dd>
</dl>

#### Reference
---
- [Security Scheme Object](https://spec.openapis.org/oas/v3.1.1.html#security-scheme-object) ↗

### [Server](https://github.com/zircote/swagger-php/tree/master/src/Spec/Server.php)

A host the API is available on, optionally templated with `ServerVariable` substitutions.

#### Allowed in
---
<a href="#operation">Operation</a>, <a href="#pathitem">PathItem</a>

#### Nested elements
---
<a href="#servervariable">ServerVariable</a>

#### Parameters
---
<dl>
  <dt><strong>url</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>A URL to the target host</p></dd>
  <dt><strong>description</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>A description of the host (CommonMark syntax)</p></dd>
  <dt><strong>variables</strong> : <span style="font-family: monospace;">list&lt;ServerVariable&gt;|null</span></dt>
  <dd><p>Variables for server URL template substitution</p></dd>
</dl>

#### Reference
---
- [Server Object](https://spec.openapis.org/oas/v3.1.1.html#server-object) ↗

### [ServerVariable](https://github.com/zircote/swagger-php/tree/master/src/Spec/ServerVariable.php)

The allowed and default substitutions for one template variable in a `Server` URL.

#### Allowed in
---
<a href="#server">Server</a>

#### Parameters
---
<dl>
  <dt><strong>serverVariable</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>The variable name</p></dd>
  <dt><strong>default</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>The default value to use for substitution</p></dd>
  <dt><strong>description</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>A description of the server variable (CommonMark syntax)</p></dd>
  <dt><strong>enum</strong> : <span style="font-family: monospace;">list&lt;string|int|float|bool|\UnitEnum|class-string&lt;\UnitEnum&gt;|null&gt;|null</span></dt>
  <dd><p>Allowed values for substitution; all cast to string in the specification</p></dd>
</dl>

#### Reference
---
- [Server Variable Object](https://spec.openapis.org/oas/v3.1.1.html#server-variable-object) ↗

### [Tag](https://github.com/zircote/swagger-php/tree/master/src/Spec/Tag.php)

Adds metadata to a single tag used by the Operation Object.

#### Nested elements
---
<a href="#externaldocumentation">ExternalDocumentation</a>

#### Parameters
---
<dl>
  <dt><strong>name</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>The name of the tag</p></dd>
  <dt><strong>summary</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>A short summary of the tag, used for display purposes</p></dd>
  <dt><strong>description</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>A description of the tag (CommonMark syntax)</p></dd>
  <dt><strong>externalDocs</strong> : <span style="font-family: monospace;">ExternalDocumentation|null</span></dt>
  <dd><p>Additional external documentation for this tag</p></dd>
  <dt><strong>parent</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>The name of a tag that this tag is nested under</p></dd>
  <dt><strong>kind</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>A machine-readable string to categorize the tag</p></dd>
</dl>

#### Reference
---
- [Tag Object](https://spec.openapis.org/oas/v3.1.1.html#tag-object) ↗

### [Xml](https://github.com/zircote/swagger-php/tree/master/src/Spec/Xml.php)

Metadata for XML representation of a schema property.

#### Allowed in
---
<a href="#schema">Schema</a>

#### Parameters
---
<dl>
  <dt><strong>name</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>Replaces the name of the element/attribute</p></dd>
  <dt><strong>namespace</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>The URI of the XML namespace</p></dd>
  <dt><strong>prefix</strong> : <span style="font-family: monospace;">string|null</span></dt>
  <dd><p>The namespace prefix to use</p></dd>
  <dt><strong>attribute</strong> : <span style="font-family: monospace;">bool|null</span></dt>
  <dd><p>Whether the property translates to an XML attribute</p></dd>
  <dt><strong>wrapped</strong> : <span style="font-family: monospace;">bool|null</span></dt>
  <dd><p>Whether array items are wrapped in an additional element</p></dd>
</dl>

#### Reference
---
- [XML Object](https://spec.openapis.org/oas/v3.1.1.html#xml-object) ↗
