UNPKG

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