|
1 | 1 | { |
2 | | - "$schema": "http://json-schema.org/draft-04/schema#", |
3 | 2 | "id": "http://json-schema.org/draft-04/schema#", |
4 | | - "type": "object", |
5 | | - |
6 | | - "properties": { |
7 | | - "type": { |
8 | | - "type": [ "string", "array" ], |
9 | | - "items": { |
10 | | - "type": [ "string", {"$ref": "#"} ] |
11 | | - }, |
12 | | - "uniqueItems": true, |
| 3 | + "$schema": "http://json-schema.org/draft-04/schema#", |
| 4 | + "description": "Core schema meta-schema", |
| 5 | + "definitions": { |
| 6 | + "schemaArray": { |
| 7 | + "type": "array", |
13 | 8 | "minItems": 1, |
14 | | - "default": "any" |
15 | | - }, |
16 | | - |
17 | | - "disallow": { |
18 | | - "type": [ "string", "array" ], |
19 | | - "items": { |
20 | | - "type": [ "string", { "$ref": "#" } ] |
21 | | - }, |
22 | | - "uniqueItems": true, |
23 | | - "minItems": 1 |
24 | | - }, |
25 | | - |
26 | | - "extends": { |
27 | | - "type": [ {"$ref": "#" }, "array" ], |
28 | | - "items": { "$ref": "#" }, |
29 | | - "default": {} |
| 9 | + "items": { "$ref": "#" } |
30 | 10 | }, |
31 | | - |
32 | | - "enum": { |
| 11 | + "positiveInteger": { |
| 12 | + "type": "integer", |
| 13 | + "minimum": 0 |
| 14 | + }, |
| 15 | + "positiveIntegerDefault0": { |
| 16 | + "allOf": [ { "$ref": "#/definitions/positiveInteger" }, { "default": 0 } ] |
| 17 | + }, |
| 18 | + "simpleTypes": { |
| 19 | + "enum": [ "array", "boolean", "integer", "null", "number", "object", "string" ] |
| 20 | + }, |
| 21 | + "stringArray": { |
33 | 22 | "type": "array", |
| 23 | + "items": { "type": "string" }, |
34 | 24 | "minItems": 1, |
35 | 25 | "uniqueItems": true |
| 26 | + } |
| 27 | + }, |
| 28 | + "type": "object", |
| 29 | + "properties": { |
| 30 | + "id": { |
| 31 | + "type": "string", |
| 32 | + "format": "uri" |
36 | 33 | }, |
37 | | - |
38 | | - "minimum": { |
39 | | - "type": "number" |
| 34 | + "$schema": { |
| 35 | + "type": "string", |
| 36 | + "format": "uri" |
| 37 | + }, |
| 38 | + "title": { |
| 39 | + "type": "string" |
| 40 | + }, |
| 41 | + "description": { |
| 42 | + "type": "string" |
| 43 | + }, |
| 44 | + "default": {}, |
| 45 | + "multipleOf": { |
| 46 | + "type": "number", |
| 47 | + "minimum": 0, |
| 48 | + "exclusiveMinimum": true |
40 | 49 | }, |
41 | | - |
42 | 50 | "maximum": { |
43 | 51 | "type": "number" |
44 | 52 | }, |
45 | | - |
46 | | - "exclusiveMinimum": { |
47 | | - "type": "boolean", |
48 | | - "default": false |
49 | | - }, |
50 | | - |
51 | 53 | "exclusiveMaximum": { |
52 | 54 | "type": "boolean", |
53 | 55 | "default": false |
54 | 56 | }, |
55 | | - |
56 | | - "mod": { |
57 | | - "type": "number", |
58 | | - "minimum": 0, |
59 | | - "exclusiveMinimum": true, |
60 | | - "default": 1 |
61 | | - }, |
62 | | - |
63 | | - "minLength": { |
64 | | - "type": "integer", |
65 | | - "minimum": 0, |
66 | | - "default": 0 |
| 57 | + "minimum": { |
| 58 | + "type": "number" |
67 | 59 | }, |
68 | | - |
69 | | - "maxLength": { |
70 | | - "type": "integer" |
| 60 | + "exclusiveMinimum": { |
| 61 | + "type": "boolean", |
| 62 | + "default": false |
71 | 63 | }, |
72 | | - |
| 64 | + "maxLength": { "$ref": "#/definitions/positiveInteger" }, |
| 65 | + "minLength": { "$ref": "#/definitions/positiveIntegerDefault0" }, |
73 | 66 | "pattern": { |
74 | 67 | "type": "string", |
75 | 68 | "format": "regex" |
76 | 69 | }, |
77 | | - |
78 | | - "items": { |
79 | | - "type": [ { "$ref": "#" }, "array" ], |
80 | | - "items": {"$ref": "#"}, |
81 | | - "default": {} |
82 | | - }, |
83 | | - |
84 | 70 | "additionalItems": { |
85 | | - "type": [ { "$ref": "#" }, "boolean" ], |
| 71 | + "anyOf": [ |
| 72 | + { "type": "boolean" }, |
| 73 | + { "$ref": "#" } |
| 74 | + ], |
86 | 75 | "default": {} |
87 | 76 | }, |
88 | | - |
89 | | - "minItems": { |
90 | | - "type": "integer", |
91 | | - "minimum": 0, |
92 | | - "default": 0 |
93 | | - }, |
94 | | - |
95 | | - "maxItems": { |
96 | | - "type": "integer", |
97 | | - "minimum": 0 |
| 77 | + "items": { |
| 78 | + "anyOf": [ |
| 79 | + { "$ref": "#" }, |
| 80 | + { "$ref": "#/definitions/schemaArray" } |
| 81 | + ], |
| 82 | + "default": {} |
98 | 83 | }, |
99 | | - |
| 84 | + "maxItems": { "$ref": "#/definitions/positiveInteger" }, |
| 85 | + "minItems": { "$ref": "#/definitions/positiveIntegerDefault0" }, |
100 | 86 | "uniqueItems": { |
101 | 87 | "type": "boolean", |
102 | 88 | "default": false |
103 | 89 | }, |
104 | | - |
105 | | - "properties": { |
| 90 | + "maxProperties": { "$ref": "#/definitions/positiveInteger" }, |
| 91 | + "minProperties": { "$ref": "#/definitions/positiveIntegerDefault0" }, |
| 92 | + "required": { "$ref": "#/definitions/stringArray" }, |
| 93 | + "additionalProperties": { |
| 94 | + "anyOf": [ |
| 95 | + { "type": "boolean" }, |
| 96 | + { "$ref": "#" } |
| 97 | + ], |
| 98 | + "default": {} |
| 99 | + }, |
| 100 | + "definitions": { |
106 | 101 | "type": "object", |
107 | 102 | "additionalProperties": { "$ref": "#" }, |
108 | 103 | "default": {} |
109 | 104 | }, |
110 | | - |
111 | | - "patternProperties": { |
| 105 | + "properties": { |
112 | 106 | "type": "object", |
113 | 107 | "additionalProperties": { "$ref": "#" }, |
114 | 108 | "default": {} |
115 | 109 | }, |
116 | | - |
117 | | - "additionalProperties": { |
118 | | - "type": [ {"$ref": "#" }, "boolean" ], |
| 110 | + "patternProperties": { |
| 111 | + "type": "object", |
| 112 | + "additionalProperties": { "$ref": "#" }, |
119 | 113 | "default": {} |
120 | 114 | }, |
121 | | - |
122 | | - "minProperties": { |
123 | | - "type": "integer", |
124 | | - "minimum": 0, |
125 | | - "default": 0 |
126 | | - }, |
127 | | - |
128 | | - "maxProperties": { |
129 | | - "type": "integer", |
130 | | - "minimum": 0 |
131 | | - }, |
132 | | - |
133 | | - "required": { |
134 | | - "type": "array", |
135 | | - "items": { |
136 | | - "type": "string" |
137 | | - } |
138 | | - }, |
139 | | - |
140 | 115 | "dependencies": { |
141 | 116 | "type": "object", |
142 | 117 | "additionalProperties": { |
143 | | - "type": [ "string", "array", { "$ref": "#" } ], |
144 | | - "items": { |
145 | | - "type": "string" |
146 | | - } |
147 | | - }, |
148 | | - "default": {} |
149 | | - }, |
150 | | - |
151 | | - "id": { |
152 | | - "type": "string", |
153 | | - "format": "uri" |
154 | | - }, |
155 | | - |
156 | | - "$ref": { |
157 | | - "type": "string", |
158 | | - "format": "uri" |
159 | | - }, |
160 | | - |
161 | | - "$schema": { |
162 | | - "type": "string", |
163 | | - "format": "uri" |
| 118 | + "anyOf": [ |
| 119 | + { "$ref": "#" }, |
| 120 | + { "$ref": "#/definitions/stringArray" } |
| 121 | + ] |
| 122 | + } |
164 | 123 | }, |
165 | | - |
166 | | - "title": { |
167 | | - "type": "string" |
| 124 | + "enum": { |
| 125 | + "type": "array", |
| 126 | + "minItems": 1, |
| 127 | + "uniqueItems": true |
168 | 128 | }, |
169 | | - |
170 | | - "description": { |
171 | | - "type": "string" |
| 129 | + "type": { |
| 130 | + "anyOf": [ |
| 131 | + { "$ref": "#/definitions/simpleTypes" }, |
| 132 | + { |
| 133 | + "type": "array", |
| 134 | + "items": { "$ref": "#/definitions/simpleTypes" }, |
| 135 | + "minItems": 1, |
| 136 | + "uniqueItems": true |
| 137 | + } |
| 138 | + ] |
172 | 139 | }, |
173 | | - |
174 | | - "default": { |
175 | | - "type": "any" |
176 | | - } |
| 140 | + "allOf": { "$ref": "#/definitions/schemaArray" }, |
| 141 | + "anyOf": { "$ref": "#/definitions/schemaArray" }, |
| 142 | + "oneOf": { "$ref": "#/definitions/schemaArray" }, |
| 143 | + "not": { "$ref": "#" } |
177 | 144 | }, |
178 | | - |
179 | 145 | "dependencies": { |
180 | | - "exclusiveMinimum": "minimum", |
181 | | - "exclusiveMaximum": "maximum" |
| 146 | + "exclusiveMaximum": [ "maximum" ], |
| 147 | + "exclusiveMinimum": [ "minimum" ] |
182 | 148 | }, |
183 | | - |
184 | 149 | "default": {} |
185 | 150 | } |
0 commit comments