UNPKG

15.5 kBTypeScriptView Raw
1import { JsonSchemaDraft04 } from './jsonSchemaDraft04';
2export declare namespace OpenApisV2 {
3 interface SchemaJson {
4 swagger: '2.0';
5 info: SchemaJson.Definitions.Info;
6 host?: string;
7 basePath?: string;
8 schemes?: SchemaJson.Definitions.SchemesList;
9 consumes?: SchemaJson.Definitions.MimeType[];
10 produces?: SchemaJson.Definitions.MimeType[];
11 paths: SchemaJson.Definitions.Paths;
12 definitions?: SchemaJson.Definitions.Definitions;
13 parameters?: SchemaJson.Definitions.ParameterDefinitions;
14 responses?: SchemaJson.Definitions.ResponseDefinitions;
15 security?: SchemaJson.Definitions.Security;
16 securityDefinitions?: SchemaJson.Definitions.SecurityDefinitions;
17 tags?: SchemaJson.Definitions.Tag[];
18 externalDocs?: SchemaJson.Definitions.ExternalDocs;
19 }
20 namespace SchemaJson {
21 namespace Definitions {
22 interface ApiKeySecurity {
23 type: 'apiKey';
24 name: string;
25 in: 'header' | 'query';
26 description?: string;
27 }
28 interface BasicAuthenticationSecurity {
29 type: 'basic';
30 description?: string;
31 }
32 interface BodyParameter {
33 description?: string;
34 name: string;
35 in: 'body';
36 required?: boolean;
37 schema: Schema;
38 }
39 type CollectionFormat = 'csv' | 'ssv' | 'tsv' | 'pipes';
40 type CollectionFormatWithMulti = 'csv' | 'ssv' | 'tsv' | 'pipes' | 'multi';
41 interface Contact {
42 name?: string;
43 url?: string;
44 email?: string;
45 }
46 type Default = JsonSchemaDraft04.Schema.Properties.Default;
47 interface Definitions {
48 [name: string]: Schema;
49 }
50 type Enum = JsonSchemaDraft04.Schema.Properties.Enum;
51 interface Examples {
52 [name: string]: any;
53 }
54 type ExclusiveMaximum = JsonSchemaDraft04.Schema.Properties.ExclusiveMaximum;
55 type ExclusiveMinimum = JsonSchemaDraft04.Schema.Properties.ExclusiveMinimum;
56 interface ExternalDocs {
57 description?: string;
58 url: string;
59 }
60 interface FileSchema {
61 format?: string;
62 title?: JsonSchemaDraft04.Schema.Properties.Title;
63 description?: JsonSchemaDraft04.Schema.Properties.Description;
64 default?: JsonSchemaDraft04.Schema.Properties.Default;
65 required?: JsonSchemaDraft04.Schema.Definitions.StringArray;
66 type: 'file';
67 readOnly?: boolean;
68 externalDocs?: ExternalDocs;
69 example?: any;
70 }
71 interface FormDataParameterSubSchema {
72 required?: boolean;
73 in: 'formData';
74 description?: string;
75 name: string;
76 allowEmptyValue?: boolean;
77 type?: 'string' | 'number' | 'boolean' | 'integer' | 'array' | 'file';
78 format?: string;
79 items?: PrimitivesItems;
80 collectionFormat?: CollectionFormatWithMulti;
81 default?: Default;
82 maximum?: Maximum;
83 exclusiveMaximum?: ExclusiveMaximum;
84 minimum?: Minimum;
85 exclusiveMinimum?: ExclusiveMinimum;
86 maxLength?: MaxLength;
87 minLength?: MinLength;
88 pattern?: Pattern;
89 maxItems?: MaxItems;
90 minItems?: MinItems;
91 uniqueItems?: UniqueItems;
92 enum?: Enum;
93 multipleOf?: MultipleOf;
94 }
95 interface Header {
96 type: 'string' | 'number' | 'integer' | 'boolean' | 'array';
97 format?: string;
98 items?: PrimitivesItems;
99 collectionFormat?: CollectionFormat;
100 default?: Default;
101 maximum?: Maximum;
102 exclusiveMaximum?: ExclusiveMaximum;
103 minimum?: Minimum;
104 exclusiveMinimum?: ExclusiveMinimum;
105 maxLength?: MaxLength;
106 minLength?: MinLength;
107 pattern?: Pattern;
108 maxItems?: MaxItems;
109 minItems?: MinItems;
110 uniqueItems?: UniqueItems;
111 enum?: Enum;
112 multipleOf?: MultipleOf;
113 description?: string;
114 }
115 interface HeaderParameterSubSchema {
116 required?: boolean;
117 in: 'header';
118 description?: string;
119 name: string;
120 type?: 'string' | 'number' | 'boolean' | 'integer' | 'array';
121 format?: string;
122 items?: PrimitivesItems;
123 collectionFormat?: CollectionFormat;
124 default?: Default;
125 maximum?: Maximum;
126 exclusiveMaximum?: ExclusiveMaximum;
127 minimum?: Minimum;
128 exclusiveMinimum?: ExclusiveMinimum;
129 maxLength?: MaxLength;
130 minLength?: MinLength;
131 pattern?: Pattern;
132 maxItems?: MaxItems;
133 minItems?: MinItems;
134 uniqueItems?: UniqueItems;
135 enum?: Enum;
136 multipleOf?: MultipleOf;
137 }
138 interface Headers {
139 [name: string]: Header;
140 }
141 interface Info {
142 title: string;
143 version: string;
144 description?: string;
145 termsOfService?: string;
146 contact?: Contact;
147 license?: License;
148 }
149 interface JsonReference {
150 $ref: string;
151 }
152 interface License {
153 name: string;
154 url?: string;
155 }
156 type MaxItems = JsonSchemaDraft04.Schema.Definitions.PositiveInteger;
157 type MaxLength = JsonSchemaDraft04.Schema.Definitions.PositiveInteger;
158 type Maximum = JsonSchemaDraft04.Schema.Properties.Maximum;
159 type MediaTypeList = MimeType[];
160 type MimeType = string;
161 type MinItems = JsonSchemaDraft04.Schema.Definitions.PositiveIntegerDefault0;
162 type MinLength = JsonSchemaDraft04.Schema.Definitions.PositiveIntegerDefault0;
163 type Minimum = JsonSchemaDraft04.Schema.Properties.Minimum;
164 type MultipleOf = JsonSchemaDraft04.Schema.Properties.MultipleOf;
165 type NonBodyParameter = HeaderParameterSubSchema | FormDataParameterSubSchema | QueryParameterSubSchema | PathParameterSubSchema;
166 interface Oauth2AccessCodeSecurity {
167 type: 'oauth2';
168 flow: 'accessCode';
169 scopes?: Oauth2Scopes;
170 authorizationUrl: string;
171 tokenUrl: string;
172 description?: string;
173 }
174 interface Oauth2ApplicationSecurity {
175 type: 'oauth2';
176 flow: 'application';
177 scopes?: Oauth2Scopes;
178 tokenUrl: string;
179 description?: string;
180 }
181 interface Oauth2ImplicitSecurity {
182 type: 'oauth2';
183 flow: 'implicit';
184 scopes?: Oauth2Scopes;
185 authorizationUrl: string;
186 description?: string;
187 }
188 interface Oauth2PasswordSecurity {
189 type: 'oauth2';
190 flow: 'password';
191 scopes?: Oauth2Scopes;
192 tokenUrl: string;
193 description?: string;
194 }
195 interface Oauth2Scopes {
196 [name: string]: string;
197 }
198 interface Operation {
199 tags?: string[];
200 summary?: string;
201 description?: string;
202 externalDocs?: ExternalDocs;
203 operationId?: string;
204 produces?: MimeType[];
205 consumes?: MimeType[];
206 parameters?: ParametersList;
207 responses: Responses;
208 schemes?: SchemesList;
209 deprecated?: boolean;
210 security?: Security;
211 }
212 type Parameter = BodyParameter | NonBodyParameter;
213 interface ParameterDefinitions {
214 [name: string]: Parameter;
215 }
216 type ParametersList = (Parameter | JsonReference)[];
217 interface PathItem {
218 $ref?: string;
219 get?: Operation;
220 put?: Operation;
221 post?: Operation;
222 delete?: Operation;
223 options?: Operation;
224 head?: Operation;
225 patch?: Operation;
226 parameters?: ParametersList;
227 }
228 interface PathParameterSubSchema {
229 required: true;
230 in: 'path';
231 description?: string;
232 name: string;
233 type?: 'string' | 'number' | 'boolean' | 'integer' | 'array';
234 format?: string;
235 items?: PrimitivesItems;
236 collectionFormat?: CollectionFormat;
237 default?: Default;
238 maximum?: Maximum;
239 exclusiveMaximum?: ExclusiveMaximum;
240 minimum?: Minimum;
241 exclusiveMinimum?: ExclusiveMinimum;
242 maxLength?: MaxLength;
243 minLength?: MinLength;
244 pattern?: Pattern;
245 maxItems?: MaxItems;
246 minItems?: MinItems;
247 uniqueItems?: UniqueItems;
248 enum?: Enum;
249 multipleOf?: MultipleOf;
250 }
251 interface Paths {
252 [pattern: string]: PathItem;
253 }
254 type Pattern = JsonSchemaDraft04.Schema.Properties.Pattern;
255 interface PrimitivesItems {
256 type?: 'string' | 'number' | 'integer' | 'boolean' | 'array';
257 format?: string;
258 items?: PrimitivesItems;
259 collectionFormat?: CollectionFormat;
260 default?: Default;
261 maximum?: Maximum;
262 exclusiveMaximum?: ExclusiveMaximum;
263 minimum?: Minimum;
264 exclusiveMinimum?: ExclusiveMinimum;
265 maxLength?: MaxLength;
266 minLength?: MinLength;
267 pattern?: Pattern;
268 maxItems?: MaxItems;
269 minItems?: MinItems;
270 uniqueItems?: UniqueItems;
271 enum?: Enum;
272 multipleOf?: MultipleOf;
273 }
274 interface QueryParameterSubSchema {
275 required?: boolean;
276 in: 'query';
277 description?: string;
278 name: string;
279 allowEmptyValue?: boolean;
280 type?: 'string' | 'number' | 'boolean' | 'integer' | 'array';
281 format?: string;
282 items?: PrimitivesItems;
283 collectionFormat?: CollectionFormatWithMulti;
284 default?: Default;
285 maximum?: Maximum;
286 exclusiveMaximum?: ExclusiveMaximum;
287 minimum?: Minimum;
288 exclusiveMinimum?: ExclusiveMinimum;
289 maxLength?: MaxLength;
290 minLength?: MinLength;
291 pattern?: Pattern;
292 maxItems?: MaxItems;
293 minItems?: MinItems;
294 uniqueItems?: UniqueItems;
295 enum?: Enum;
296 multipleOf?: MultipleOf;
297 }
298 interface Response {
299 description: string;
300 schema?: Schema | FileSchema;
301 headers?: Headers;
302 examples?: Examples;
303 }
304 interface ResponseDefinitions {
305 [name: string]: Response;
306 }
307 type ResponseValue = Response | JsonReference;
308 interface Responses {
309 [pattern: string]: ResponseValue;
310 }
311 interface Schema {
312 $ref?: string;
313 format?: string;
314 title?: JsonSchemaDraft04.Schema.Properties.Title;
315 description?: JsonSchemaDraft04.Schema.Properties.Description;
316 default?: JsonSchemaDraft04.Schema.Properties.Default;
317 multipleOf?: JsonSchemaDraft04.Schema.Properties.MultipleOf;
318 maximum?: JsonSchemaDraft04.Schema.Properties.Maximum;
319 exclusiveMaximum?: JsonSchemaDraft04.Schema.Properties.ExclusiveMaximum;
320 minimum?: JsonSchemaDraft04.Schema.Properties.Minimum;
321 exclusiveMinimum?: JsonSchemaDraft04.Schema.Properties.ExclusiveMinimum;
322 maxLength?: JsonSchemaDraft04.Schema.Definitions.PositiveInteger;
323 minLength?: JsonSchemaDraft04.Schema.Definitions.PositiveIntegerDefault0;
324 pattern?: JsonSchemaDraft04.Schema.Properties.Pattern;
325 maxItems?: JsonSchemaDraft04.Schema.Definitions.PositiveInteger;
326 minItems?: JsonSchemaDraft04.Schema.Definitions.PositiveIntegerDefault0;
327 uniqueItems?: JsonSchemaDraft04.Schema.Properties.UniqueItems;
328 maxProperties?: JsonSchemaDraft04.Schema.Definitions.PositiveInteger;
329 minProperties?: JsonSchemaDraft04.Schema.Definitions.PositiveIntegerDefault0;
330 required?: JsonSchemaDraft04.Schema.Definitions.StringArray;
331 enum?: JsonSchemaDraft04.Schema.Properties.Enum;
332 additionalProperties?: Schema | boolean;
333 type?: JsonSchemaDraft04.Schema.Properties.Type;
334 items?: Schema | [
335 Schema,
336 ...Schema[]
337 ];
338 allOf?: [
339 Schema,
340 ...Schema[]
341 ];
342 properties?: {
343 [name: string]: Schema;
344 };
345 discriminator?: string;
346 readOnly?: boolean;
347 xml?: Xml;
348 externalDocs?: ExternalDocs;
349 example?: any;
350 }
351 type SchemesList = ('http' | 'https' | 'ws' | 'wss')[];
352 type Security = SecurityRequirement[];
353 interface SecurityDefinitions {
354 [name: string]: BasicAuthenticationSecurity | ApiKeySecurity | Oauth2ImplicitSecurity | Oauth2PasswordSecurity | Oauth2ApplicationSecurity | Oauth2AccessCodeSecurity;
355 }
356 interface SecurityRequirement {
357 [name: string]: string[];
358 }
359 interface Tag {
360 name: string;
361 description?: string;
362 externalDocs?: ExternalDocs;
363 }
364 type UniqueItems = JsonSchemaDraft04.Schema.Properties.UniqueItems;
365 interface Xml {
366 name?: string;
367 namespace?: string;
368 prefix?: string;
369 attribute?: boolean;
370 wrapped?: boolean;
371 }
372 }
373 }
374}
375export import SwaggerIo = OpenApisV2;