UNPKG

@mintlify/validation

Version:

Validates mint.json files

189 lines (188 loc) 6.76 kB
import { OpenAPIV3, OpenAPIV3_1 } from 'openapi-types'; export type DocumentV3 = OpenAPIV3.Document | OpenAPIV3_1.Document; export type Endpoint<D extends DataSchemaArray | IncrementalDataSchemaArray = DataSchemaArray | IncrementalDataSchemaArray> = { title?: string; description?: string; path: string; method: HttpMethod; servers?: Server[]; request: RequestSchema<D>; response: ResponseSchema<D>; deprecated: boolean; type?: EndpointType; xMcp?: XMcp; }; export type EndpointType = 'path' | 'webhook'; export declare class EndpointLocation { readonly type: EndpointType; readonly path: 'paths' | 'webhooks'; readonly endpointPath: string; readonly document: OpenAPIV3_1.Document; constructor(document: OpenAPIV3_1.Document, path: string); getEndpointPaths(): OpenAPIV3_1.PathItemObject | undefined; getEndpoint(): OpenAPIV3_1.PathItemObject | undefined; } export type Server = { url: string; description?: string; variables?: { [variableName: string]: ServerVariableSchema; }; }; export type ServerVariableSchema = ServerVariableStringSchema | ServerVariableStringEnumSchema; export type ServerVariableStringSchema = { type: 'string'; default: string; description?: string; }; export type ServerVariableStringEnumSchema = { type: 'enum<string>'; enum: string[]; default: string; description?: string; }; export declare const httpMethods: readonly ["get", "put", "post", "delete", "options", "head", "patch", "trace"]; export type HttpMethod = (typeof httpMethods)[number]; export type RequestSchema<D extends DataSchemaArray | IncrementalDataSchemaArray = DataSchemaArray | IncrementalDataSchemaArray> = { security: SecurityOption[]; parameters: ParameterSections<D>; body: BodySchema<D>; codeSamples?: CodeSample[]; }; export type CodeSample = { label?: string; lang: string; source: string; }; export type BodySchema<D extends DataSchemaArray | IncrementalDataSchemaArray = DataSchemaArray | IncrementalDataSchemaArray> = { [contentType: string]: ContentSchema<D>; }; export type ContentSchema<D extends DataSchemaArray | IncrementalDataSchemaArray = DataSchemaArray | IncrementalDataSchemaArray> = { schemaArray: D; description?: string; examples: { [title: string]: ExampleSchema; }; }; export type ExampleSchema = { summary?: string; description?: string; value: unknown; }; export type ParameterSchema<D extends DataSchemaArray | IncrementalDataSchemaArray = DataSchemaArray | IncrementalDataSchemaArray> = { schema: D; }; export type ParameterGroup<D extends DataSchemaArray | IncrementalDataSchemaArray = DataSchemaArray | IncrementalDataSchemaArray> = { [name: string]: ParameterSchema<D>; }; export type ParameterLocation = 'query' | 'header' | 'cookie' | 'path'; type NonPathParameterLocation = Exclude<ParameterLocation, 'path'>; export type ParameterSections<D extends DataSchemaArray | IncrementalDataSchemaArray = DataSchemaArray | IncrementalDataSchemaArray> = Record<ParameterLocation, ParameterGroup<D>>; export type SecurityOption = { title: string; parameters: SecurityParameterSections; }; type ApiKeyParameterSchema = { type: 'apiKey'; description?: string; }; type HttpParameterSchema = { type: 'http'; scheme: 'bearer' | 'basic'; description?: string; }; type OAuth2ParameterSchema = { type: 'oauth2'; description?: string; }; export type SecurityParameterSchema = ApiKeyParameterSchema | HttpParameterSchema | OAuth2ParameterSchema; export type SecurityParameterGroup = { [name: string]: SecurityParameterSchema; }; export type SecurityParameterSections = Record<NonPathParameterLocation, SecurityParameterGroup>; export type ResponseSchema<D extends DataSchemaArray | IncrementalDataSchemaArray = DataSchemaArray | IncrementalDataSchemaArray> = { [code: string]: BodySchema<D>; }; export declare const typeList: readonly ["boolean", "string", "number", "integer", "object", "array", "enum<string>", "enum<number>", "enum<integer>", "file", "null", "any"]; export type SchemaType = (typeof typeList)[number]; export type BaseSchema<T> = { type: SchemaType; title?: string; description?: string; placeholder?: string; default?: T; example?: T; required?: boolean; readOnly?: boolean; writeOnly?: boolean; deprecated?: boolean; }; export type BooleanSchema = { type: 'boolean'; } & BaseSchema<boolean>; export type StringSchema = { type: 'string'; format?: string; pattern?: string; maxLength?: number; minLength?: number; const?: string; } & BaseSchema<string>; export type NumberSchema = { type: 'number' | 'integer'; multipleOf?: number; maximum?: number; exclusiveMaximum?: boolean; minimum?: number; exclusiveMinimum?: boolean; } & BaseSchema<number>; type BaseObjectSchema<R> = { type: 'object'; additionalProperties?: boolean | R; maxProperties?: number; minProperties?: number; properties: { [key: string]: R; }; requiredProperties?: string[]; } & BaseSchema<Record<string, unknown>>; type BaseArraySchema<R> = { type: 'array'; items: R; maxItems?: number; minItems?: number; uniqueItems?: boolean; } & BaseSchema<unknown[]>; export type StringEnumSchema = { type: 'enum<string>'; enum: string[]; } & BaseSchema<string>; export type NumberEnumSchema = { type: 'enum<number>' | 'enum<integer>'; enum: number[]; } & BaseSchema<number>; export type FileSchema = { type: 'file'; contentEncoding?: string; contentMediaType?: string; } & BaseSchema<File>; export type NullSchema = { type: 'null'; } & BaseSchema<null>; export type AnySchema = { type: 'any'; } & BaseSchema<unknown>; export type ObjectSchema = BaseObjectSchema<DataSchemaArray>; export type ArraySchema = BaseArraySchema<DataSchemaArray>; export type DataSchema = BooleanSchema | StringSchema | NumberSchema | ObjectSchema | ArraySchema | StringEnumSchema | NumberEnumSchema | FileSchema | NullSchema | AnySchema; export type DataSchemaArray = [DataSchema, ...DataSchema[]]; export type IncrementalObjectSchema = BaseObjectSchema<OpenAPIV3_1.SchemaObject>; export type IncrementalArraySchema = BaseArraySchema<OpenAPIV3_1.SchemaObject>; export type IncrementalDataSchema = BooleanSchema | StringSchema | NumberSchema | IncrementalObjectSchema | IncrementalArraySchema | StringEnumSchema | NumberEnumSchema | FileSchema | NullSchema | AnySchema; export type IncrementalDataSchemaArray = [IncrementalDataSchema, ...IncrementalDataSchema[]]; export type XMcp = { enabled?: boolean; name?: string; description?: string; }; export {};