@redocly/openapi-core
Version:
See https://github.com/Redocly/redocly-cli
237 lines (205 loc) • 5.37 kB
text/typescript
import { Referenced } from './openapi';
import { Schema } from 'js-yaml';
export interface Oas2Definition {
swagger: '2.0';
info?: Oas2Info;
paths?: Oas2Paths;
basePath?: string;
schemes?: string[];
consumes?: string[];
produces?: string[];
definitions?: Record<string, Oas2Schema>;
responses?: Record<string, Oas2Response>;
parameters?: Record<string, Oas2Parameter>;
securityDefinitions?: Record<string, Oas2SecurityScheme>;
security?: Oas2SecurityRequirement[];
tags?: Oas2Tag[];
externalDocs?: Oas2ExternalDocs;
}
export interface Oas2Components {
definitions?: { [name: string]: Record<string, Oas2Schema> };
securityDefinitions?: { [name: string]: Record<string, Oas2SecurityScheme> };
responses?: { [name: string]: Record<string, Oas2Response> };
parameters?: { [name: string]: Record<string, Oas2Parameter> };
}
export interface Oas2Info {
title: string;
version: string;
description?: string;
termsOfService?: string;
contact?: Oas2Contact;
license?: Oas2License;
}
export interface Oas2Paths {
[path: string]: Oas2PathItem;
}
export interface Oas2PathItem {
get?: Oas2Operation;
put?: Oas2Operation;
post?: Oas2Operation;
delete?: Oas2Operation;
options?: Oas2Operation;
head?: Oas2Operation;
patch?: Oas2Operation;
parameters?: Array<Referenced<Oas2Parameter>>;
}
export interface Oas2XCodeSample {
lang: string;
label?: string;
source: string;
}
export interface Oas2Operation {
tags?: string[];
consumes?: string[];
produces?: string[];
schemes?: string[];
summary?: string;
description?: string;
externalDocs?: Oas2ExternalDocs;
operationId?: string;
parameters?: Array<Referenced<Oas2Parameter>>;
responses: Oas2Responses;
deprecated?: boolean;
security?: Oas2SecurityRequirement[];
'x-codeSamples'?: Oas2XCodeSample[];
'x-code-samples'?: Oas2XCodeSample[]; // deprecated
'x-hideTryItPanel'?: boolean;
}
export type Oas2Parameter = Oas2BodyParameter | Oas2SimpleParameter;
export interface Oas2BodyParameter {
name: string;
in: 'body';
schema: Oas2Schema;
description?: string;
required?: boolean;
}
export interface Oas2SimpleParameter {
name: string;
in: Oas2ParameterLocation;
description?: string;
required?: boolean;
type: 'string' | 'number' | 'integer' | 'boolean' | 'array' | 'file';
format?: string;
allowEmptyValue?: boolean;
items?: Oas2Items;
collectionFormat?: 'csv' | 'ssv' | 'tsv' | 'pipes' | 'multi';
default?: any;
maximum?: number;
exclusiveMaximum?: boolean;
minimum?: number;
exclusiveMinimum?: boolean;
maxLength?: number;
minLength?: number;
pattern?: string;
maxItems?: number;
minItems?: number;
uniqueItems?: boolean;
enum?: any[];
multipleOf?: number;
}
export interface Oas2Items {
type: 'string' | 'number' | 'integer' | 'boolean' | 'array';
format?: string;
allowEmptyValue?: boolean;
items?: Oas2Items;
collectionFormat?: 'csv' | 'ssv' | 'tsv' | 'pipes' | 'multi';
default?: any;
maximum?: number;
exclusiveMaximum?: boolean;
minimum?: number;
exclusiveMinimum?: boolean;
maxLength?: number;
minLength?: number;
pattern?: string;
maxItems?: number;
minItems?: number;
uniqueItems?: boolean;
enum?: any[];
multipleOf?: number;
}
export interface Oas2Xml {
name?: string;
namespace?: string;
prefix?: string;
attribute?: string;
wrapped?: string;
}
export interface Oas2Schema {
$ref?: string;
type?: string;
properties?: { [name: string]: Oas2Schema };
additionalProperties?: boolean | Oas2Schema;
description?: string;
default?: any;
items?: Oas2Schema;
required?: string[];
readOnly?: boolean;
deprecated?: boolean;
format?: string;
externalDocs?: Oas2ExternalDocs;
discriminator?: string;
nullable?: boolean;
allOf?: Oas2Schema[];
title?: string;
multipleOf?: number;
maximum?: number;
exclusiveMaximum?: boolean;
minimum?: number;
exclusiveMinimum?: boolean;
maxLength?: number;
minLength?: number;
pattern?: string;
maxItems?: number;
minItems?: number;
uniqueItems?: boolean;
maxProperties?: number;
minProperties?: number;
enum?: any[];
example?: any;
xml?: Oas2Xml;
'x-tags'?: string[];
}
export type Oas2ParameterLocation = 'query' | 'header' | 'path' | 'formData';
export interface Oas2Responses {
[code: string]: Oas2Response;
}
export type Oas2Header = Oas2Items & { description?: 'string' };
export interface Oas2Response {
description?: string;
schema: Referenced<Schema>;
examples?: Record<string, any>;
headers?: Record<string, Oas2Header>;
}
export interface Oas2SecurityRequirement {
[name: string]: string[];
}
export interface Oas2SecurityScheme {
type: 'basic' | 'apiKey' | 'oauth2';
description?: string;
name?: string;
in?: 'query' | 'header' | 'cookie';
scheme?: string;
flow: 'implicit' | 'password' | 'application' | 'accessCode';
authorizationUrl?: string;
tokenUrl?: string;
scopes?: Record<string, string>;
}
export interface Oas2Tag {
name: string;
description?: string;
externalDocs?: Oas2ExternalDocs;
'x-displayName'?: string;
}
export interface Oas2ExternalDocs {
description?: string;
url: string;
}
export interface Oas2Contact {
name?: string;
url?: string;
email?: string;
}
export interface Oas2License {
name: string;
url?: string;
}