json-schema-ouidou 2.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (83) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE.md +19 -0
  3. data/README.md +496 -0
  4. data/lib/json-schema/attribute.rb +57 -0
  5. data/lib/json-schema/attributes/additionalitems.rb +28 -0
  6. data/lib/json-schema/attributes/additionalproperties.rb +58 -0
  7. data/lib/json-schema/attributes/allof.rb +39 -0
  8. data/lib/json-schema/attributes/anyof.rb +47 -0
  9. data/lib/json-schema/attributes/dependencies.rb +38 -0
  10. data/lib/json-schema/attributes/dependencies_v4.rb +11 -0
  11. data/lib/json-schema/attributes/disallow.rb +12 -0
  12. data/lib/json-schema/attributes/divisibleby.rb +22 -0
  13. data/lib/json-schema/attributes/enum.rb +24 -0
  14. data/lib/json-schema/attributes/extends.rb +48 -0
  15. data/lib/json-schema/attributes/format.rb +14 -0
  16. data/lib/json-schema/attributes/formats/custom.rb +21 -0
  17. data/lib/json-schema/attributes/formats/date.rb +25 -0
  18. data/lib/json-schema/attributes/formats/date_time.rb +34 -0
  19. data/lib/json-schema/attributes/formats/date_time_v4.rb +15 -0
  20. data/lib/json-schema/attributes/formats/ip.rb +41 -0
  21. data/lib/json-schema/attributes/formats/time.rb +22 -0
  22. data/lib/json-schema/attributes/formats/uri.rb +18 -0
  23. data/lib/json-schema/attributes/items.rb +27 -0
  24. data/lib/json-schema/attributes/limit.rb +52 -0
  25. data/lib/json-schema/attributes/limits/items.rb +15 -0
  26. data/lib/json-schema/attributes/limits/length.rb +15 -0
  27. data/lib/json-schema/attributes/limits/max_items.rb +15 -0
  28. data/lib/json-schema/attributes/limits/max_length.rb +15 -0
  29. data/lib/json-schema/attributes/limits/max_properties.rb +15 -0
  30. data/lib/json-schema/attributes/limits/maximum.rb +15 -0
  31. data/lib/json-schema/attributes/limits/maximum_inclusive.rb +11 -0
  32. data/lib/json-schema/attributes/limits/min_items.rb +15 -0
  33. data/lib/json-schema/attributes/limits/min_length.rb +15 -0
  34. data/lib/json-schema/attributes/limits/min_properties.rb +15 -0
  35. data/lib/json-schema/attributes/limits/minimum.rb +15 -0
  36. data/lib/json-schema/attributes/limits/minimum_inclusive.rb +11 -0
  37. data/lib/json-schema/attributes/limits/numeric.rb +16 -0
  38. data/lib/json-schema/attributes/limits/properties.rb +15 -0
  39. data/lib/json-schema/attributes/maxdecimal.rb +18 -0
  40. data/lib/json-schema/attributes/multipleof.rb +11 -0
  41. data/lib/json-schema/attributes/not.rb +30 -0
  42. data/lib/json-schema/attributes/oneof.rb +56 -0
  43. data/lib/json-schema/attributes/pattern.rb +18 -0
  44. data/lib/json-schema/attributes/patternproperties.rb +22 -0
  45. data/lib/json-schema/attributes/properties.rb +66 -0
  46. data/lib/json-schema/attributes/properties_optional.rb +26 -0
  47. data/lib/json-schema/attributes/properties_v4.rb +13 -0
  48. data/lib/json-schema/attributes/ref.rb +61 -0
  49. data/lib/json-schema/attributes/required.rb +28 -0
  50. data/lib/json-schema/attributes/type.rb +73 -0
  51. data/lib/json-schema/attributes/type_v4.rb +29 -0
  52. data/lib/json-schema/attributes/uniqueitems.rb +20 -0
  53. data/lib/json-schema/errors/custom_format_error.rb +6 -0
  54. data/lib/json-schema/errors/json_load_error.rb +6 -0
  55. data/lib/json-schema/errors/json_parse_error.rb +6 -0
  56. data/lib/json-schema/errors/schema_error.rb +6 -0
  57. data/lib/json-schema/errors/schema_parse_error.rb +8 -0
  58. data/lib/json-schema/errors/uri_error.rb +6 -0
  59. data/lib/json-schema/errors/validation_error.rb +46 -0
  60. data/lib/json-schema/schema/reader.rb +140 -0
  61. data/lib/json-schema/schema/validator.rb +40 -0
  62. data/lib/json-schema/schema.rb +62 -0
  63. data/lib/json-schema/util/array_set.rb +20 -0
  64. data/lib/json-schema/util/uri.rb +110 -0
  65. data/lib/json-schema/util/uuid.rb +284 -0
  66. data/lib/json-schema/validator.rb +609 -0
  67. data/lib/json-schema/validators/draft1.rb +45 -0
  68. data/lib/json-schema/validators/draft2.rb +46 -0
  69. data/lib/json-schema/validators/draft3.rb +50 -0
  70. data/lib/json-schema/validators/draft4.rb +56 -0
  71. data/lib/json-schema/validators/draft6.rb +56 -0
  72. data/lib/json-schema/validators/hyper-draft1.rb +13 -0
  73. data/lib/json-schema/validators/hyper-draft2.rb +13 -0
  74. data/lib/json-schema/validators/hyper-draft3.rb +13 -0
  75. data/lib/json-schema/validators/hyper-draft4.rb +13 -0
  76. data/lib/json-schema/validators/hyper-draft6.rb +13 -0
  77. data/lib/json-schema.rb +18 -0
  78. data/resources/draft-01.json +155 -0
  79. data/resources/draft-02.json +166 -0
  80. data/resources/draft-03.json +174 -0
  81. data/resources/draft-04.json +150 -0
  82. data/resources/draft-06.json +150 -0
  83. metadata +197 -0
@@ -0,0 +1,50 @@
1
+ require 'json-schema/schema/validator'
2
+
3
+ module JSON
4
+ class Schema
5
+
6
+ class Draft3 < Validator
7
+ def initialize
8
+ super
9
+ @attributes = {
10
+ "type" => JSON::Schema::TypeAttribute,
11
+ "disallow" => JSON::Schema::DisallowAttribute,
12
+ "format" => JSON::Schema::FormatAttribute,
13
+ "maximum" => JSON::Schema::MaximumAttribute,
14
+ "minimum" => JSON::Schema::MinimumAttribute,
15
+ "minItems" => JSON::Schema::MinItemsAttribute,
16
+ "maxItems" => JSON::Schema::MaxItemsAttribute,
17
+ "uniqueItems" => JSON::Schema::UniqueItemsAttribute,
18
+ "minLength" => JSON::Schema::MinLengthAttribute,
19
+ "maxLength" => JSON::Schema::MaxLengthAttribute,
20
+ "divisibleBy" => JSON::Schema::DivisibleByAttribute,
21
+ "enum" => JSON::Schema::EnumAttribute,
22
+ "properties" => JSON::Schema::PropertiesAttribute,
23
+ "pattern" => JSON::Schema::PatternAttribute,
24
+ "patternProperties" => JSON::Schema::PatternPropertiesAttribute,
25
+ "additionalProperties" => JSON::Schema::AdditionalPropertiesAttribute,
26
+ "items" => JSON::Schema::ItemsAttribute,
27
+ "additionalItems" => JSON::Schema::AdditionalItemsAttribute,
28
+ "dependencies" => JSON::Schema::DependenciesAttribute,
29
+ "extends" => JSON::Schema::ExtendsAttribute,
30
+ "$ref" => JSON::Schema::RefAttribute
31
+ }
32
+ @default_formats = {
33
+ 'date-time' => DateTimeFormat,
34
+ 'date' => DateFormat,
35
+ 'ip-address' => IP4Format,
36
+ 'ipv6' => IP6Format,
37
+ 'time' => TimeFormat,
38
+ 'uri' => UriFormat
39
+ }
40
+ @formats = @default_formats.clone
41
+ @uri = JSON::Util::URI.parse("http://json-schema.org/draft-03/schema#")
42
+ @names = ["draft3", "http://json-schema.org/draft-03/schema#"]
43
+ @metaschema_name = "draft-03.json"
44
+ end
45
+
46
+ JSON::Validator.register_validator(self.new)
47
+ end
48
+
49
+ end
50
+ end
@@ -0,0 +1,56 @@
1
+ require 'json-schema/schema/validator'
2
+
3
+ module JSON
4
+ class Schema
5
+
6
+ class Draft4 < Validator
7
+ def initialize
8
+ super
9
+ @attributes = {
10
+ "type" => JSON::Schema::TypeV4Attribute,
11
+ "allOf" => JSON::Schema::AllOfAttribute,
12
+ "anyOf" => JSON::Schema::AnyOfAttribute,
13
+ "oneOf" => JSON::Schema::OneOfAttribute,
14
+ "not" => JSON::Schema::NotAttribute,
15
+ "disallow" => JSON::Schema::DisallowAttribute,
16
+ "format" => JSON::Schema::FormatAttribute,
17
+ "maximum" => JSON::Schema::MaximumAttribute,
18
+ "minimum" => JSON::Schema::MinimumAttribute,
19
+ "minItems" => JSON::Schema::MinItemsAttribute,
20
+ "maxItems" => JSON::Schema::MaxItemsAttribute,
21
+ "minProperties" => JSON::Schema::MinPropertiesAttribute,
22
+ "maxProperties" => JSON::Schema::MaxPropertiesAttribute,
23
+ "uniqueItems" => JSON::Schema::UniqueItemsAttribute,
24
+ "minLength" => JSON::Schema::MinLengthAttribute,
25
+ "maxLength" => JSON::Schema::MaxLengthAttribute,
26
+ "multipleOf" => JSON::Schema::MultipleOfAttribute,
27
+ "enum" => JSON::Schema::EnumAttribute,
28
+ "properties" => JSON::Schema::PropertiesV4Attribute,
29
+ "required" => JSON::Schema::RequiredAttribute,
30
+ "pattern" => JSON::Schema::PatternAttribute,
31
+ "patternProperties" => JSON::Schema::PatternPropertiesAttribute,
32
+ "additionalProperties" => JSON::Schema::AdditionalPropertiesAttribute,
33
+ "items" => JSON::Schema::ItemsAttribute,
34
+ "additionalItems" => JSON::Schema::AdditionalItemsAttribute,
35
+ "dependencies" => JSON::Schema::DependenciesV4Attribute,
36
+ "extends" => JSON::Schema::ExtendsAttribute,
37
+ "$ref" => JSON::Schema::RefAttribute
38
+ }
39
+ @default_formats = {
40
+ 'date-time' => DateTimeV4Format,
41
+ 'ipv4' => IP4Format,
42
+ 'ipv6' => IP6Format,
43
+ 'uri' => UriFormat
44
+ }
45
+ @formats = @default_formats.clone
46
+ @uri = JSON::Util::URI.parse("http://json-schema.org/draft-04/schema#")
47
+ @names = ["draft4", "http://json-schema.org/draft-04/schema#"]
48
+ @metaschema_name = "draft-04.json"
49
+ end
50
+
51
+ JSON::Validator.register_validator(self.new)
52
+ JSON::Validator.register_default_validator(self.new)
53
+ end
54
+
55
+ end
56
+ end
@@ -0,0 +1,56 @@
1
+ require 'json-schema/schema/validator'
2
+
3
+ module JSON
4
+ class Schema
5
+
6
+ class Draft6 < Validator
7
+ def initialize
8
+ super
9
+ @attributes = {
10
+ "type" => JSON::Schema::TypeV4Attribute,
11
+ "allOf" => JSON::Schema::AllOfAttribute,
12
+ "anyOf" => JSON::Schema::AnyOfAttribute,
13
+ "oneOf" => JSON::Schema::OneOfAttribute,
14
+ "not" => JSON::Schema::NotAttribute,
15
+ "disallow" => JSON::Schema::DisallowAttribute,
16
+ "format" => JSON::Schema::FormatAttribute,
17
+ "maximum" => JSON::Schema::MaximumAttribute,
18
+ "minimum" => JSON::Schema::MinimumAttribute,
19
+ "minItems" => JSON::Schema::MinItemsAttribute,
20
+ "maxItems" => JSON::Schema::MaxItemsAttribute,
21
+ "minProperties" => JSON::Schema::MinPropertiesAttribute,
22
+ "maxProperties" => JSON::Schema::MaxPropertiesAttribute,
23
+ "uniqueItems" => JSON::Schema::UniqueItemsAttribute,
24
+ "minLength" => JSON::Schema::MinLengthAttribute,
25
+ "maxLength" => JSON::Schema::MaxLengthAttribute,
26
+ "multipleOf" => JSON::Schema::MultipleOfAttribute,
27
+ "enum" => JSON::Schema::EnumAttribute,
28
+ "properties" => JSON::Schema::PropertiesV4Attribute,
29
+ "required" => JSON::Schema::RequiredAttribute,
30
+ "pattern" => JSON::Schema::PatternAttribute,
31
+ "patternProperties" => JSON::Schema::PatternPropertiesAttribute,
32
+ "additionalProperties" => JSON::Schema::AdditionalPropertiesAttribute,
33
+ "items" => JSON::Schema::ItemsAttribute,
34
+ "additionalItems" => JSON::Schema::AdditionalItemsAttribute,
35
+ "dependencies" => JSON::Schema::DependenciesV4Attribute,
36
+ "extends" => JSON::Schema::ExtendsAttribute,
37
+ "$ref" => JSON::Schema::RefAttribute
38
+ }
39
+ @default_formats = {
40
+ 'date-time' => DateTimeV4Format,
41
+ 'ipv4' => IP4Format,
42
+ 'ipv6' => IP6Format,
43
+ 'uri' => UriFormat
44
+ }
45
+ @formats = @default_formats.clone
46
+ @uri = JSON::Util::URI.parse("http://json-schema.org/draft/schema#")
47
+ @names = ["draft6", "http://json-schema.org/draft/schema#"]
48
+ @metaschema_name = "draft-06.json"
49
+ end
50
+
51
+ JSON::Validator.register_validator(self.new)
52
+ JSON::Validator.register_default_validator(self.new)
53
+ end
54
+
55
+ end
56
+ end
@@ -0,0 +1,13 @@
1
+ module JSON
2
+ class Schema
3
+
4
+ class HyperDraft1 < Draft1
5
+ def initialize
6
+ super
7
+ @uri = JSON::Util::URI.parse("http://json-schema.org/draft-01/hyper-schema#")
8
+ end
9
+
10
+ JSON::Validator.register_validator(self.new)
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,13 @@
1
+ module JSON
2
+ class Schema
3
+
4
+ class HyperDraft2 < Draft2
5
+ def initialize
6
+ super
7
+ @uri = JSON::Util::URI.parse("http://json-schema.org/draft-02/hyper-schema#")
8
+ end
9
+
10
+ JSON::Validator.register_validator(self.new)
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,13 @@
1
+ module JSON
2
+ class Schema
3
+
4
+ class HyperDraft3 < Draft3
5
+ def initialize
6
+ super
7
+ @uri = JSON::Util::URI.parse("http://json-schema.org/draft-03/hyper-schema#")
8
+ end
9
+
10
+ JSON::Validator.register_validator(self.new)
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,13 @@
1
+ module JSON
2
+ class Schema
3
+
4
+ class HyperDraft4 < Draft4
5
+ def initialize
6
+ super
7
+ @uri = JSON::Util::URI.parse("http://json-schema.org/draft-04/hyper-schema#")
8
+ end
9
+
10
+ JSON::Validator.register_validator(self.new)
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,13 @@
1
+ module JSON
2
+ class Schema
3
+
4
+ class HyperDraft6 < Draft6
5
+ def initialize
6
+ super
7
+ @uri = JSON::Util::URI.parse("http://json-schema.org/draft-06/hyper-schema#")
8
+ end
9
+
10
+ JSON::Validator.register_validator(self.new)
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,18 @@
1
+ require 'rubygems'
2
+
3
+ if Gem::Specification::find_all_by_name('multi_json').any?
4
+ require 'multi_json'
5
+
6
+ # Force MultiJson to load an engine before we define the JSON constant here; otherwise,
7
+ # it looks for things that are under the JSON namespace that aren't there (since we have defined it here)
8
+ MultiJson.respond_to?(:adapter) ? MultiJson.adapter : MultiJson.engine
9
+ end
10
+
11
+ require 'json-schema/util/array_set'
12
+ require 'json-schema/util/uri'
13
+ require 'json-schema/schema'
14
+ require 'json-schema/schema/reader'
15
+ require 'json-schema/validator'
16
+
17
+ Dir[File.join(File.dirname(__FILE__), "json-schema/attributes/**/*.rb")].each {|file| require file }
18
+ Dir[File.join(File.dirname(__FILE__), "json-schema/validators/*.rb")].sort!.each {|file| require file }
@@ -0,0 +1,155 @@
1
+ {
2
+ "$schema" : "http://json-schema.org/draft-01/hyper-schema#",
3
+ "id" : "http://json-schema.org/draft-01/schema#",
4
+ "type" : "object",
5
+
6
+ "properties" : {
7
+ "type" : {
8
+ "type" : ["string", "array"],
9
+ "items" : {
10
+ "type" : ["string", {"$ref" : "#"}]
11
+ },
12
+ "optional" : true,
13
+ "default" : "any"
14
+ },
15
+
16
+ "properties" : {
17
+ "type" : "object",
18
+ "additionalProperties" : {"$ref" : "#"},
19
+ "optional" : true,
20
+ "default" : {}
21
+ },
22
+
23
+ "items" : {
24
+ "type" : [{"$ref" : "#"}, "array"],
25
+ "items" : {"$ref" : "#"},
26
+ "optional" : true,
27
+ "default" : {}
28
+ },
29
+
30
+ "optional" : {
31
+ "type" : "boolean",
32
+ "optional" : true,
33
+ "default" : false
34
+ },
35
+
36
+ "additionalProperties" : {
37
+ "type" : [{"$ref" : "#"}, "boolean"],
38
+ "optional" : true,
39
+ "default" : {}
40
+ },
41
+
42
+ "requires" : {
43
+ "type" : ["string", {"$ref" : "#"}],
44
+ "optional" : true
45
+ },
46
+
47
+ "minimum" : {
48
+ "type" : "number",
49
+ "optional" : true
50
+ },
51
+
52
+ "maximum" : {
53
+ "type" : "number",
54
+ "optional" : true
55
+ },
56
+
57
+ "minimumCanEqual" : {
58
+ "type" : "boolean",
59
+ "optional" : true,
60
+ "requires" : "minimum",
61
+ "default" : true
62
+ },
63
+
64
+ "maximumCanEqual" : {
65
+ "type" : "boolean",
66
+ "optional" : true,
67
+ "requires" : "maximum",
68
+ "default" : true
69
+ },
70
+
71
+ "minItems" : {
72
+ "type" : "integer",
73
+ "optional" : true,
74
+ "minimum" : 0,
75
+ "default" : 0
76
+ },
77
+
78
+ "maxItems" : {
79
+ "type" : "integer",
80
+ "optional" : true,
81
+ "minimum" : 0
82
+ },
83
+
84
+ "pattern" : {
85
+ "type" : "string",
86
+ "optional" : true,
87
+ "format" : "regex"
88
+ },
89
+
90
+ "minLength" : {
91
+ "type" : "integer",
92
+ "optional" : true,
93
+ "minimum" : 0,
94
+ "default" : 0
95
+ },
96
+
97
+ "maxLength" : {
98
+ "type" : "integer",
99
+ "optional" : true
100
+ },
101
+
102
+ "enum" : {
103
+ "type" : "array",
104
+ "optional" : true,
105
+ "minItems" : 1
106
+ },
107
+
108
+ "title" : {
109
+ "type" : "string",
110
+ "optional" : true
111
+ },
112
+
113
+ "description" : {
114
+ "type" : "string",
115
+ "optional" : true
116
+ },
117
+
118
+ "format" : {
119
+ "type" : "string",
120
+ "optional" : true
121
+ },
122
+
123
+ "contentEncoding" : {
124
+ "type" : "string",
125
+ "optional" : true
126
+ },
127
+
128
+ "default" : {
129
+ "type" : "any",
130
+ "optional" : true
131
+ },
132
+
133
+ "maxDecimal" : {
134
+ "type" : "integer",
135
+ "optional" : true,
136
+ "minimum" : 0
137
+ },
138
+
139
+ "disallow" : {
140
+ "type" : ["string", "array"],
141
+ "items" : {"type" : "string"},
142
+ "optional" : true
143
+ },
144
+
145
+ "extends" : {
146
+ "type" : [{"$ref" : "#"}, "array"],
147
+ "items" : {"$ref" : "#"},
148
+ "optional" : true,
149
+ "default" : {}
150
+ }
151
+ },
152
+
153
+ "optional" : true,
154
+ "default" : {}
155
+ }
@@ -0,0 +1,166 @@
1
+ {
2
+ "$schema" : "http://json-schema.org/draft-02/hyper-schema#",
3
+ "id" : "http://json-schema.org/draft-02/schema#",
4
+ "type" : "object",
5
+
6
+ "properties" : {
7
+ "type" : {
8
+ "type" : ["string", "array"],
9
+ "items" : {
10
+ "type" : ["string", {"$ref" : "#"}]
11
+ },
12
+ "optional" : true,
13
+ "uniqueItems" : true,
14
+ "default" : "any"
15
+ },
16
+
17
+ "properties" : {
18
+ "type" : "object",
19
+ "additionalProperties" : {"$ref" : "#"},
20
+ "optional" : true,
21
+ "default" : {}
22
+ },
23
+
24
+ "items" : {
25
+ "type" : [{"$ref" : "#"}, "array"],
26
+ "items" : {"$ref" : "#"},
27
+ "optional" : true,
28
+ "default" : {}
29
+ },
30
+
31
+ "optional" : {
32
+ "type" : "boolean",
33
+ "optional" : true,
34
+ "default" : false
35
+ },
36
+
37
+ "additionalProperties" : {
38
+ "type" : [{"$ref" : "#"}, "boolean"],
39
+ "optional" : true,
40
+ "default" : {}
41
+ },
42
+
43
+ "requires" : {
44
+ "type" : ["string", {"$ref" : "#"}],
45
+ "optional" : true
46
+ },
47
+
48
+ "minimum" : {
49
+ "type" : "number",
50
+ "optional" : true
51
+ },
52
+
53
+ "maximum" : {
54
+ "type" : "number",
55
+ "optional" : true
56
+ },
57
+
58
+ "minimumCanEqual" : {
59
+ "type" : "boolean",
60
+ "optional" : true,
61
+ "requires" : "minimum",
62
+ "default" : true
63
+ },
64
+
65
+ "maximumCanEqual" : {
66
+ "type" : "boolean",
67
+ "optional" : true,
68
+ "requires" : "maximum",
69
+ "default" : true
70
+ },
71
+
72
+ "minItems" : {
73
+ "type" : "integer",
74
+ "optional" : true,
75
+ "minimum" : 0,
76
+ "default" : 0
77
+ },
78
+
79
+ "maxItems" : {
80
+ "type" : "integer",
81
+ "optional" : true,
82
+ "minimum" : 0
83
+ },
84
+
85
+ "uniqueItems" : {
86
+ "type" : "boolean",
87
+ "optional" : true,
88
+ "default" : false
89
+ },
90
+
91
+ "pattern" : {
92
+ "type" : "string",
93
+ "optional" : true,
94
+ "format" : "regex"
95
+ },
96
+
97
+ "minLength" : {
98
+ "type" : "integer",
99
+ "optional" : true,
100
+ "minimum" : 0,
101
+ "default" : 0
102
+ },
103
+
104
+ "maxLength" : {
105
+ "type" : "integer",
106
+ "optional" : true
107
+ },
108
+
109
+ "enum" : {
110
+ "type" : "array",
111
+ "optional" : true,
112
+ "minItems" : 1,
113
+ "uniqueItems" : true
114
+ },
115
+
116
+ "title" : {
117
+ "type" : "string",
118
+ "optional" : true
119
+ },
120
+
121
+ "description" : {
122
+ "type" : "string",
123
+ "optional" : true
124
+ },
125
+
126
+ "format" : {
127
+ "type" : "string",
128
+ "optional" : true
129
+ },
130
+
131
+ "contentEncoding" : {
132
+ "type" : "string",
133
+ "optional" : true
134
+ },
135
+
136
+ "default" : {
137
+ "type" : "any",
138
+ "optional" : true
139
+ },
140
+
141
+ "divisibleBy" : {
142
+ "type" : "number",
143
+ "minimum" : 0,
144
+ "minimumCanEqual" : false,
145
+ "optional" : true,
146
+ "default" : 1
147
+ },
148
+
149
+ "disallow" : {
150
+ "type" : ["string", "array"],
151
+ "items" : {"type" : "string"},
152
+ "optional" : true,
153
+ "uniqueItems" : true
154
+ },
155
+
156
+ "extends" : {
157
+ "type" : [{"$ref" : "#"}, "array"],
158
+ "items" : {"$ref" : "#"},
159
+ "optional" : true,
160
+ "default" : {}
161
+ }
162
+ },
163
+
164
+ "optional" : true,
165
+ "default" : {}
166
+ }