···11import type { EnumExtensions } from '~/openApi/shared/types/openapi-spec-extensions';
2233/**
44+ * OpenAPI Specification Extensions.
55+ *
66+ * See {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.4.md#specification-extensions Specification Extensions}.
77+ */
88+export interface SpecificationExtensions {
99+ [extension: `x-${string}`]: unknown;
1010+}
1111+1212+/**
413 * This is the root object of the {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.4.md#openapi-description OpenAPI Description}.
514 *
615 * This object MAY be extended with {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.4.md#specification-extensions Specification Extensions}.
716 */
88-export interface OpenApiV3_0_X {
1717+export interface OpenApiV3_0_X extends SpecificationExtensions {
918 /**
1019 * An element to hold various Objects for the OpenAPI Description.
1120 */
···4756 *
4857 * TODO: examples
4958 */
5050-export interface CallbackObject {
5959+export interface CallbackObject extends SpecificationExtensions {
5160 /**
5261 * A Path Item Object used to define a callback request and expected responses. A {@link https://learn.openapis.org/examples/v3.0/callback-example.html complete example} is available.
5362 */
5454- [expression: string]: PathItemObject | ReferenceObject;
6363+ [expression: string]: PathItemObject | ReferenceObject | unknown;
5564}
56655766/**
···6372 *
6473 * TODO: examples
6574 */
6666-export interface ComponentsObject {
7575+export interface ComponentsObject extends SpecificationExtensions {
6776 /**
6877 * An object to hold reusable {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.4.md#callback-object Callback Objects}.
6978 */
···113122 * email: support@example.com
114123 * ```
115124 */
116116-export interface ContactObject {
125125+export interface ContactObject extends SpecificationExtensions {
117126 /**
118127 * The email address of the contact person/organization. This MUST be in the form of an email address.
119128 */
···160169 * TODO: default values examples
161170 * TODO: examples
162171 */
163163-export interface EncodingObject {
172172+export interface EncodingObject extends SpecificationExtensions {
164173 /**
165174 * When this is true, parameter values are serialized using reserved expansion, as defined by {@link https://datatracker.ietf.org/doc/html/rfc6570#section-3.2.3 RFC6570}, which allows {@link https://datatracker.ietf.org/doc/html/rfc3986#section-2.2 RFC3986's reserved character set}, as well as percent-encoded triples, to pass through unchanged, while still percent-encoding all other disallowed characters (including `%` outside of percent-encoded triples). Applications are still responsible for percent-encoding reserved characters that are {@link https://datatracker.ietf.org/doc/html/rfc3986#section-3.4 not allowed in the query string} (`[`, `]`, `#`), or have a special meaning in `application/x-www-form-urlencoded` (`-`, `&`, `+`); see Appendices {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.4.md#appendix-c-using-rfc6570-based-serialization C} and {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.4.md#appendix-e-percent-encoding-and-form-media-types E} for details. The default value is `false`. This field SHALL be ignored if the request body media type is not `application/x-www-form-urlencoded`.
166175 */
···201210 *
202211 * TODO: examples
203212 */
204204-export interface ExampleObject {
213213+export interface ExampleObject extends SpecificationExtensions {
205214 /**
206215 * Long description for the example. {@link https://spec.commonmark.org/ CommonMark syntax} MAY be used for rich text representation.
207216 */
···232241 * url: https://example.com
233242 * ```
234243 */
235235-export interface ExternalDocumentationObject {
244244+export interface ExternalDocumentationObject extends SpecificationExtensions {
236245 /**
237246 * A description of the target documentation. {@link https://spec.commonmark.org/ CommonMark syntax} MAY be used for rich text representation.
238247 */
···276285 * version: 1.0.1
277286 * ```
278287 */
279279-export interface InfoObject {
288288+export interface InfoObject extends SpecificationExtensions {
280289 /**
281290 * The contact information for the exposed API.
282291 */
···313322 * url: https://www.apache.org/licenses/LICENSE-2.0.html
314323 * ```
315324 */
316316-export interface LicenseObject {
325325+export interface LicenseObject extends SpecificationExtensions {
317326 /**
318327 * **REQUIRED**. The license name used for the API.
319328 */
···339348 *
340349 * TODO: examples
341350 */
342342-export interface LinkObject {
351351+export interface LinkObject extends SpecificationExtensions {
343352 /**
344353 * A description of the link. {@link https://spec.commonmark.org/ CommonMark syntax} MAY be used for rich text representation.
345354 */
···375384 *
376385 * TODO: examples
377386 */
378378-export interface MediaTypeObject {
387387+export interface MediaTypeObject extends SpecificationExtensions {
379388 /**
380389 * A map between a property name and its encoding information. The key, being the property name, MUST exist in the schema as a property. The `encoding` field SHALL only apply to {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.4.md#request-body-object Request Body Objects}, and only when the media type is `multipart` or `application/x-www-form-urlencoded`. If no Encoding Object is provided for a property, the behavior is determined by the default values documented for the Encoding Object.
381390 */
···401410 *
402411 * TODO: examples
403412 */
404404-export interface OAuthFlowObject {
413413+export interface OAuthFlowObject extends SpecificationExtensions {
405414 /**
406415 * **REQUIRED (`"implicit"`, `"authorizationCode"`)**. The authorization URL to be used for this flow. This MUST be in the form of a URL. The OAuth2 standard requires the use of TLS.
407416 */
···425434 *
426435 * This object MAY be extended with {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.4.md#specification-extensions Specification Extensions}.
427436 */
428428-export interface OAuthFlowsObject {
437437+export interface OAuthFlowsObject extends SpecificationExtensions {
429438 /**
430439 * Configuration for the OAuth Authorization Code flow. Previously called `accessCode` in OpenAPI 2.0.
431440 */
···451460 *
452461 * TODO: examples
453462 */
454454-export interface OperationObject {
463463+export interface OperationObject extends SpecificationExtensions {
455464 /**
456465 * A map of possible out-of band callbacks related to the parent operation. The key is a unique identifier for the Callback Object. Each value in the map is a {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.4.md#callback-object Callback Object} that describes a request that may be initiated by the API provider and the expected responses.
457466 */
···546555 *
547556 * TODO: examples
548557 */
549549-export interface ParameterObject {
558558+export interface ParameterObject extends SpecificationExtensions {
550559 /**
551560 * If `true`, clients MAY pass a zero-length string value in place of parameters that would otherwise be omitted entirely, which the server SHOULD interpret as the parameter being unused. Default value is `false`. If {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.4.md#parameter-style `style`} is used, and if {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.4.md#style-examples behavior is _n/a_ (cannot be serialized)}, the value of `allowEmptyValue` SHALL be ignored. Interactions between this field and the parameter's {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.4.md#schema-object Schema Object} are implementation-defined. This field is valid only for `query` parameters. Use of this field is NOT RECOMMENDED, and it is likely to be removed in a later revision.
552561 */
···618627 *
619628 * TODO: examples
620629 */
621621-export interface PathItemObject {
630630+export interface PathItemObject extends SpecificationExtensions {
622631 /**
623632 * Allows for a referenced definition of this path item. The value MUST be in the form of a URL, and the referenced structure MUST be in the form of a {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.4.md#path-item-object Path Item Object}. In case a Path Item Object field appears both in the defined object and the referenced object, the behavior is undefined. See the rules for resolving {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.4.md#relative-references-in-urls Relative References}.
624633 */
···680689 *
681690 * TODO: examples
682691 */
683683-export interface PathsObject {
692692+export interface PathsObject extends SpecificationExtensions {
684693 /**
685694 * A relative path to an individual endpoint. The field name MUST begin with a forward slash (`/`). The path is **appended** (no relative URL resolution) to the expanded URL from the {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.4.md#server-object Server Object}'s `url` field in order to construct the full URL. {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.4.md#path-templating Path templating} is allowed. When matching URLs, concrete (non-templated) paths would be matched before their templated counterparts. Templated paths with the same hierarchy but different templated names MUST NOT exist as they are identical. In case of ambiguous matching, it's up to the tooling to decide which one to use.
686695 */
···728737 *
729738 * TODO: examples
730739 */
731731-export interface RequestBodyObject {
740740+export interface RequestBodyObject extends SpecificationExtensions {
732741 /**
733742 * **REQUIRED**. The content of the request body. The key is a media type or {@link https://tools.ietf.org/html/rfc7231#appendix-D media type range} and the value describes it. For requests that match multiple keys, only the most specific key is applicable. e.g. `"text/plain"` overrides `"text/*"`
734743 */
···750759 *
751760 * TODO: examples
752761 */
753753-export interface ResponseObject {
762762+export interface ResponseObject extends SpecificationExtensions {
754763 /**
755764 * A map containing descriptions of potential response payloads. The key is a media type or {@link https://tools.ietf.org/html/rfc7231#appendix-D media type range} and the value describes it. For responses that match multiple keys, only the most specific key is applicable. e.g. `"text/plain"` overrides `"text/*"`
756765 */
···782791 *
783792 * TODO: examples
784793 */
785785-export interface ResponsesObject {
794794+export interface ResponsesObject extends SpecificationExtensions {
786795 /**
787796 * Any {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.4.md#http-status-codes HTTP status code} can be used as the property name, but only one property per code, to describe the expected response for that HTTP status code. A {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.4.md#reference-object Reference Object} can link to a response that is defined in the {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.4.md#components-responses OpenAPI Object's `components.responses`} section. This field MUST be enclosed in quotation marks (for example, "200") for compatibility between JSON and YAML. To define a range of response codes, this field MAY contain the uppercase wildcard character `X`. For example, `2XX` represents all response codes between `200` and `299`. Only the following range definitions are allowed: `1XX`, `2XX`, `3XX`, `4XX`, and `5XX`. If a response is defined using an explicit code, the explicit code definition takes precedence over the range definition for that code.
788797 */
789789- [httpStatusCode: string]: ResponseObject | ReferenceObject | undefined;
798798+ [httpStatusCode: string]:
799799+ | ResponseObject
800800+ | ReferenceObject
801801+ | undefined
802802+ | unknown;
790803 /**
791804 * The documentation of responses other than the ones declared for specific HTTP response codes. Use this field to cover undeclared responses. A {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.4.md#reference-object Reference Object} can link to a response that the {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.4.md#components-responses OpenAPI Object's `components.responses`} section defines.
792805 */
···844857 *
845858 * TODO: content, examples
846859 */
847847-export interface SchemaObject extends EnumExtensions {
860860+export interface SchemaObject extends EnumExtensions, SpecificationExtensions {
848861 /**
849862 * The value of "additionalProperties" MUST be a boolean or a schema.
850863 *
···10971110 *
10981111 * TODO: examples
10991112 */
11001100-export type SecuritySchemeObject = {
11131113+export type SecuritySchemeObject = SpecificationExtensions & {
11011114 /**
11021115 * A description for security scheme. {@link https://spec.commonmark.org/ CommonMark syntax} MAY be used for rich text representation.
11031116 */
11041117 description?: string;
11051118} & (
11061106- | {
11071107- /**
11081108- * **REQUIRED**. The location of the API key. Valid values are `"query"`, `"header"`, or `"cookie"`.
11091109- */
11101110- in: 'cookie' | 'header' | 'query';
11111111- /**
11121112- * **REQUIRED**. The name of the header, query or cookie parameter to be used.
11131113- */
11141114- name: string;
11151115- /**
11161116- * **REQUIRED**. The type of the security scheme. Valid values are `"apiKey"`, `"http"`, `"oauth2"`, `"openIdConnect"`.
11171117- */
11181118- type: 'apiKey';
11191119- }
11201120- | {
11211121- /**
11221122- * A hint to the client to identify how the bearer token is formatted. Bearer tokens are usually generated by an authorization server, so this information is primarily for documentation purposes.
11231123- */
11241124- bearerFormat?: string;
11251125- /**
11261126- * **REQUIRED**. The name of the HTTP Authentication scheme to be used in the {@link https://tools.ietf.org/html/rfc7235#section-5.1 Authorization header as defined in RFC7235}. The values used SHOULD be registered in the {@link https://www.iana.org/assignments/http-authschemes/http-authschemes.xhtml IANA Authentication Scheme registry}. The value is case-insensitive, as defined in {@link https://datatracker.ietf.org/doc/html/rfc7235#section-2.1 RFC7235}.
11271127- */
11281128- scheme: string;
11291129- /**
11301130- * **REQUIRED**. The type of the security scheme. Valid values are `"apiKey"`, `"http"`, `"oauth2"`, `"openIdConnect"`.
11311131- */
11321132- type: 'http';
11331133- }
11341134- | {
11351135- /**
11361136- * **REQUIRED**. An object containing configuration information for the flow types supported.
11371137- */
11381138- flows: OAuthFlowsObject;
11391139- /**
11401140- * **REQUIRED**. The type of the security scheme. Valid values are `"apiKey"`, `"http"`, `"oauth2"`, `"openIdConnect"`.
11411141- */
11421142- type: 'oauth2';
11431143- }
11441144- | {
11451145- /**
11461146- * **REQUIRED**. {@link https://openid.net/specs/openid-connect-discovery-1_0.html#ProviderConfig Well-known URL} to discover the [[OpenID-Connect-Discovery]] {@link https://openid.net/specs/openid-connect-discovery-1_0.html#ProviderMetadata provider metadata}.
11471147- */
11481148- openIdConnectUrl: string;
11491149- /**
11501150- * **REQUIRED**. The type of the security scheme. Valid values are `"apiKey"`, `"http"`, `"oauth2"`, `"openIdConnect"`.
11511151- */
11521152- type: 'openIdConnect';
11531153- }
11541154-);
11191119+ | {
11201120+ /**
11211121+ * **REQUIRED**. The location of the API key. Valid values are `"query"`, `"header"`, or `"cookie"`.
11221122+ */
11231123+ in: 'cookie' | 'header' | 'query';
11241124+ /**
11251125+ * **REQUIRED**. The name of the header, query or cookie parameter to be used.
11261126+ */
11271127+ name: string;
11281128+ /**
11291129+ * **REQUIRED**. The type of the security scheme. Valid values are `"apiKey"`, `"http"`, `"oauth2"`, `"openIdConnect"`.
11301130+ */
11311131+ type: 'apiKey';
11321132+ }
11331133+ | {
11341134+ /**
11351135+ * A hint to the client to identify how the bearer token is formatted. Bearer tokens are usually generated by an authorization server, so this information is primarily for documentation purposes.
11361136+ */
11371137+ bearerFormat?: string;
11381138+ /**
11391139+ * **REQUIRED**. The name of the HTTP Authentication scheme to be used in the {@link https://tools.ietf.org/html/rfc7235#section-5.1 Authorization header as defined in RFC7235}. The values used SHOULD be registered in the {@link https://www.iana.org/assignments/http-authschemes/http-authschemes.xhtml IANA Authentication Scheme registry}. The value is case-insensitive, as defined in {@link https://datatracker.ietf.org/doc/html/rfc7235#section-2.1 RFC7235}.
11401140+ */
11411141+ scheme: string;
11421142+ /**
11431143+ * **REQUIRED**. The type of the security scheme. Valid values are `"apiKey"`, `"http"`, `"oauth2"`, `"openIdConnect"`.
11441144+ */
11451145+ type: 'http';
11461146+ }
11471147+ | {
11481148+ /**
11491149+ * **REQUIRED**. An object containing configuration information for the flow types supported.
11501150+ */
11511151+ flows: OAuthFlowsObject;
11521152+ /**
11531153+ * **REQUIRED**. The type of the security scheme. Valid values are `"apiKey"`, `"http"`, `"oauth2"`, `"openIdConnect"`.
11541154+ */
11551155+ type: 'oauth2';
11561156+ }
11571157+ | {
11581158+ /**
11591159+ * **REQUIRED**. {@link https://openid.net/specs/openid-connect-discovery-1_0.html#ProviderConfig Well-known URL} to discover the [[OpenID-Connect-Discovery]] {@link https://openid.net/specs/openid-connect-discovery-1_0.html#ProviderMetadata provider metadata}.
11601160+ */
11611161+ openIdConnectUrl: string;
11621162+ /**
11631163+ * **REQUIRED**. The type of the security scheme. Valid values are `"apiKey"`, `"http"`, `"oauth2"`, `"openIdConnect"`.
11641164+ */
11651165+ type: 'openIdConnect';
11661166+ }
11671167+ );
1155116811561169/**
11571170 * An object representing a Server.
···11601173 *
11611174 * TODO: examples
11621175 */
11631163-export interface ServerObject {
11761176+export interface ServerObject extends SpecificationExtensions {
11641177 /**
11651178 * An optional string describing the host designated by the URL. {@link https://spec.commonmark.org/ CommonMark syntax} MAY be used for rich text representation.
11661179 */
···11801193 *
11811194 * This object MAY be extended with {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.4.md#specification-extensions Specification Extensions}.
11821195 */
11831183-export interface ServerVariableObject {
11961196+export interface ServerVariableObject extends SpecificationExtensions {
11841197 /**
11851198 * **REQUIRED**. The default value to use for substitution, which SHALL be sent if an alternate value is _not_ supplied. If the {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.4.md#server-variable-enum `enum`} is defined, the value SHOULD exist in the enum's values. Note that this behavior is different from the {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.4.md#schema-object Schema Object}'s `default` keyword, which documents the receiver's behavior rather than inserting the value into the data.
11861199 */
···12071220 * description: Pets operations
12081221 * ```
12091222 */
12101210-export interface TagObject {
12231223+export interface TagObject extends SpecificationExtensions {
12111224 /**
12121225 * A description for the tag. {@link https://spec.commonmark.org/ CommonMark syntax} MAY be used for rich text representation.
12131226 */
···12361249 *
12371250 * TODO: examples
12381251 */
12391239-export interface XMLObject {
12521252+export interface XMLObject extends SpecificationExtensions {
12401253 /**
12411254 * Declares whether the property definition translates to an attribute instead of an element. Default value is `false`.
12421255 */
···11import type { EnumExtensions } from '~/openApi/shared/types/openapi-spec-extensions';
2233import type { MaybeArray } from '../../../types/utils';
44+import type { SpecificationExtensions } from './spec';
45import type { OpenApiSchemaExtensions } from './spec-extensions';
5667// TODO: left out some keywords related to structuring a complex schema and declaring a dialect
···1011 ObjectKeywords,
1112 StringKeywords,
1213 EnumExtensions,
1313- OpenApiSchemaExtensions {
1414+ OpenApiSchemaExtensions,
1515+ SpecificationExtensions {
1416 /**
1517 * The `$comment` {@link https://json-schema.org/learn/glossary#keyword keyword} is strictly intended for adding comments to a schema. Its value must always be a string. Unlike the annotations `title`, `description`, and `examples`, JSON schema {@link https://json-schema.org/learn/glossary#implementation implementations} aren't allowed to attach any meaning or behavior to it whatsoever, and may even strip them at any time. Therefore, they are useful for leaving notes to future editors of a JSON schema, but should not be used to communicate to users of the schema.
1618 */
···11import type { JsonSchemaDraft2020_12 } from './json-schema-draft-2020-12';
2233/**
44+ * OpenAPI Specification Extensions.
55+ *
66+ * See {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#specification-extensions Specification Extensions}.
77+ */
88+export interface SpecificationExtensions {
99+ [extension: `x-${string}`]: unknown;
1010+}
1111+1212+/**
413 * This is the root object of the {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#openapi-document OpenAPI document}.
514 *
615 * This object MAY be extended with {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#specification-extensions Specification Extensions}.
716 */
88-export interface OpenApiV3_1_X {
1717+export interface OpenApiV3_1_X extends SpecificationExtensions {
918 /**
1019 * An element to hold various schemas for the document.
1120 */
···129138 * description: callback successfully processed
130139 * ```
131140 */
132132-export interface CallbackObject {
141141+export interface CallbackObject extends SpecificationExtensions {
133142 /**
134143 * A Path Item Object, or a reference to one, used to define a callback request and expected responses. A {@link https://github.com/OAI/OpenAPI-Specification/blob/main/examples/v3.0/callback-example.yaml complete example} is available.
135144 */
136136- [expression: string]: PathItemObject | ReferenceObject;
145145+ [expression: string]: PathItemObject | ReferenceObject | unknown;
137146}
138147139148/**
···225234 * read:pets: read your pets
226235 * ```
227236 */
228228-export interface ComponentsObject {
237237+export interface ComponentsObject extends SpecificationExtensions {
229238 /**
230239 * An object to hold reusable {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#callback-object Callback Objects}.
231240 */
···280289 * email: support@example.com
281290 * ```
282291 */
283283-export interface ContactObject {
292292+export interface ContactObject extends SpecificationExtensions {
284293 /**
285294 * The email address of the contact person/organization. This MUST be in the form of an email address.
286295 */
···421430 *
422431 * will map to `Dog` because of the definition in the `mapping` element.
423432 */
424424-export interface DiscriminatorObject {
433433+export interface DiscriminatorObject extends SpecificationExtensions {
425434 /**
426435 * An object to hold mappings between payload values and schema names or references.
427436 */
···473482 * type: integer
474483 * ```
475484 */
476476-export interface EncodingObject {
485485+export interface EncodingObject extends SpecificationExtensions {
477486 /**
478487 * Determines whether the parameter value SHOULD allow reserved characters, as defined by {@link https://tools.ietf.org/html/rfc3986#section-2.2 RFC3986} `:/?#[]@!$&'()*+,;=` to be included without percent-encoding. The default value is `false`. This property SHALL be ignored if the request body media type is not `application/x-www-form-urlencoded` or `multipart/form-data`. If a value is explicitly defined, then the value of {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#encodingContentType `contentType`} (implicit or explicit) SHALL be ignored.
479488 */
···569578 * $ref: '#/components/examples/confirmation-success'
570579 * ```
571580 */
572572-export interface ExampleObject {
581581+export interface ExampleObject extends SpecificationExtensions {
573582 /**
574583 * Long description for the example. {@link https://spec.commonmark.org/ CommonMark syntax} MAY be used for rich text representation.
575584 */
···599608 * url: https://example.com
600609 * ```
601610 */
602602-export interface ExternalDocumentationObject {
611611+export interface ExternalDocumentationObject extends SpecificationExtensions {
603612 /**
604613 * A description of the target documentation. {@link https://spec.commonmark.org/ CommonMark syntax} MAY be used for rich text representation.
605614 */
···647656 * version: 1.0.1
648657 * ```
649658 */
650650-export interface InfoObject {
659659+export interface InfoObject extends SpecificationExtensions {
651660 /**
652661 * The contact information for the exposed API.
653662 */
···689698 * identifier: Apache-2.0
690699 * ```
691700 */
692692-export interface LicenseObject {
701701+export interface LicenseObject extends SpecificationExtensions {
693702 /**
694703 * An {@link https://spdx.org/licenses/ SPDX} license expression for the API. The `identifier` field is mutually exclusive of the `url` field.
695704 */
···851860 *
852861 * Runtime expressions preserve the type of the referenced value. Expressions can be embedded into string values by surrounding the expression with `{}` curly braces.
853862 */
854854-export interface LinkObject {
863863+export interface LinkObject extends SpecificationExtensions {
855864 /**
856865 * A description of the link. {@link https://spec.commonmark.org/ CommonMark syntax} MAY be used for rich text representation.
857866 */
···911920 * $ref: "#/components/examples/frog-example"
912921 * ```
913922 */
914914-export interface MediaTypeObject {
923923+export interface MediaTypeObject extends SpecificationExtensions {
915924 /**
916925 * A map between a property name and its encoding information. The key, being the property name, MUST exist in the schema as a property. The encoding object SHALL only apply to `requestBody` objects when the media type is `multipart` or `application/x-www-form-urlencoded`.
917926 */
···953962 * read:pets: read your pets
954963 * ```
955964 */
956956-export interface OAuthFlowObject {
965965+export interface OAuthFlowObject extends SpecificationExtensions {
957966 /**
958967 * **REQUIRED (`"implicit"`, `"authorizationCode"`)**. The authorization URL to be used for this flow. This MUST be in the form of a URL. The OAuth2 standard requires the use of TLS.
959968 */
···977986 *
978987 * This object MAY be extended with {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#specification-extensions Specification Extensions}.
979988 */
980980-export interface OAuthFlowsObject {
989989+export interface OAuthFlowsObject extends SpecificationExtensions {
981990 /**
982991 * Configuration for the OAuth Authorization Code flow. Previously called `accessCode` in OpenAPI 2.0.
983992 */
···10451054 * - read:pets
10461055 * ```
10471056 */
10481048-export interface OperationObject {
10571057+export interface OperationObject extends SpecificationExtensions {
10491058 /**
10501059 * A map of possible out-of band callbacks related to the parent operation. The key is a unique identifier for the Callback Object. Each value in the map is a {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#callback-object Callback Object} that describes a request that may be initiated by the API provider and the expected responses.
10511060 */
···11931202 * type: number
11941203 * ```
11951204 */
11961196-export interface ParameterObject {
12051205+export interface ParameterObject extends SpecificationExtensions {
11971206 /**
11981207 * Sets the ability to pass empty-valued parameters. This is valid only for `query` parameters and allows sending a parameter with an empty value. Default value is `false`. If {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#parameterStyle `style`} is used, and if behavior is `n/a` (cannot be serialized), the value of `allowEmptyValue` SHALL be ignored. Use of this property is NOT RECOMMENDED, as it is likely to be removed in a later revision.
11991208 */
···12961305 * style: simple
12971306 * ```
12981307 */
12991299-export interface PathItemObject {
13081308+export interface PathItemObject extends SpecificationExtensions {
13001309 /**
13011310 * Allows for a referenced definition of this path item. The referenced structure MUST be in the form of a {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#path-item-object Path Item Object}. In case a Path Item Object field appears both in the defined object and the referenced object, the behavior is undefined. See the rules for resolving {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#relative-references-in-uris Relative References}.
13021311 */
···13961405 * $ref: '#/components/schemas/pet'
13971406 * ```
13981407 */
13991399-export interface PathsObject {
14081408+export interface PathsObject extends SpecificationExtensions {
14001409 /**
14011410 * A relative path to an individual endpoint. The field name MUST begin with a forward slash (`/`). The path is **appended** (no relative URL resolution) to the expanded URL from the {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#server-object `Server Object`}'s `url` field in order to construct the full URL. {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#path-templating Path templating} is allowed. When matching URLs, concrete (non-templated) paths would be matched before their templated counterparts. Templated paths with the same hierarchy but different templated names MUST NOT exist as they are identical. In case of ambiguous matching, it's up to the tooling to decide which one to use.
14021411 */
···15011510 * type: string
15021511 * ```
15031512 */
15041504-export interface RequestBodyObject {
15131513+export interface RequestBodyObject extends SpecificationExtensions {
15051514 /**
15061515 * **REQUIRED**. The content of the request body. The key is a media type or {@link https://tools.ietf.org/html/rfc7231#appendix-D media type range} and the value describes it. For requests that match multiple keys, only the most specific key is applicable. e.g. text/plain overrides text/*
15071516 */
···15771586 * description: object created
15781587 * ```
15791588 */
15801580-export interface ResponseObject {
15891589+export interface ResponseObject extends SpecificationExtensions {
15811590 /**
15821591 * A map containing descriptions of potential response payloads. The key is a media type or {@link https://datatracker.ietf.org/doc/html/rfc7231#appendix-D media type range} and the value describes it. For responses that match multiple keys, only the most specific key is applicable. e.g. text/plain overrides text/*
15831592 */
···16251634 * $ref: '#/components/schemas/ErrorModel'
16261635 * ```
16271636 */
16281628-export interface ResponsesObject {
16371637+export interface ResponsesObject extends SpecificationExtensions {
16291638 /**
16301639 * Any {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#http-status-codes HTTP status code} can be used as the property name, but only one property per code, to describe the expected response for that HTTP status code. This field MUST be enclosed in quotation marks (for example, "200") for compatibility between JSON and YAML. To define a range of response codes, this field MAY contain the uppercase wildcard character `X`. For example, `2XX` represents all response codes between `[200-299]`. Only the following range definitions are allowed: `1XX`, `2XX`, `3XX`, `4XX`, and `5XX`. If a response is defined using an explicit code, the explicit code definition takes precedence over the range definition for that code.
16311640 */
16321632- [httpStatusCode: string]: ResponseObject | ReferenceObject | undefined;
16411641+ [httpStatusCode: string]:
16421642+ | ResponseObject
16431643+ | ReferenceObject
16441644+ | undefined
16451645+ | unknown;
16331646 /**
16341647 * The documentation of responses other than the ones declared for specific HTTP response codes. Use this field to cover undeclared responses.
16351648 */
···16601673 *
16611674 * This object MAY be extended with {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#specification-extensions Specification Extensions}, though as noted, additional properties MAY omit the `x-` prefix within this object.
16621675 */
16631663-export type SchemaObject = JsonSchemaDraft2020_12;
16761676+export type SchemaObject = JsonSchemaDraft2020_12 & SpecificationExtensions;
1664167716651678/**
16661679 * Lists the required security schemes to execute this operation. The name used for each property MUST correspond to a security scheme declared in the {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#componentsSecuritySchemes Security Schemes} under the {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#components-object Components Object}.
···17471760 * read:pets: read your pets
17481761 * ```
17491762 */
17501750-export type SecuritySchemeObject = {
17631763+export type SecuritySchemeObject = SpecificationExtensions & {
17511764 /**
17521765 * A description for security scheme. {@link https://spec.commonmark.org/ CommonMark syntax} MAY be used for rich text representation.
17531766 */
17541767 description?: string;
17551768} & (
17561756- | {
17571757- /**
17581758- * **REQUIRED**. The location of the API key. Valid values are "query", "header" or "cookie".
17591759- */
17601760- in: 'cookie' | 'header' | 'query';
17611761- /**
17621762- * **REQUIRED**. The name of the header, query or cookie parameter to be used.
17631763- */
17641764- name: string;
17651765- /**
17661766- * **REQUIRED**. The type of the security scheme. Valid values are `"apiKey"`, `"http"`, `"mutualTLS"`, `"oauth2"`, `"openIdConnect"`.
17671767- */
17681768- type: 'apiKey';
17691769- }
17701770- | {
17711771- /**
17721772- * A hint to the client to identify how the bearer token is formatted. Bearer tokens are usually generated by an authorization server, so this information is primarily for documentation purposes.
17731773- */
17741774- bearerFormat?: string;
17751775- /**
17761776- * **REQUIRED**. The name of the HTTP Authorization scheme to be used in the {@link https://tools.ietf.org/html/rfc7235#section-5.1 Authorization header as defined in RFC7235}. The values used SHOULD be registered in the {@link https://www.iana.org/assignments/http-authschemes/http-authschemes.xhtml IANA Authentication Scheme registry}.
17771777- */
17781778- scheme: string;
17791779- /**
17801780- * **REQUIRED**. The type of the security scheme. Valid values are `"apiKey"`, `"http"`, `"mutualTLS"`, `"oauth2"`, `"openIdConnect"`.
17811781- */
17821782- type: 'http';
17831783- }
17841784- | {
17851785- /**
17861786- * **REQUIRED**. The type of the security scheme. Valid values are `"apiKey"`, `"http"`, `"mutualTLS"`, `"oauth2"`, `"openIdConnect"`.
17871787- */
17881788- type: 'mutualTLS';
17891789- }
17901790- | {
17911791- /**
17921792- * **REQUIRED**. An object containing configuration information for the flow types supported.
17931793- */
17941794- flows: OAuthFlowsObject;
17951795- /**
17961796- * **REQUIRED**. The type of the security scheme. Valid values are `"apiKey"`, `"http"`, `"mutualTLS"`, `"oauth2"`, `"openIdConnect"`.
17971797- */
17981798- type: 'oauth2';
17991799- }
18001800- | {
18011801- /**
18021802- * **REQUIRED**. OpenId Connect URL to discover OAuth2 configuration values. This MUST be in the form of a URL. The OpenID Connect standard requires the use of TLS.
18031803- */
18041804- openIdConnectUrl: string;
18051805- /**
18061806- * **REQUIRED**. The type of the security scheme. Valid values are `"apiKey"`, `"http"`, `"mutualTLS"`, `"oauth2"`, `"openIdConnect"`.
18071807- */
18081808- type: 'openIdConnect';
18091809- }
18101810-);
17691769+ | {
17701770+ /**
17711771+ * **REQUIRED**. The location of the API key. Valid values are "query", "header" or "cookie".
17721772+ */
17731773+ in: 'cookie' | 'header' | 'query';
17741774+ /**
17751775+ * **REQUIRED**. The name of the header, query or cookie parameter to be used.
17761776+ */
17771777+ name: string;
17781778+ /**
17791779+ * **REQUIRED**. The type of the security scheme. Valid values are `"apiKey"`, `"http"`, `"mutualTLS"`, `"oauth2"`, `"openIdConnect"`.
17801780+ */
17811781+ type: 'apiKey';
17821782+ }
17831783+ | {
17841784+ /**
17851785+ * A hint to the client to identify how the bearer token is formatted. Bearer tokens are usually generated by an authorization server, so this information is primarily for documentation purposes.
17861786+ */
17871787+ bearerFormat?: string;
17881788+ /**
17891789+ * **REQUIRED**. The name of the HTTP Authorization scheme to be used in the {@link https://tools.ietf.org/html/rfc7235#section-5.1 Authorization header as defined in RFC7235}. The values used SHOULD be registered in the {@link https://www.iana.org/assignments/http-authschemes/http-authschemes.xhtml IANA Authentication Scheme registry}.
17901790+ */
17911791+ scheme: string;
17921792+ /**
17931793+ * **REQUIRED**. The type of the security scheme. Valid values are `"apiKey"`, `"http"`, `"mutualTLS"`, `"oauth2"`, `"openIdConnect"`.
17941794+ */
17951795+ type: 'http';
17961796+ }
17971797+ | {
17981798+ /**
17991799+ * **REQUIRED**. The type of the security scheme. Valid values are `"apiKey"`, `"http"`, `"mutualTLS"`, `"oauth2"`, `"openIdConnect"`.
18001800+ */
18011801+ type: 'mutualTLS';
18021802+ }
18031803+ | {
18041804+ /**
18051805+ * **REQUIRED**. An object containing configuration information for the flow types supported.
18061806+ */
18071807+ flows: OAuthFlowsObject;
18081808+ /**
18091809+ * **REQUIRED**. The type of the security scheme. Valid values are `"apiKey"`, `"http"`, `"mutualTLS"`, `"oauth2"`, `"openIdConnect"`.
18101810+ */
18111811+ type: 'oauth2';
18121812+ }
18131813+ | {
18141814+ /**
18151815+ * **REQUIRED**. OpenId Connect URL to discover OAuth2 configuration values. This MUST be in the form of a URL. The OpenID Connect standard requires the use of TLS.
18161816+ */
18171817+ openIdConnectUrl: string;
18181818+ /**
18191819+ * **REQUIRED**. The type of the security scheme. Valid values are `"apiKey"`, `"http"`, `"mutualTLS"`, `"oauth2"`, `"openIdConnect"`.
18201820+ */
18211821+ type: 'openIdConnect';
18221822+ }
18231823+ );
1811182418121825/**
18131826 * An object representing a Server.
···18201833 * description: Development server
18211834 * ```
18221835 */
18231823-export interface ServerObject {
18361836+export interface ServerObject extends SpecificationExtensions {
18241837 /**
18251838 * An optional string describing the host designated by the URL. {@link https://spec.commonmark.org/ CommonMark syntax} MAY be used for rich text representation.
18261839 */
···18401853 *
18411854 * This object MAY be extended with {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#specification-extensions Specification Extensions}.
18421855 */
18431843-export interface ServerVariableObject {
18561856+export interface ServerVariableObject extends SpecificationExtensions {
18441857 /**
18451858 * **REQUIRED**. The default value to use for substitution, which SHALL be sent if an alternate value is _not_ supplied. Note this behavior is different than the {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#schema-object Schema Object's} treatment of default values, because in those cases parameter values are optional. If the {@link https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#serverVariableEnum `enum`} is defined, the value MUST exist in the enum's values.
18461859 */
···18661879 * description: Pets operations
18671880 * ```
18681881 */
18691869-export interface TagObject {
18821882+export interface TagObject extends SpecificationExtensions {
18701883 /**
18711884 * A description for the tag. {@link https://spec.commonmark.org/ CommonMark syntax} MAY be used for rich text representation.
18721885 */
···20732086 * </aliens>
20742087 * ```
20752088 */
20762076-export interface XMLObject {
20892089+export interface XMLObject extends SpecificationExtensions {
20772090 /**
20782091 * Declares whether the property definition translates to an attribute instead of an element. Default value is `false`.
20792092 */