blob: 2815a26ea718c25ab018efd391bc5bfd16d5722f [file] [log] [blame]
Zack Williamse940c7a2019-08-21 14:25:39 -07001{
2 "title": "A JSON Schema for Swagger 2.0 API.",
3 "id": "http://swagger.io/v2/schema.json#",
4 "$schema": "http://json-schema.org/draft-04/schema#",
5 "type": "object",
6 "required": [
7 "swagger",
8 "info",
9 "paths"
10 ],
11 "additionalProperties": false,
12 "patternProperties": {
13 "^x-": {
14 "$ref": "#/definitions/vendorExtension"
15 }
16 },
17 "properties": {
18 "swagger": {
19 "type": "string",
20 "enum": [
21 "2.0"
22 ],
23 "description": "The Swagger version of this document."
24 },
25 "info": {
26 "$ref": "#/definitions/info"
27 },
28 "host": {
29 "type": "string",
30 "pattern": "^[^{}/ :\\\\]+(?::\\d+)?$",
31 "description": "The host (name or ip) of the API. Example: 'swagger.io'"
32 },
33 "basePath": {
34 "type": "string",
35 "pattern": "^/",
36 "description": "The base path to the API. Example: '/api'."
37 },
38 "schemes": {
39 "$ref": "#/definitions/schemesList"
40 },
41 "consumes": {
42 "description": "A list of MIME types accepted by the API.",
43 "allOf": [
44 {
45 "$ref": "#/definitions/mediaTypeList"
46 }
47 ]
48 },
49 "produces": {
50 "description": "A list of MIME types the API can produce.",
51 "allOf": [
52 {
53 "$ref": "#/definitions/mediaTypeList"
54 }
55 ]
56 },
57 "paths": {
58 "$ref": "#/definitions/paths"
59 },
60 "definitions": {
61 "$ref": "#/definitions/definitions"
62 },
63 "parameters": {
64 "$ref": "#/definitions/parameterDefinitions"
65 },
66 "responses": {
67 "$ref": "#/definitions/responseDefinitions"
68 },
69 "security": {
70 "$ref": "#/definitions/security"
71 },
72 "securityDefinitions": {
73 "$ref": "#/definitions/securityDefinitions"
74 },
75 "tags": {
76 "type": "array",
77 "items": {
78 "$ref": "#/definitions/tag"
79 },
80 "uniqueItems": true
81 },
82 "externalDocs": {
83 "$ref": "#/definitions/externalDocs"
84 }
85 },
86 "definitions": {
87 "info": {
88 "type": "object",
89 "description": "General information about the API.",
90 "required": [
91 "version",
92 "title"
93 ],
94 "additionalProperties": false,
95 "patternProperties": {
96 "^x-": {
97 "$ref": "#/definitions/vendorExtension"
98 }
99 },
100 "properties": {
101 "title": {
102 "type": "string",
103 "description": "A unique and precise title of the API."
104 },
105 "version": {
106 "type": "string",
107 "description": "A semantic version number of the API."
108 },
109 "description": {
110 "type": "string",
111 "description": "A longer description of the API. Should be different from the title. GitHub Flavored Markdown is allowed."
112 },
113 "termsOfService": {
114 "type": "string",
115 "description": "The terms of service for the API."
116 },
117 "contact": {
118 "$ref": "#/definitions/contact"
119 },
120 "license": {
121 "$ref": "#/definitions/license"
122 }
123 }
124 },
125 "contact": {
126 "type": "object",
127 "description": "Contact information for the owners of the API.",
128 "additionalProperties": false,
129 "properties": {
130 "name": {
131 "type": "string",
132 "description": "The identifying name of the contact person/organization."
133 },
134 "url": {
135 "type": "string",
136 "description": "The URL pointing to the contact information.",
137 "format": "uri"
138 },
139 "email": {
140 "type": "string",
141 "description": "The email address of the contact person/organization.",
142 "format": "email"
143 }
144 },
145 "patternProperties": {
146 "^x-": {
147 "$ref": "#/definitions/vendorExtension"
148 }
149 }
150 },
151 "license": {
152 "type": "object",
153 "required": [
154 "name"
155 ],
156 "additionalProperties": false,
157 "properties": {
158 "name": {
159 "type": "string",
160 "description": "The name of the license type. It's encouraged to use an OSI compatible license."
161 },
162 "url": {
163 "type": "string",
164 "description": "The URL pointing to the license.",
165 "format": "uri"
166 }
167 },
168 "patternProperties": {
169 "^x-": {
170 "$ref": "#/definitions/vendorExtension"
171 }
172 }
173 },
174 "paths": {
175 "type": "object",
176 "description": "Relative paths to the individual endpoints. They must be relative to the 'basePath'.",
177 "patternProperties": {
178 "^x-": {
179 "$ref": "#/definitions/vendorExtension"
180 },
181 "^/": {
182 "$ref": "#/definitions/pathItem"
183 }
184 },
185 "additionalProperties": false
186 },
187 "definitions": {
188 "type": "object",
189 "additionalProperties": {
190 "$ref": "#/definitions/schema"
191 },
192 "description": "One or more JSON objects describing the schemas being consumed and produced by the API."
193 },
194 "parameterDefinitions": {
195 "type": "object",
196 "additionalProperties": {
197 "$ref": "#/definitions/parameter"
198 },
199 "description": "One or more JSON representations for parameters"
200 },
201 "responseDefinitions": {
202 "type": "object",
203 "additionalProperties": {
204 "$ref": "#/definitions/response"
205 },
206 "description": "One or more JSON representations for parameters"
207 },
208 "externalDocs": {
209 "type": "object",
210 "additionalProperties": false,
211 "description": "information about external documentation",
212 "required": [
213 "url"
214 ],
215 "properties": {
216 "description": {
217 "type": "string"
218 },
219 "url": {
220 "type": "string",
221 "format": "uri"
222 }
223 },
224 "patternProperties": {
225 "^x-": {
226 "$ref": "#/definitions/vendorExtension"
227 }
228 }
229 },
230 "examples": {
231 "type": "object",
232 "additionalProperties": true
233 },
234 "mimeType": {
235 "type": "string",
236 "description": "The MIME type of the HTTP message."
237 },
238 "operation": {
239 "type": "object",
240 "required": [
241 "responses"
242 ],
243 "additionalProperties": false,
244 "patternProperties": {
245 "^x-": {
246 "$ref": "#/definitions/vendorExtension"
247 }
248 },
249 "properties": {
250 "tags": {
251 "type": "array",
252 "items": {
253 "type": "string"
254 },
255 "uniqueItems": true
256 },
257 "summary": {
258 "type": "string",
259 "description": "A brief summary of the operation."
260 },
261 "description": {
262 "type": "string",
263 "description": "A longer description of the operation, GitHub Flavored Markdown is allowed."
264 },
265 "externalDocs": {
266 "$ref": "#/definitions/externalDocs"
267 },
268 "operationId": {
269 "type": "string",
270 "description": "A unique identifier of the operation."
271 },
272 "produces": {
273 "description": "A list of MIME types the API can produce.",
274 "allOf": [
275 {
276 "$ref": "#/definitions/mediaTypeList"
277 }
278 ]
279 },
280 "consumes": {
281 "description": "A list of MIME types the API can consume.",
282 "allOf": [
283 {
284 "$ref": "#/definitions/mediaTypeList"
285 }
286 ]
287 },
288 "parameters": {
289 "$ref": "#/definitions/parametersList"
290 },
291 "responses": {
292 "$ref": "#/definitions/responses"
293 },
294 "schemes": {
295 "$ref": "#/definitions/schemesList"
296 },
297 "deprecated": {
298 "type": "boolean",
299 "default": false
300 },
301 "security": {
302 "$ref": "#/definitions/security"
303 }
304 }
305 },
306 "pathItem": {
307 "type": "object",
308 "additionalProperties": false,
309 "patternProperties": {
310 "^x-": {
311 "$ref": "#/definitions/vendorExtension"
312 }
313 },
314 "properties": {
315 "$ref": {
316 "type": "string"
317 },
318 "get": {
319 "$ref": "#/definitions/operation"
320 },
321 "put": {
322 "$ref": "#/definitions/operation"
323 },
324 "post": {
325 "$ref": "#/definitions/operation"
326 },
327 "delete": {
328 "$ref": "#/definitions/operation"
329 },
330 "options": {
331 "$ref": "#/definitions/operation"
332 },
333 "head": {
334 "$ref": "#/definitions/operation"
335 },
336 "patch": {
337 "$ref": "#/definitions/operation"
338 },
339 "parameters": {
340 "$ref": "#/definitions/parametersList"
341 }
342 }
343 },
344 "responses": {
345 "type": "object",
346 "description": "Response objects names can either be any valid HTTP status code or 'default'.",
347 "minProperties": 1,
348 "additionalProperties": false,
349 "patternProperties": {
350 "^([0-9]{3})$|^(default)$": {
351 "$ref": "#/definitions/responseValue"
352 },
353 "^x-": {
354 "$ref": "#/definitions/vendorExtension"
355 }
356 },
357 "not": {
358 "type": "object",
359 "additionalProperties": false,
360 "patternProperties": {
361 "^x-": {
362 "$ref": "#/definitions/vendorExtension"
363 }
364 }
365 }
366 },
367 "responseValue": {
368 "oneOf": [
369 {
370 "$ref": "#/definitions/response"
371 },
372 {
373 "$ref": "#/definitions/jsonReference"
374 }
375 ]
376 },
377 "response": {
378 "type": "object",
379 "required": [
380 "description"
381 ],
382 "properties": {
383 "description": {
384 "type": "string"
385 },
386 "schema": {
387 "oneOf": [
388 {
389 "$ref": "#/definitions/schema"
390 },
391 {
392 "$ref": "#/definitions/fileSchema"
393 }
394 ]
395 },
396 "headers": {
397 "$ref": "#/definitions/headers"
398 },
399 "examples": {
400 "$ref": "#/definitions/examples"
401 }
402 },
403 "additionalProperties": false,
404 "patternProperties": {
405 "^x-": {
406 "$ref": "#/definitions/vendorExtension"
407 }
408 }
409 },
410 "headers": {
411 "type": "object",
412 "additionalProperties": {
413 "$ref": "#/definitions/header"
414 }
415 },
416 "header": {
417 "type": "object",
418 "additionalProperties": false,
419 "required": [
420 "type"
421 ],
422 "properties": {
423 "type": {
424 "type": "string",
425 "enum": [
426 "string",
427 "number",
428 "integer",
429 "boolean",
430 "array"
431 ]
432 },
433 "format": {
434 "type": "string"
435 },
436 "items": {
437 "$ref": "#/definitions/primitivesItems"
438 },
439 "collectionFormat": {
440 "$ref": "#/definitions/collectionFormat"
441 },
442 "default": {
443 "$ref": "#/definitions/default"
444 },
445 "maximum": {
446 "$ref": "#/definitions/maximum"
447 },
448 "exclusiveMaximum": {
449 "$ref": "#/definitions/exclusiveMaximum"
450 },
451 "minimum": {
452 "$ref": "#/definitions/minimum"
453 },
454 "exclusiveMinimum": {
455 "$ref": "#/definitions/exclusiveMinimum"
456 },
457 "maxLength": {
458 "$ref": "#/definitions/maxLength"
459 },
460 "minLength": {
461 "$ref": "#/definitions/minLength"
462 },
463 "pattern": {
464 "$ref": "#/definitions/pattern"
465 },
466 "maxItems": {
467 "$ref": "#/definitions/maxItems"
468 },
469 "minItems": {
470 "$ref": "#/definitions/minItems"
471 },
472 "uniqueItems": {
473 "$ref": "#/definitions/uniqueItems"
474 },
475 "enum": {
476 "$ref": "#/definitions/enum"
477 },
478 "multipleOf": {
479 "$ref": "#/definitions/multipleOf"
480 },
481 "description": {
482 "type": "string"
483 }
484 },
485 "patternProperties": {
486 "^x-": {
487 "$ref": "#/definitions/vendorExtension"
488 }
489 }
490 },
491 "vendorExtension": {
492 "description": "Any property starting with x- is valid.",
493 "additionalProperties": true,
494 "additionalItems": true
495 },
496 "bodyParameter": {
497 "type": "object",
498 "required": [
499 "name",
500 "in",
501 "schema"
502 ],
503 "patternProperties": {
504 "^x-": {
505 "$ref": "#/definitions/vendorExtension"
506 }
507 },
508 "properties": {
509 "description": {
510 "type": "string",
511 "description": "A brief description of the parameter. This could contain examples of use. GitHub Flavored Markdown is allowed."
512 },
513 "name": {
514 "type": "string",
515 "description": "The name of the parameter."
516 },
517 "in": {
518 "type": "string",
519 "description": "Determines the location of the parameter.",
520 "enum": [
521 "body"
522 ]
523 },
524 "required": {
525 "type": "boolean",
526 "description": "Determines whether or not this parameter is required or optional.",
527 "default": false
528 },
529 "schema": {
530 "$ref": "#/definitions/schema"
531 }
532 },
533 "additionalProperties": false
534 },
535 "headerParameterSubSchema": {
536 "additionalProperties": false,
537 "patternProperties": {
538 "^x-": {
539 "$ref": "#/definitions/vendorExtension"
540 }
541 },
542 "properties": {
543 "required": {
544 "type": "boolean",
545 "description": "Determines whether or not this parameter is required or optional.",
546 "default": false
547 },
548 "in": {
549 "type": "string",
550 "description": "Determines the location of the parameter.",
551 "enum": [
552 "header"
553 ]
554 },
555 "description": {
556 "type": "string",
557 "description": "A brief description of the parameter. This could contain examples of use. GitHub Flavored Markdown is allowed."
558 },
559 "name": {
560 "type": "string",
561 "description": "The name of the parameter."
562 },
563 "type": {
564 "type": "string",
565 "enum": [
566 "string",
567 "number",
568 "boolean",
569 "integer",
570 "array"
571 ]
572 },
573 "format": {
574 "type": "string"
575 },
576 "items": {
577 "$ref": "#/definitions/primitivesItems"
578 },
579 "collectionFormat": {
580 "$ref": "#/definitions/collectionFormat"
581 },
582 "default": {
583 "$ref": "#/definitions/default"
584 },
585 "maximum": {
586 "$ref": "#/definitions/maximum"
587 },
588 "exclusiveMaximum": {
589 "$ref": "#/definitions/exclusiveMaximum"
590 },
591 "minimum": {
592 "$ref": "#/definitions/minimum"
593 },
594 "exclusiveMinimum": {
595 "$ref": "#/definitions/exclusiveMinimum"
596 },
597 "maxLength": {
598 "$ref": "#/definitions/maxLength"
599 },
600 "minLength": {
601 "$ref": "#/definitions/minLength"
602 },
603 "pattern": {
604 "$ref": "#/definitions/pattern"
605 },
606 "maxItems": {
607 "$ref": "#/definitions/maxItems"
608 },
609 "minItems": {
610 "$ref": "#/definitions/minItems"
611 },
612 "uniqueItems": {
613 "$ref": "#/definitions/uniqueItems"
614 },
615 "enum": {
616 "$ref": "#/definitions/enum"
617 },
618 "multipleOf": {
619 "$ref": "#/definitions/multipleOf"
620 }
621 }
622 },
623 "queryParameterSubSchema": {
624 "additionalProperties": false,
625 "patternProperties": {
626 "^x-": {
627 "$ref": "#/definitions/vendorExtension"
628 }
629 },
630 "properties": {
631 "required": {
632 "type": "boolean",
633 "description": "Determines whether or not this parameter is required or optional.",
634 "default": false
635 },
636 "in": {
637 "type": "string",
638 "description": "Determines the location of the parameter.",
639 "enum": [
640 "query"
641 ]
642 },
643 "description": {
644 "type": "string",
645 "description": "A brief description of the parameter. This could contain examples of use. GitHub Flavored Markdown is allowed."
646 },
647 "name": {
648 "type": "string",
649 "description": "The name of the parameter."
650 },
651 "allowEmptyValue": {
652 "type": "boolean",
653 "default": false,
654 "description": "allows sending a parameter by name only or with an empty value."
655 },
656 "type": {
657 "type": "string",
658 "enum": [
659 "string",
660 "number",
661 "boolean",
662 "integer",
663 "array"
664 ]
665 },
666 "format": {
667 "type": "string"
668 },
669 "items": {
670 "$ref": "#/definitions/primitivesItems"
671 },
672 "collectionFormat": {
673 "$ref": "#/definitions/collectionFormatWithMulti"
674 },
675 "default": {
676 "$ref": "#/definitions/default"
677 },
678 "maximum": {
679 "$ref": "#/definitions/maximum"
680 },
681 "exclusiveMaximum": {
682 "$ref": "#/definitions/exclusiveMaximum"
683 },
684 "minimum": {
685 "$ref": "#/definitions/minimum"
686 },
687 "exclusiveMinimum": {
688 "$ref": "#/definitions/exclusiveMinimum"
689 },
690 "maxLength": {
691 "$ref": "#/definitions/maxLength"
692 },
693 "minLength": {
694 "$ref": "#/definitions/minLength"
695 },
696 "pattern": {
697 "$ref": "#/definitions/pattern"
698 },
699 "maxItems": {
700 "$ref": "#/definitions/maxItems"
701 },
702 "minItems": {
703 "$ref": "#/definitions/minItems"
704 },
705 "uniqueItems": {
706 "$ref": "#/definitions/uniqueItems"
707 },
708 "enum": {
709 "$ref": "#/definitions/enum"
710 },
711 "multipleOf": {
712 "$ref": "#/definitions/multipleOf"
713 }
714 }
715 },
716 "formDataParameterSubSchema": {
717 "additionalProperties": false,
718 "patternProperties": {
719 "^x-": {
720 "$ref": "#/definitions/vendorExtension"
721 }
722 },
723 "properties": {
724 "required": {
725 "type": "boolean",
726 "description": "Determines whether or not this parameter is required or optional.",
727 "default": false
728 },
729 "in": {
730 "type": "string",
731 "description": "Determines the location of the parameter.",
732 "enum": [
733 "formData"
734 ]
735 },
736 "description": {
737 "type": "string",
738 "description": "A brief description of the parameter. This could contain examples of use. GitHub Flavored Markdown is allowed."
739 },
740 "name": {
741 "type": "string",
742 "description": "The name of the parameter."
743 },
744 "allowEmptyValue": {
745 "type": "boolean",
746 "default": false,
747 "description": "allows sending a parameter by name only or with an empty value."
748 },
749 "type": {
750 "type": "string",
751 "enum": [
752 "string",
753 "number",
754 "boolean",
755 "integer",
756 "array",
757 "file"
758 ]
759 },
760 "format": {
761 "type": "string"
762 },
763 "items": {
764 "$ref": "#/definitions/primitivesItems"
765 },
766 "collectionFormat": {
767 "$ref": "#/definitions/collectionFormatWithMulti"
768 },
769 "default": {
770 "$ref": "#/definitions/default"
771 },
772 "maximum": {
773 "$ref": "#/definitions/maximum"
774 },
775 "exclusiveMaximum": {
776 "$ref": "#/definitions/exclusiveMaximum"
777 },
778 "minimum": {
779 "$ref": "#/definitions/minimum"
780 },
781 "exclusiveMinimum": {
782 "$ref": "#/definitions/exclusiveMinimum"
783 },
784 "maxLength": {
785 "$ref": "#/definitions/maxLength"
786 },
787 "minLength": {
788 "$ref": "#/definitions/minLength"
789 },
790 "pattern": {
791 "$ref": "#/definitions/pattern"
792 },
793 "maxItems": {
794 "$ref": "#/definitions/maxItems"
795 },
796 "minItems": {
797 "$ref": "#/definitions/minItems"
798 },
799 "uniqueItems": {
800 "$ref": "#/definitions/uniqueItems"
801 },
802 "enum": {
803 "$ref": "#/definitions/enum"
804 },
805 "multipleOf": {
806 "$ref": "#/definitions/multipleOf"
807 }
808 }
809 },
810 "pathParameterSubSchema": {
811 "additionalProperties": false,
812 "patternProperties": {
813 "^x-": {
814 "$ref": "#/definitions/vendorExtension"
815 }
816 },
817 "required": [
818 "required"
819 ],
820 "properties": {
821 "required": {
822 "type": "boolean",
823 "enum": [
824 true
825 ],
826 "description": "Determines whether or not this parameter is required or optional."
827 },
828 "in": {
829 "type": "string",
830 "description": "Determines the location of the parameter.",
831 "enum": [
832 "path"
833 ]
834 },
835 "description": {
836 "type": "string",
837 "description": "A brief description of the parameter. This could contain examples of use. GitHub Flavored Markdown is allowed."
838 },
839 "name": {
840 "type": "string",
841 "description": "The name of the parameter."
842 },
843 "type": {
844 "type": "string",
845 "enum": [
846 "string",
847 "number",
848 "boolean",
849 "integer",
850 "array"
851 ]
852 },
853 "format": {
854 "type": "string"
855 },
856 "items": {
857 "$ref": "#/definitions/primitivesItems"
858 },
859 "collectionFormat": {
860 "$ref": "#/definitions/collectionFormat"
861 },
862 "default": {
863 "$ref": "#/definitions/default"
864 },
865 "maximum": {
866 "$ref": "#/definitions/maximum"
867 },
868 "exclusiveMaximum": {
869 "$ref": "#/definitions/exclusiveMaximum"
870 },
871 "minimum": {
872 "$ref": "#/definitions/minimum"
873 },
874 "exclusiveMinimum": {
875 "$ref": "#/definitions/exclusiveMinimum"
876 },
877 "maxLength": {
878 "$ref": "#/definitions/maxLength"
879 },
880 "minLength": {
881 "$ref": "#/definitions/minLength"
882 },
883 "pattern": {
884 "$ref": "#/definitions/pattern"
885 },
886 "maxItems": {
887 "$ref": "#/definitions/maxItems"
888 },
889 "minItems": {
890 "$ref": "#/definitions/minItems"
891 },
892 "uniqueItems": {
893 "$ref": "#/definitions/uniqueItems"
894 },
895 "enum": {
896 "$ref": "#/definitions/enum"
897 },
898 "multipleOf": {
899 "$ref": "#/definitions/multipleOf"
900 }
901 }
902 },
903 "nonBodyParameter": {
904 "type": "object",
905 "required": [
906 "name",
907 "in",
908 "type"
909 ],
910 "oneOf": [
911 {
912 "$ref": "#/definitions/headerParameterSubSchema"
913 },
914 {
915 "$ref": "#/definitions/formDataParameterSubSchema"
916 },
917 {
918 "$ref": "#/definitions/queryParameterSubSchema"
919 },
920 {
921 "$ref": "#/definitions/pathParameterSubSchema"
922 }
923 ]
924 },
925 "parameter": {
926 "oneOf": [
927 {
928 "$ref": "#/definitions/bodyParameter"
929 },
930 {
931 "$ref": "#/definitions/nonBodyParameter"
932 }
933 ]
934 },
935 "schema": {
936 "type": "object",
937 "description": "A deterministic version of a JSON Schema object.",
938 "patternProperties": {
939 "^x-": {
940 "$ref": "#/definitions/vendorExtension"
941 }
942 },
943 "properties": {
944 "$ref": {
945 "type": "string"
946 },
947 "format": {
948 "type": "string"
949 },
950 "title": {
951 "$ref": "http://json-schema.org/draft-04/schema#/properties/title"
952 },
953 "description": {
954 "$ref": "http://json-schema.org/draft-04/schema#/properties/description"
955 },
956 "default": {
957 "$ref": "http://json-schema.org/draft-04/schema#/properties/default"
958 },
959 "multipleOf": {
960 "$ref": "http://json-schema.org/draft-04/schema#/properties/multipleOf"
961 },
962 "maximum": {
963 "$ref": "http://json-schema.org/draft-04/schema#/properties/maximum"
964 },
965 "exclusiveMaximum": {
966 "$ref": "http://json-schema.org/draft-04/schema#/properties/exclusiveMaximum"
967 },
968 "minimum": {
969 "$ref": "http://json-schema.org/draft-04/schema#/properties/minimum"
970 },
971 "exclusiveMinimum": {
972 "$ref": "http://json-schema.org/draft-04/schema#/properties/exclusiveMinimum"
973 },
974 "maxLength": {
975 "$ref": "http://json-schema.org/draft-04/schema#/definitions/positiveInteger"
976 },
977 "minLength": {
978 "$ref": "http://json-schema.org/draft-04/schema#/definitions/positiveIntegerDefault0"
979 },
980 "pattern": {
981 "$ref": "http://json-schema.org/draft-04/schema#/properties/pattern"
982 },
983 "maxItems": {
984 "$ref": "http://json-schema.org/draft-04/schema#/definitions/positiveInteger"
985 },
986 "minItems": {
987 "$ref": "http://json-schema.org/draft-04/schema#/definitions/positiveIntegerDefault0"
988 },
989 "uniqueItems": {
990 "$ref": "http://json-schema.org/draft-04/schema#/properties/uniqueItems"
991 },
992 "maxProperties": {
993 "$ref": "http://json-schema.org/draft-04/schema#/definitions/positiveInteger"
994 },
995 "minProperties": {
996 "$ref": "http://json-schema.org/draft-04/schema#/definitions/positiveIntegerDefault0"
997 },
998 "required": {
999 "$ref": "http://json-schema.org/draft-04/schema#/definitions/stringArray"
1000 },
1001 "enum": {
1002 "$ref": "http://json-schema.org/draft-04/schema#/properties/enum"
1003 },
1004 "additionalProperties": {
1005 "oneOf": [
1006 {
1007 "$ref": "#/definitions/schema"
1008 },
1009 {
1010 "type": "boolean"
1011 }
1012 ],
1013 "default": {}
1014 },
1015 "type": {
1016 "$ref": "http://json-schema.org/draft-04/schema#/properties/type"
1017 },
1018 "items": {
1019 "anyOf": [
1020 {
1021 "$ref": "#/definitions/schema"
1022 },
1023 {
1024 "type": "array",
1025 "minItems": 1,
1026 "items": {
1027 "$ref": "#/definitions/schema"
1028 }
1029 }
1030 ],
1031 "default": {}
1032 },
1033 "allOf": {
1034 "type": "array",
1035 "minItems": 1,
1036 "items": {
1037 "$ref": "#/definitions/schema"
1038 }
1039 },
1040 "properties": {
1041 "type": "object",
1042 "additionalProperties": {
1043 "$ref": "#/definitions/schema"
1044 },
1045 "default": {}
1046 },
1047 "discriminator": {
1048 "type": "string"
1049 },
1050 "readOnly": {
1051 "type": "boolean",
1052 "default": false
1053 },
1054 "xml": {
1055 "$ref": "#/definitions/xml"
1056 },
1057 "externalDocs": {
1058 "$ref": "#/definitions/externalDocs"
1059 },
1060 "example": {}
1061 },
1062 "additionalProperties": false
1063 },
1064 "fileSchema": {
1065 "type": "object",
1066 "description": "A deterministic version of a JSON Schema object.",
1067 "patternProperties": {
1068 "^x-": {
1069 "$ref": "#/definitions/vendorExtension"
1070 }
1071 },
1072 "required": [
1073 "type"
1074 ],
1075 "properties": {
1076 "format": {
1077 "type": "string"
1078 },
1079 "title": {
1080 "$ref": "http://json-schema.org/draft-04/schema#/properties/title"
1081 },
1082 "description": {
1083 "$ref": "http://json-schema.org/draft-04/schema#/properties/description"
1084 },
1085 "default": {
1086 "$ref": "http://json-schema.org/draft-04/schema#/properties/default"
1087 },
1088 "required": {
1089 "$ref": "http://json-schema.org/draft-04/schema#/definitions/stringArray"
1090 },
1091 "type": {
1092 "type": "string",
1093 "enum": [
1094 "file"
1095 ]
1096 },
1097 "readOnly": {
1098 "type": "boolean",
1099 "default": false
1100 },
1101 "externalDocs": {
1102 "$ref": "#/definitions/externalDocs"
1103 },
1104 "example": {}
1105 },
1106 "additionalProperties": false
1107 },
1108 "primitivesItems": {
1109 "type": "object",
1110 "additionalProperties": false,
1111 "properties": {
1112 "type": {
1113 "type": "string",
1114 "enum": [
1115 "string",
1116 "number",
1117 "integer",
1118 "boolean",
1119 "array"
1120 ]
1121 },
1122 "format": {
1123 "type": "string"
1124 },
1125 "items": {
1126 "$ref": "#/definitions/primitivesItems"
1127 },
1128 "collectionFormat": {
1129 "$ref": "#/definitions/collectionFormat"
1130 },
1131 "default": {
1132 "$ref": "#/definitions/default"
1133 },
1134 "maximum": {
1135 "$ref": "#/definitions/maximum"
1136 },
1137 "exclusiveMaximum": {
1138 "$ref": "#/definitions/exclusiveMaximum"
1139 },
1140 "minimum": {
1141 "$ref": "#/definitions/minimum"
1142 },
1143 "exclusiveMinimum": {
1144 "$ref": "#/definitions/exclusiveMinimum"
1145 },
1146 "maxLength": {
1147 "$ref": "#/definitions/maxLength"
1148 },
1149 "minLength": {
1150 "$ref": "#/definitions/minLength"
1151 },
1152 "pattern": {
1153 "$ref": "#/definitions/pattern"
1154 },
1155 "maxItems": {
1156 "$ref": "#/definitions/maxItems"
1157 },
1158 "minItems": {
1159 "$ref": "#/definitions/minItems"
1160 },
1161 "uniqueItems": {
1162 "$ref": "#/definitions/uniqueItems"
1163 },
1164 "enum": {
1165 "$ref": "#/definitions/enum"
1166 },
1167 "multipleOf": {
1168 "$ref": "#/definitions/multipleOf"
1169 }
1170 },
1171 "patternProperties": {
1172 "^x-": {
1173 "$ref": "#/definitions/vendorExtension"
1174 }
1175 }
1176 },
1177 "security": {
1178 "type": "array",
1179 "items": {
1180 "$ref": "#/definitions/securityRequirement"
1181 },
1182 "uniqueItems": true
1183 },
1184 "securityRequirement": {
1185 "type": "object",
1186 "additionalProperties": {
1187 "type": "array",
1188 "items": {
1189 "type": "string"
1190 },
1191 "uniqueItems": true
1192 }
1193 },
1194 "xml": {
1195 "type": "object",
1196 "additionalProperties": false,
1197 "properties": {
1198 "name": {
1199 "type": "string"
1200 },
1201 "namespace": {
1202 "type": "string"
1203 },
1204 "prefix": {
1205 "type": "string"
1206 },
1207 "attribute": {
1208 "type": "boolean",
1209 "default": false
1210 },
1211 "wrapped": {
1212 "type": "boolean",
1213 "default": false
1214 }
1215 },
1216 "patternProperties": {
1217 "^x-": {
1218 "$ref": "#/definitions/vendorExtension"
1219 }
1220 }
1221 },
1222 "tag": {
1223 "type": "object",
1224 "additionalProperties": false,
1225 "required": [
1226 "name"
1227 ],
1228 "properties": {
1229 "name": {
1230 "type": "string"
1231 },
1232 "description": {
1233 "type": "string"
1234 },
1235 "externalDocs": {
1236 "$ref": "#/definitions/externalDocs"
1237 }
1238 },
1239 "patternProperties": {
1240 "^x-": {
1241 "$ref": "#/definitions/vendorExtension"
1242 }
1243 }
1244 },
1245 "securityDefinitions": {
1246 "type": "object",
1247 "additionalProperties": {
1248 "oneOf": [
1249 {
1250 "$ref": "#/definitions/basicAuthenticationSecurity"
1251 },
1252 {
1253 "$ref": "#/definitions/apiKeySecurity"
1254 },
1255 {
1256 "$ref": "#/definitions/oauth2ImplicitSecurity"
1257 },
1258 {
1259 "$ref": "#/definitions/oauth2PasswordSecurity"
1260 },
1261 {
1262 "$ref": "#/definitions/oauth2ApplicationSecurity"
1263 },
1264 {
1265 "$ref": "#/definitions/oauth2AccessCodeSecurity"
1266 }
1267 ]
1268 }
1269 },
1270 "basicAuthenticationSecurity": {
1271 "type": "object",
1272 "additionalProperties": false,
1273 "required": [
1274 "type"
1275 ],
1276 "properties": {
1277 "type": {
1278 "type": "string",
1279 "enum": [
1280 "basic"
1281 ]
1282 },
1283 "description": {
1284 "type": "string"
1285 }
1286 },
1287 "patternProperties": {
1288 "^x-": {
1289 "$ref": "#/definitions/vendorExtension"
1290 }
1291 }
1292 },
1293 "apiKeySecurity": {
1294 "type": "object",
1295 "additionalProperties": false,
1296 "required": [
1297 "type",
1298 "name",
1299 "in"
1300 ],
1301 "properties": {
1302 "type": {
1303 "type": "string",
1304 "enum": [
1305 "apiKey"
1306 ]
1307 },
1308 "name": {
1309 "type": "string"
1310 },
1311 "in": {
1312 "type": "string",
1313 "enum": [
1314 "header",
1315 "query"
1316 ]
1317 },
1318 "description": {
1319 "type": "string"
1320 }
1321 },
1322 "patternProperties": {
1323 "^x-": {
1324 "$ref": "#/definitions/vendorExtension"
1325 }
1326 }
1327 },
1328 "oauth2ImplicitSecurity": {
1329 "type": "object",
1330 "additionalProperties": false,
1331 "required": [
1332 "type",
1333 "flow",
1334 "authorizationUrl"
1335 ],
1336 "properties": {
1337 "type": {
1338 "type": "string",
1339 "enum": [
1340 "oauth2"
1341 ]
1342 },
1343 "flow": {
1344 "type": "string",
1345 "enum": [
1346 "implicit"
1347 ]
1348 },
1349 "scopes": {
1350 "$ref": "#/definitions/oauth2Scopes"
1351 },
1352 "authorizationUrl": {
1353 "type": "string",
1354 "format": "uri"
1355 },
1356 "description": {
1357 "type": "string"
1358 }
1359 },
1360 "patternProperties": {
1361 "^x-": {
1362 "$ref": "#/definitions/vendorExtension"
1363 }
1364 }
1365 },
1366 "oauth2PasswordSecurity": {
1367 "type": "object",
1368 "additionalProperties": false,
1369 "required": [
1370 "type",
1371 "flow",
1372 "tokenUrl"
1373 ],
1374 "properties": {
1375 "type": {
1376 "type": "string",
1377 "enum": [
1378 "oauth2"
1379 ]
1380 },
1381 "flow": {
1382 "type": "string",
1383 "enum": [
1384 "password"
1385 ]
1386 },
1387 "scopes": {
1388 "$ref": "#/definitions/oauth2Scopes"
1389 },
1390 "tokenUrl": {
1391 "type": "string",
1392 "format": "uri"
1393 },
1394 "description": {
1395 "type": "string"
1396 }
1397 },
1398 "patternProperties": {
1399 "^x-": {
1400 "$ref": "#/definitions/vendorExtension"
1401 }
1402 }
1403 },
1404 "oauth2ApplicationSecurity": {
1405 "type": "object",
1406 "additionalProperties": false,
1407 "required": [
1408 "type",
1409 "flow",
1410 "tokenUrl"
1411 ],
1412 "properties": {
1413 "type": {
1414 "type": "string",
1415 "enum": [
1416 "oauth2"
1417 ]
1418 },
1419 "flow": {
1420 "type": "string",
1421 "enum": [
1422 "application"
1423 ]
1424 },
1425 "scopes": {
1426 "$ref": "#/definitions/oauth2Scopes"
1427 },
1428 "tokenUrl": {
1429 "type": "string",
1430 "format": "uri"
1431 },
1432 "description": {
1433 "type": "string"
1434 }
1435 },
1436 "patternProperties": {
1437 "^x-": {
1438 "$ref": "#/definitions/vendorExtension"
1439 }
1440 }
1441 },
1442 "oauth2AccessCodeSecurity": {
1443 "type": "object",
1444 "additionalProperties": false,
1445 "required": [
1446 "type",
1447 "flow",
1448 "authorizationUrl",
1449 "tokenUrl"
1450 ],
1451 "properties": {
1452 "type": {
1453 "type": "string",
1454 "enum": [
1455 "oauth2"
1456 ]
1457 },
1458 "flow": {
1459 "type": "string",
1460 "enum": [
1461 "accessCode"
1462 ]
1463 },
1464 "scopes": {
1465 "$ref": "#/definitions/oauth2Scopes"
1466 },
1467 "authorizationUrl": {
1468 "type": "string",
1469 "format": "uri"
1470 },
1471 "tokenUrl": {
1472 "type": "string",
1473 "format": "uri"
1474 },
1475 "description": {
1476 "type": "string"
1477 }
1478 },
1479 "patternProperties": {
1480 "^x-": {
1481 "$ref": "#/definitions/vendorExtension"
1482 }
1483 }
1484 },
1485 "oauth2Scopes": {
1486 "type": "object",
1487 "additionalProperties": {
1488 "type": "string"
1489 }
1490 },
1491 "mediaTypeList": {
1492 "type": "array",
1493 "items": {
1494 "$ref": "#/definitions/mimeType"
1495 },
1496 "uniqueItems": true
1497 },
1498 "parametersList": {
1499 "type": "array",
1500 "description": "The parameters needed to send a valid API call.",
1501 "additionalItems": false,
1502 "items": {
1503 "oneOf": [
1504 {
1505 "$ref": "#/definitions/parameter"
1506 },
1507 {
1508 "$ref": "#/definitions/jsonReference"
1509 }
1510 ]
1511 },
1512 "uniqueItems": true
1513 },
1514 "schemesList": {
1515 "type": "array",
1516 "description": "The transfer protocol of the API.",
1517 "items": {
1518 "type": "string",
1519 "enum": [
1520 "http",
1521 "https",
1522 "ws",
1523 "wss"
1524 ]
1525 },
1526 "uniqueItems": true
1527 },
1528 "collectionFormat": {
1529 "type": "string",
1530 "enum": [
1531 "csv",
1532 "ssv",
1533 "tsv",
1534 "pipes"
1535 ],
1536 "default": "csv"
1537 },
1538 "collectionFormatWithMulti": {
1539 "type": "string",
1540 "enum": [
1541 "csv",
1542 "ssv",
1543 "tsv",
1544 "pipes",
1545 "multi"
1546 ],
1547 "default": "csv"
1548 },
1549 "title": {
1550 "$ref": "http://json-schema.org/draft-04/schema#/properties/title"
1551 },
1552 "description": {
1553 "$ref": "http://json-schema.org/draft-04/schema#/properties/description"
1554 },
1555 "default": {
1556 "$ref": "http://json-schema.org/draft-04/schema#/properties/default"
1557 },
1558 "multipleOf": {
1559 "$ref": "http://json-schema.org/draft-04/schema#/properties/multipleOf"
1560 },
1561 "maximum": {
1562 "$ref": "http://json-schema.org/draft-04/schema#/properties/maximum"
1563 },
1564 "exclusiveMaximum": {
1565 "$ref": "http://json-schema.org/draft-04/schema#/properties/exclusiveMaximum"
1566 },
1567 "minimum": {
1568 "$ref": "http://json-schema.org/draft-04/schema#/properties/minimum"
1569 },
1570 "exclusiveMinimum": {
1571 "$ref": "http://json-schema.org/draft-04/schema#/properties/exclusiveMinimum"
1572 },
1573 "maxLength": {
1574 "$ref": "http://json-schema.org/draft-04/schema#/definitions/positiveInteger"
1575 },
1576 "minLength": {
1577 "$ref": "http://json-schema.org/draft-04/schema#/definitions/positiveIntegerDefault0"
1578 },
1579 "pattern": {
1580 "$ref": "http://json-schema.org/draft-04/schema#/properties/pattern"
1581 },
1582 "maxItems": {
1583 "$ref": "http://json-schema.org/draft-04/schema#/definitions/positiveInteger"
1584 },
1585 "minItems": {
1586 "$ref": "http://json-schema.org/draft-04/schema#/definitions/positiveIntegerDefault0"
1587 },
1588 "uniqueItems": {
1589 "$ref": "http://json-schema.org/draft-04/schema#/properties/uniqueItems"
1590 },
1591 "enum": {
1592 "$ref": "http://json-schema.org/draft-04/schema#/properties/enum"
1593 },
1594 "jsonReference": {
1595 "type": "object",
1596 "required": [
1597 "$ref"
1598 ],
1599 "additionalProperties": false,
1600 "properties": {
1601 "$ref": {
1602 "type": "string"
1603 },
1604 "description": {
1605 "type": "string"
1606 }
1607 }
1608 }
1609 }
1610}