import type { JSONSchema4, JSONSchema6, JSONSchema7 } from "json-schema"; interface Map { [key: string]: T; } export interface OpenApiObject { openapi: string; info: InfoObject; servers?: ServerObject[]; paths: PathsObject; components?: ComponentsObject; security?: SecurityRequirementObject[]; tags?: TagObject[]; externalDocs?: ExternalDocumentationObject; swagger?: string; "x-webhooks"?: PathsObject; "x-tagGroups"?: TagGroupObject[]; } export interface OpenApiObjectWithRef { openapi: string; info: InfoObject; servers?: ServerObject[]; paths: PathsObjectWithRef; components?: ComponentsObjectWithRef; security?: SecurityRequirementObject[]; tags?: TagObject[]; externalDocs?: ExternalDocumentationObject; } export interface InfoObject { title: string; description?: string; termsOfService?: string; contact?: ContactObject; license?: LicenseObject; version: string; tags?: TagObject[]; "x-logo"?: LogoObject; "x-dark-logo"?: LogoObject; logo?: LogoObject; darkLogo?: LogoObject; } export interface LogoObject { url?: string; } export interface ContactObject { name?: string; url?: string; email?: string; } export interface LicenseObject { name: string; url?: string; } export interface ServerObject { url: string; description?: string; variables?: Map; } export interface ServerVariable { enum?: string[]; default: string; description?: string; } export interface ComponentsObject { schemas?: Map; responses?: Map; parameters?: Map; examples?: Map; requestBodies?: Map; headers?: Map; securitySchemes?: Map; links?: Map; callbacks?: Map; } export interface ComponentsObjectWithRef { schemas?: Map; responses?: Map; parameters?: Map; examples?: Map; requestBodies?: Map; headers?: Map; securitySchemes?: Map; links?: Map; callbacks?: Map; } export type PathsObject = Map; export type PathsObjectWithRef = Map; export interface PathItemObject { $ref?: string; summary?: string; description?: string; get?: OperationObject; put?: OperationObject; post?: OperationObject; delete?: OperationObject; options?: OperationObject; head?: OperationObject; patch?: OperationObject; trace?: OperationObject; servers?: ServerObject[]; parameters?: ParameterObject[]; } export interface PathItemObjectWithRef { $ref?: string; summary?: string; description?: string; get?: OperationObjectWithRef; put?: OperationObjectWithRef; post?: OperationObjectWithRef; delete?: OperationObjectWithRef; options?: OperationObjectWithRef; head?: OperationObjectWithRef; patch?: OperationObjectWithRef; trace?: OperationObjectWithRef; servers?: ServerObject[]; parameters?: (ParameterObjectWithRef | ReferenceObject)[]; } export interface OperationObject { tags?: string[]; summary?: string; description?: string; externalDocs?: ExternalDocumentationObject; operationId?: string; parameters?: ParameterObject[]; requestBody?: RequestBodyObject; responses: ResponsesObject; callbacks?: Map; deprecated?: boolean; security?: SecurityRequirementObject[]; servers?: ServerObject[]; "x-deprecated-description"?: string; } export interface OperationObjectWithRef { tags?: string[]; summary?: string; description?: string; externalDocs?: ExternalDocumentationObject; operationId?: string; parameters?: (ParameterObjectWithRef | ReferenceObject)[]; requestBody?: RequestBodyObjectWithRef | ReferenceObject; responses: ResponsesObjectWithRef; callbacks?: Map; deprecated?: boolean; security?: SecurityRequirementObject[]; servers?: ServerObject[]; "x-deprecated-description"?: string; } export interface ExternalDocumentationObject { description?: string; url: string; } export interface ParameterObject { name: string; in: "query" | "header" | "path" | "cookie"; description?: string; required?: boolean; deprecated?: boolean; allowEmptyValue?: boolean; style?: string; explode?: string; allowReserved?: boolean; schema?: SchemaObject; example?: any; examples?: Map; content?: Map; param?: Object; } export interface ParameterObjectWithRef { name: string; in: string; description?: string; required?: boolean; deprecated?: boolean; allowEmptyValue?: boolean; style?: string; explode?: string; allowReserved?: boolean; schema?: SchemaObjectWithRef | ReferenceObject; example?: any; examples?: Map; content?: Map; } export interface RequestBodyObject { description?: string; content: Map; required?: boolean; } export interface RequestBodyObjectWithRef { description?: string; content: Map; required?: boolean; } export interface MediaTypeObject { schema?: SchemaObject; example?: any; examples?: Map; encoding?: Map; } export interface MediaTypeObjectWithRef { schema?: SchemaObjectWithRef | ReferenceObject; example?: any; examples?: Map; encoding?: Map; } export interface EncodingObject { contentType?: string; headers?: Map; style?: string; explode?: boolean; allowReserved?: boolean; } export interface EncodingObjectWithRef { contentType?: string; headers?: Map; style?: string; explode?: boolean; allowReserved?: boolean; } export type ResponsesObject = Map; export type ResponsesObjectWithRef = Map; export interface ResponseObject { description: string; headers?: Map; content?: Map; links?: Map; } export interface ResponseObjectWithRef { description: string; headers?: Map; content?: Map; links?: Map; } export type CallbackObject = Map; export type CallbackObjectWithRef = Map; export interface ExampleObject { summary?: string; description?: string; value?: any; externalValue?: string; } export interface LinkObject { operationRef?: string; operationId?: string; parameters?: Map; requestBody?: any; description?: string; server?: ServerObject; } export type HeaderObject = Omit; export type HeaderObjectWithRef = Omit; export interface TagObject { name?: string; description?: string; externalDocs?: ExternalDocumentationObject; "x-displayName"?: string; } export interface TagGroupObject { name: string; tags: string[]; } export interface ReferenceObject { $ref: string; } export type JSONSchema = JSONSchema4 | JSONSchema6 | JSONSchema7; export type SchemaObject = Omit & { type?: "string" | "number" | "integer" | "boolean" | "object" | "array"; allOf?: SchemaObject[]; oneOf?: SchemaObject[]; anyOf?: SchemaObject[]; not?: SchemaObject; items?: SchemaObject; properties?: Map; additionalProperties?: Map; nullable?: boolean; discriminator?: DiscriminatorObject; readOnly?: boolean; writeOnly?: boolean; xml?: XMLObject; externalDocs?: ExternalDocumentationObject; example?: any; deprecated?: boolean; }; export type SchemaObjectWithRef = Omit & { type?: "string" | "number" | "integer" | "boolean" | "object" | "array"; allOf?: (SchemaObject | ReferenceObject)[]; oneOf?: (SchemaObject | ReferenceObject)[]; anyOf?: (SchemaObject | ReferenceObject)[]; not?: SchemaObject | ReferenceObject; items?: SchemaObject | ReferenceObject; properties?: Map; additionalProperties?: boolean | SchemaObject | ReferenceObject; nullable?: boolean; discriminator?: DiscriminatorObject; readOnly?: boolean; writeOnly?: boolean; xml?: XMLObject; externalDocs?: ExternalDocumentationObject; example?: any; deprecated?: boolean; }; export interface DiscriminatorObject { propertyName: string; mapping?: Map; } export interface XMLObject { name?: string; namespace?: string; prefix?: string; attribute?: boolean; wrapped?: boolean; } export type SecuritySchemeObject = ApiKeySecuritySchemeObject | HttpSecuritySchemeObject | Oauth2SecuritySchemeObject | OpenIdConnectSecuritySchemeObject; export interface ApiKeySecuritySchemeObject { type: "apiKey"; description?: string; name: string; in: "query" | "header" | "cookie"; } export interface HttpSecuritySchemeObject { type: "http"; description?: string; scheme: string; bearerFormat?: string; name?: string; in?: string; } export interface Oauth2SecuritySchemeObject { type: "oauth2"; description?: string; flows: OAuthFlowsObject; } export interface OpenIdConnectSecuritySchemeObject { type: "openIdConnect"; description?: string; openIdConnectUrl: string; } export interface OAuthFlowsObject { implicit?: OAuthFlowObject; password?: OAuthFlowObject; clientCredentials?: OAuthFlowObject; authorizationCode?: OAuthFlowObject; } export interface OAuthFlowObject { authorizationUrl?: string; tokenUrl?: string; refreshUrl?: string; scopes: Map; } export type SecurityRequirementObject = Map; export {};