dtsgenerator
Version:
TypeScript d.ts file generator for JSON Schema file
354 lines (353 loc) • 15.1 kB
TypeScript
import { JsonSchemaDraft04 } from './jsonSchemaDraft04';
export declare namespace OpenApisV2 {
interface SchemaJson {
swagger: '2.0';
info: SchemaJson.Definitions.Info;
host?: string;
basePath?: string;
schemes?: SchemaJson.Definitions.SchemesList;
consumes?: SchemaJson.Definitions.MimeType[];
produces?: SchemaJson.Definitions.MimeType[];
paths: SchemaJson.Definitions.Paths;
definitions?: SchemaJson.Definitions.Definitions;
parameters?: SchemaJson.Definitions.ParameterDefinitions;
responses?: SchemaJson.Definitions.ResponseDefinitions;
security?: SchemaJson.Definitions.Security;
securityDefinitions?: SchemaJson.Definitions.SecurityDefinitions;
tags?: SchemaJson.Definitions.Tag[];
externalDocs?: SchemaJson.Definitions.ExternalDocs;
}
namespace SchemaJson {
namespace Definitions {
interface ApiKeySecurity {
type: 'apiKey';
name: string;
in: 'header' | 'query';
description?: string;
}
interface BasicAuthenticationSecurity {
type: 'basic';
description?: string;
}
interface BodyParameter {
description?: string;
name: string;
in: 'body';
required?: boolean;
schema: Schema;
}
type CollectionFormat = 'csv' | 'ssv' | 'tsv' | 'pipes';
type CollectionFormatWithMulti = 'csv' | 'ssv' | 'tsv' | 'pipes' | 'multi';
interface Contact {
name?: string;
url?: string;
email?: string;
}
type Default = JsonSchemaDraft04.Schema.Properties.Default;
type Definitions = Record<string, Schema>;
type Enum = JsonSchemaDraft04.Schema.Properties.Enum;
type Examples = Record<string, any>;
type ExclusiveMaximum = JsonSchemaDraft04.Schema.Properties.ExclusiveMaximum;
type ExclusiveMinimum = JsonSchemaDraft04.Schema.Properties.ExclusiveMinimum;
interface ExternalDocs {
description?: string;
url: string;
}
interface FileSchema {
format?: string;
title?: JsonSchemaDraft04.Schema.Properties.Title;
description?: JsonSchemaDraft04.Schema.Properties.Description;
default?: JsonSchemaDraft04.Schema.Properties.Default;
required?: JsonSchemaDraft04.Schema.Definitions.StringArray;
type: 'file';
readOnly?: boolean;
externalDocs?: ExternalDocs;
example?: any;
}
interface FormDataParameterSubSchema {
required?: boolean;
in: 'formData';
description?: string;
name: string;
allowEmptyValue?: boolean;
type?: 'string' | 'number' | 'boolean' | 'integer' | 'array' | 'file';
format?: string;
items?: PrimitivesItems;
collectionFormat?: CollectionFormatWithMulti;
default?: Default;
maximum?: Maximum;
exclusiveMaximum?: ExclusiveMaximum;
minimum?: Minimum;
exclusiveMinimum?: ExclusiveMinimum;
maxLength?: MaxLength;
minLength?: MinLength;
pattern?: Pattern;
maxItems?: MaxItems;
minItems?: MinItems;
uniqueItems?: UniqueItems;
enum?: Enum;
multipleOf?: MultipleOf;
}
interface Header {
type: 'string' | 'number' | 'integer' | 'boolean' | 'array';
format?: string;
items?: PrimitivesItems;
collectionFormat?: CollectionFormat;
default?: Default;
maximum?: Maximum;
exclusiveMaximum?: ExclusiveMaximum;
minimum?: Minimum;
exclusiveMinimum?: ExclusiveMinimum;
maxLength?: MaxLength;
minLength?: MinLength;
pattern?: Pattern;
maxItems?: MaxItems;
minItems?: MinItems;
uniqueItems?: UniqueItems;
enum?: Enum;
multipleOf?: MultipleOf;
description?: string;
}
interface HeaderParameterSubSchema {
required?: boolean;
in: 'header';
description?: string;
name: string;
type?: 'string' | 'number' | 'boolean' | 'integer' | 'array';
format?: string;
items?: PrimitivesItems;
collectionFormat?: CollectionFormat;
default?: Default;
maximum?: Maximum;
exclusiveMaximum?: ExclusiveMaximum;
minimum?: Minimum;
exclusiveMinimum?: ExclusiveMinimum;
maxLength?: MaxLength;
minLength?: MinLength;
pattern?: Pattern;
maxItems?: MaxItems;
minItems?: MinItems;
uniqueItems?: UniqueItems;
enum?: Enum;
multipleOf?: MultipleOf;
}
type Headers = Record<string, Header>;
interface Info {
title: string;
version: string;
description?: string;
termsOfService?: string;
contact?: Contact;
license?: License;
}
interface JsonReference {
$ref: string;
}
interface License {
name: string;
url?: string;
}
type MaxItems = JsonSchemaDraft04.Schema.Definitions.PositiveInteger;
type MaxLength = JsonSchemaDraft04.Schema.Definitions.PositiveInteger;
type Maximum = JsonSchemaDraft04.Schema.Properties.Maximum;
type MediaTypeList = MimeType[];
type MimeType = string;
type MinItems = JsonSchemaDraft04.Schema.Definitions.PositiveIntegerDefault0;
type MinLength = JsonSchemaDraft04.Schema.Definitions.PositiveIntegerDefault0;
type Minimum = JsonSchemaDraft04.Schema.Properties.Minimum;
type MultipleOf = JsonSchemaDraft04.Schema.Properties.MultipleOf;
type NonBodyParameter = HeaderParameterSubSchema | FormDataParameterSubSchema | QueryParameterSubSchema | PathParameterSubSchema;
interface Oauth2AccessCodeSecurity {
type: 'oauth2';
flow: 'accessCode';
scopes?: Oauth2Scopes;
authorizationUrl: string;
tokenUrl: string;
description?: string;
}
interface Oauth2ApplicationSecurity {
type: 'oauth2';
flow: 'application';
scopes?: Oauth2Scopes;
tokenUrl: string;
description?: string;
}
interface Oauth2ImplicitSecurity {
type: 'oauth2';
flow: 'implicit';
scopes?: Oauth2Scopes;
authorizationUrl: string;
description?: string;
}
interface Oauth2PasswordSecurity {
type: 'oauth2';
flow: 'password';
scopes?: Oauth2Scopes;
tokenUrl: string;
description?: string;
}
type Oauth2Scopes = Record<string, string>;
interface Operation {
tags?: string[];
summary?: string;
description?: string;
externalDocs?: ExternalDocs;
operationId?: string;
produces?: MimeType[];
consumes?: MimeType[];
parameters?: ParametersList;
responses: Responses;
schemes?: SchemesList;
deprecated?: boolean;
security?: Security;
}
type Parameter = BodyParameter | NonBodyParameter;
type ParameterDefinitions = Record<string, Parameter>;
type ParametersList = (Parameter | JsonReference)[];
interface PathItem {
$ref?: string;
get?: Operation;
put?: Operation;
post?: Operation;
delete?: Operation;
options?: Operation;
head?: Operation;
patch?: Operation;
parameters?: ParametersList;
}
interface PathParameterSubSchema {
required: true;
in: 'path';
description?: string;
name: string;
type?: 'string' | 'number' | 'boolean' | 'integer' | 'array';
format?: string;
items?: PrimitivesItems;
collectionFormat?: CollectionFormat;
default?: Default;
maximum?: Maximum;
exclusiveMaximum?: ExclusiveMaximum;
minimum?: Minimum;
exclusiveMinimum?: ExclusiveMinimum;
maxLength?: MaxLength;
minLength?: MinLength;
pattern?: Pattern;
maxItems?: MaxItems;
minItems?: MinItems;
uniqueItems?: UniqueItems;
enum?: Enum;
multipleOf?: MultipleOf;
}
type Paths = Record<string, PathItem>;
type Pattern = JsonSchemaDraft04.Schema.Properties.Pattern;
interface PrimitivesItems {
type?: 'string' | 'number' | 'integer' | 'boolean' | 'array';
format?: string;
items?: PrimitivesItems;
collectionFormat?: CollectionFormat;
default?: Default;
maximum?: Maximum;
exclusiveMaximum?: ExclusiveMaximum;
minimum?: Minimum;
exclusiveMinimum?: ExclusiveMinimum;
maxLength?: MaxLength;
minLength?: MinLength;
pattern?: Pattern;
maxItems?: MaxItems;
minItems?: MinItems;
uniqueItems?: UniqueItems;
enum?: Enum;
multipleOf?: MultipleOf;
}
interface QueryParameterSubSchema {
required?: boolean;
in: 'query';
description?: string;
name: string;
allowEmptyValue?: boolean;
type?: 'string' | 'number' | 'boolean' | 'integer' | 'array';
format?: string;
items?: PrimitivesItems;
collectionFormat?: CollectionFormatWithMulti;
default?: Default;
maximum?: Maximum;
exclusiveMaximum?: ExclusiveMaximum;
minimum?: Minimum;
exclusiveMinimum?: ExclusiveMinimum;
maxLength?: MaxLength;
minLength?: MinLength;
pattern?: Pattern;
maxItems?: MaxItems;
minItems?: MinItems;
uniqueItems?: UniqueItems;
enum?: Enum;
multipleOf?: MultipleOf;
}
interface Response {
description: string;
schema?: Schema | FileSchema;
headers?: Headers;
examples?: Examples;
}
type ResponseDefinitions = Record<string, Response>;
type ResponseValue = Response | JsonReference;
type Responses = Record<string, ResponseValue>;
interface Schema {
$ref?: string;
format?: string;
title?: JsonSchemaDraft04.Schema.Properties.Title;
description?: JsonSchemaDraft04.Schema.Properties.Description;
default?: JsonSchemaDraft04.Schema.Properties.Default;
multipleOf?: JsonSchemaDraft04.Schema.Properties.MultipleOf;
maximum?: JsonSchemaDraft04.Schema.Properties.Maximum;
exclusiveMaximum?: JsonSchemaDraft04.Schema.Properties.ExclusiveMaximum;
minimum?: JsonSchemaDraft04.Schema.Properties.Minimum;
exclusiveMinimum?: JsonSchemaDraft04.Schema.Properties.ExclusiveMinimum;
maxLength?: JsonSchemaDraft04.Schema.Definitions.PositiveInteger;
minLength?: JsonSchemaDraft04.Schema.Definitions.PositiveIntegerDefault0;
pattern?: JsonSchemaDraft04.Schema.Properties.Pattern;
maxItems?: JsonSchemaDraft04.Schema.Definitions.PositiveInteger;
minItems?: JsonSchemaDraft04.Schema.Definitions.PositiveIntegerDefault0;
uniqueItems?: JsonSchemaDraft04.Schema.Properties.UniqueItems;
maxProperties?: JsonSchemaDraft04.Schema.Definitions.PositiveInteger;
minProperties?: JsonSchemaDraft04.Schema.Definitions.PositiveIntegerDefault0;
required?: JsonSchemaDraft04.Schema.Definitions.StringArray;
enum?: JsonSchemaDraft04.Schema.Properties.Enum;
additionalProperties?: Schema | boolean;
type?: JsonSchemaDraft04.Schema.Properties.Type;
items?: Schema | [
Schema,
...Schema[]
];
allOf?: [
Schema,
...Schema[]
];
properties?: Record<string, Schema>;
discriminator?: string;
readOnly?: boolean;
xml?: Xml;
externalDocs?: ExternalDocs;
example?: any;
}
type SchemesList = ('http' | 'https' | 'ws' | 'wss')[];
type Security = SecurityRequirement[];
type SecurityDefinitions = Record<string, BasicAuthenticationSecurity | ApiKeySecurity | Oauth2ImplicitSecurity | Oauth2PasswordSecurity | Oauth2ApplicationSecurity | Oauth2AccessCodeSecurity>;
type SecurityRequirement = Record<string, string[]>;
interface Tag {
name: string;
description?: string;
externalDocs?: ExternalDocs;
}
type UniqueItems = JsonSchemaDraft04.Schema.Properties.UniqueItems;
interface Xml {
name?: string;
namespace?: string;
prefix?: string;
attribute?: boolean;
wrapped?: boolean;
}
}
}
}
export import SwaggerIo = OpenApisV2;