UNPKG

vitepress-openapi

Version:

Generate VitePress API Documentation from OpenAPI Specification.

71 lines (70 loc) 2.64 kB
import type { OpenAPI, OpenAPIV3, OpenAPIV3_1 } from '@scalar/openapi-types'; import type { RemovableRef } from '@vueuse/core'; /** * Slots required for OAOperation component. */ export type OperationSlot = 'header' | 'tags' | 'path' | 'description' | 'security' | 'parameters' | 'request-body' | 'responses' | 'playground' | 'try-it' | 'code-samples' | 'branding' | 'footer'; export type OpenAPIDocument = OpenAPIV3.Document & OpenAPIV3_1.Document; export type ParsedPaths = OpenAPIV3.PathsObject & OpenAPIV3_1.PathsObject & { [key: string]: OpenAPIV3.PathItemObject & OpenAPIV3_1.PathItemObject & { [key: string]: ParsedOperation; }; }; export type ParsedOpenAPI = OpenAPIDocument & { paths: ParsedPaths; }; export type OARequestBody = OpenAPIV3.RequestBodyObject & OpenAPIV3_1.RequestBodyObject & { content: { [key: string]: ParsedContent; }; }; export type ParsedOperation = OpenAPIV3.OperationObject & OpenAPIV3_1.OperationObject & { operationId: string; security?: OpenAPIV3.SecurityRequirementObject[] & OpenAPIV3_1.SecurityRequirementObject[] & { [key: string]: string[]; }; securityUi?: SecurityUi; requestBody: OARequestBody; responses: OpenAPIV3.ResponsesObject & OpenAPIV3_1.ResponsesObject & { [key: string]: OpenAPIV3.ResponseObject & OpenAPIV3_1.ResponseObject & { content: { [key: string]: ParsedContent; }; }; }; }; export type ParsedContent = OpenAPIV3.MediaTypeObject & OpenAPIV3_1.MediaTypeObject & { schema: OpenAPIV3.SchemaObject & OpenAPIV3_1.SchemaObject; ui?: any; examples?: { [key: string]: OAExampleObject; }; }; export type OperationObject = OpenAPIV3.Document | OpenAPIV3_1.OperationObject; export type AllSecuritySchemes = OpenAPIV3.HttpSecurityScheme & OpenAPIV3.ApiKeySecurityScheme & OpenAPIV3.OAuth2SecurityScheme & OpenAPIV3.OpenIdSecurityScheme; export type PlaygroundSecurityScheme = AllSecuritySchemes & { value: string | RemovableRef<any>; label: string; name: string; example?: string; }; export interface SecurityUi extends Array<SecurityUiItem> { } export interface SecurityUiItem { id: string; schemes: { [key: string]: OpenAPIV3.SecuritySchemeObject; }; } export type OAExampleObject = OpenAPI.ExampleObject & { isAutogenerated?: boolean; lang?: string; hideOnSchemaTabs?: boolean; }; export interface PathsGroupView { name: string; paths: Record<string, OpenAPIV3.PathItemObject & OpenAPIV3_1.PathItemObject>; isOpen: boolean; description?: string; isGrouped: boolean; }