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