@mintlify/validation
Version:
Validates mint.json files
189 lines (188 loc) • 6.76 kB
TypeScript
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 {};