openapi-json-schema
Version:
Minimalistic OpenAPI 3 ⬌ JSON Schema (draft 7) conversion
57 lines (56 loc) • 1.85 kB
TypeScript
import type { JSONSchema4, JSONSchema4TypeName } from 'json-schema';
export interface PartialOpenApiSchema {
openapi: OpenApiSchemaVersion;
info: {
title: string;
version: string;
description?: string;
termsOfService?: string;
contact?: OpenApiSchemaContact;
license?: OpenApiLicenseContact;
'x-id'?: string;
'x-comment'?: string;
};
paths: Record<string, unknown>;
servers?: Array<OpenApiSchemaServer>;
components?: OpenApiSchemaComponents;
}
export interface OpenApiSchemaContact {
name?: string;
url?: string;
email?: string;
}
export interface OpenApiLicenseContact {
name: string;
url?: string;
}
export interface OpenApiSchemaServer {
url: string;
description?: string;
variables?: Record<string, OpenApiSchemaServerVariable>;
}
export interface OpenApiSchemaServerVariable {
enum?: Array<string>;
default: string;
description?: string;
}
export interface OpenApiSchemaReference {
$ref: string;
}
export type OpenAPITypeName = JSONSchema4TypeName;
export type OpenAPISchemaType = Omit<JSONSchema4, 'type'> & {
type?: OpenAPITypeName;
};
export type OpenApiSchemaTypeDefinition = OpenAPISchemaType | boolean;
export interface OpenApiSchemaComponents {
schemas?: Record<string, OpenApiSchemaTypeDefinition>;
responses?: Record<string, unknown>;
parameters?: Record<string, unknown>;
examples?: Record<string, unknown>;
requestBodies?: Record<string, unknown>;
headers?: Record<string, unknown>;
securitySchemes?: Record<string, unknown>;
links?: Record<string, unknown>;
callbacks?: Record<string, unknown>;
}
export type OpenApiSchemaVersion = '3.0.3' | '3.0.2' | '3.0.1' | '3.0.0' | '3.0.0-rc2' | '3.0.0-rc1' | '3.0.0-rc0' | '2.0' | '2.0' | '1.2' | '1.1' | '1.0';