openapi-typescript
Version:
Generate TypeScript types from Swagger OpenAPI specs
130 lines (129 loc) • 3.98 kB
TypeScript
/// <reference types="node" />
import { URL } from "url";
export interface OpenAPI2 {
swagger: string;
paths?: Record<string, PathItemObject>;
definitions?: Record<string, SchemaObject>;
parameters?: ParameterObject[];
responses?: Record<string, ResponseObject>;
}
export interface OpenAPI3 {
openapi: string;
paths?: Record<string, PathItemObject>;
components?: {
schemas?: Record<string, ReferenceObject | SchemaObject>;
responses?: Record<string, ReferenceObject | ResponseObject>;
parameters?: Record<string, ReferenceObject | ParameterObject>;
requestBodies?: Record<string, ReferenceObject | RequestBody>;
headers?: Record<string, ReferenceObject | HeaderObject>;
links?: Record<string, ReferenceObject | LinkObject>;
};
}
export interface HeaderObject {
type?: string;
description?: string;
required?: boolean;
schema: ReferenceObject | SchemaObject;
}
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;
parameters?: (ReferenceObject | ParameterObject)[];
}
export interface LinkObject {
operationRef?: string;
operationId?: string;
parameters?: (ReferenceObject | ParameterObject)[];
requestBody?: RequestBody;
description?: string;
}
export interface OperationObject {
description?: string;
tags?: string[];
summary?: string;
operationId?: string;
parameters?: (ReferenceObject | ParameterObject)[];
requestBody?: ReferenceObject | RequestBody;
responses?: Record<string, ReferenceObject | ResponseObject>;
}
export interface ParameterObject {
name?: string;
in?: "query" | "header" | "path" | "cookie" | "formData" | "body";
description?: string;
required?: boolean;
deprecated?: boolean;
schema?: ReferenceObject | SchemaObject;
type?: "string" | "number" | "integer" | "boolean" | "array" | "file";
items?: ReferenceObject | SchemaObject;
enum?: string[];
}
export declare type ReferenceObject = {
$ref: string;
};
export interface ResponseObject {
description?: string;
headers?: Record<string, ReferenceObject | HeaderObject>;
schema?: ReferenceObject | SchemaObject;
links?: Record<string, ReferenceObject | LinkObject>;
content?: {
[contentType: string]: {
schema: ReferenceObject | SchemaObject;
};
};
}
export interface RequestBody {
description?: string;
content?: {
[contentType: string]: {
schema: ReferenceObject | SchemaObject;
};
};
}
export interface SchemaObject {
title?: string;
description?: string;
required?: string[];
enum?: string[];
type?: string;
items?: ReferenceObject | SchemaObject;
allOf?: SchemaObject;
properties?: Record<string, ReferenceObject | SchemaObject>;
default?: any;
additionalProperties?: boolean | ReferenceObject | SchemaObject;
nullable?: boolean;
oneOf?: (ReferenceObject | SchemaObject)[];
anyOf?: (ReferenceObject | SchemaObject)[];
format?: string;
}
export declare type SchemaFormatter = (schemaObj: SchemaObject) => string | undefined;
export interface SwaggerToTSOptions {
additionalProperties?: boolean;
auth?: string;
cwd?: URL;
formatter?: SchemaFormatter;
immutableTypes?: boolean;
defaultNonNullable?: boolean;
prettierConfig?: string;
rawSchema?: boolean;
version?: number;
}
export interface GlobalContext {
additionalProperties: boolean;
auth?: string;
formatter?: SchemaFormatter;
immutableTypes: boolean;
defaultNonNullable: boolean;
silent?: boolean;
namespace?: string;
rawSchema: boolean;
version: number;
}