json_schemer 1.0.3 → 2.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/ci.yml +2 -7
- data/CHANGELOG.md +51 -0
- data/Gemfile.lock +10 -3
- data/README.md +328 -14
- data/json_schemer.gemspec +3 -1
- data/lib/json_schemer/content.rb +18 -0
- data/lib/json_schemer/draft201909/meta.rb +320 -0
- data/lib/json_schemer/draft201909/vocab/applicator.rb +104 -0
- data/lib/json_schemer/draft201909/vocab/core.rb +45 -0
- data/lib/json_schemer/draft201909/vocab.rb +31 -0
- data/lib/json_schemer/draft202012/meta.rb +364 -0
- data/lib/json_schemer/draft202012/vocab/applicator.rb +382 -0
- data/lib/json_schemer/draft202012/vocab/content.rb +52 -0
- data/lib/json_schemer/draft202012/vocab/core.rb +160 -0
- data/lib/json_schemer/draft202012/vocab/format_annotation.rb +23 -0
- data/lib/json_schemer/draft202012/vocab/format_assertion.rb +23 -0
- data/lib/json_schemer/draft202012/vocab/meta_data.rb +30 -0
- data/lib/json_schemer/draft202012/vocab/unevaluated.rb +94 -0
- data/lib/json_schemer/draft202012/vocab/validation.rb +286 -0
- data/lib/json_schemer/draft202012/vocab.rb +105 -0
- data/lib/json_schemer/draft4/meta.rb +161 -0
- data/lib/json_schemer/draft4/vocab/validation.rb +39 -0
- data/lib/json_schemer/draft4/vocab.rb +18 -0
- data/lib/json_schemer/draft6/meta.rb +172 -0
- data/lib/json_schemer/draft6/vocab.rb +16 -0
- data/lib/json_schemer/draft7/meta.rb +183 -0
- data/lib/json_schemer/draft7/vocab/validation.rb +69 -0
- data/lib/json_schemer/draft7/vocab.rb +30 -0
- data/lib/json_schemer/errors.rb +1 -0
- data/lib/json_schemer/format/duration.rb +23 -0
- data/lib/json_schemer/format/json_pointer.rb +18 -0
- data/lib/json_schemer/format.rb +128 -106
- data/lib/json_schemer/keyword.rb +53 -0
- data/lib/json_schemer/location.rb +25 -0
- data/lib/json_schemer/openapi.rb +40 -0
- data/lib/json_schemer/openapi30/document.rb +1672 -0
- data/lib/json_schemer/openapi30/meta.rb +32 -0
- data/lib/json_schemer/openapi30/vocab/base.rb +18 -0
- data/lib/json_schemer/openapi30/vocab.rb +12 -0
- data/lib/json_schemer/openapi31/document.rb +1557 -0
- data/lib/json_schemer/openapi31/meta.rb +136 -0
- data/lib/json_schemer/openapi31/vocab/base.rb +127 -0
- data/lib/json_schemer/openapi31/vocab.rb +18 -0
- data/lib/json_schemer/output.rb +56 -0
- data/lib/json_schemer/result.rb +229 -0
- data/lib/json_schemer/schema.rb +423 -0
- data/lib/json_schemer/version.rb +1 -1
- data/lib/json_schemer.rb +198 -24
- metadata +71 -10
- data/lib/json_schemer/schema/base.rb +0 -677
- data/lib/json_schemer/schema/draft4.json +0 -149
- data/lib/json_schemer/schema/draft4.rb +0 -44
- data/lib/json_schemer/schema/draft6.json +0 -155
- data/lib/json_schemer/schema/draft6.rb +0 -25
- data/lib/json_schemer/schema/draft7.json +0 -172
- data/lib/json_schemer/schema/draft7.rb +0 -32
@@ -1,149 +0,0 @@
|
|
1
|
-
{
|
2
|
-
"id": "http://json-schema.org/draft-04/schema#",
|
3
|
-
"$schema": "http://json-schema.org/draft-04/schema#",
|
4
|
-
"description": "Core schema meta-schema",
|
5
|
-
"definitions": {
|
6
|
-
"schemaArray": {
|
7
|
-
"type": "array",
|
8
|
-
"minItems": 1,
|
9
|
-
"items": { "$ref": "#" }
|
10
|
-
},
|
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": {
|
22
|
-
"type": "array",
|
23
|
-
"items": { "type": "string" },
|
24
|
-
"minItems": 1,
|
25
|
-
"uniqueItems": true
|
26
|
-
}
|
27
|
-
},
|
28
|
-
"type": "object",
|
29
|
-
"properties": {
|
30
|
-
"id": {
|
31
|
-
"type": "string"
|
32
|
-
},
|
33
|
-
"$schema": {
|
34
|
-
"type": "string"
|
35
|
-
},
|
36
|
-
"title": {
|
37
|
-
"type": "string"
|
38
|
-
},
|
39
|
-
"description": {
|
40
|
-
"type": "string"
|
41
|
-
},
|
42
|
-
"default": {},
|
43
|
-
"multipleOf": {
|
44
|
-
"type": "number",
|
45
|
-
"minimum": 0,
|
46
|
-
"exclusiveMinimum": true
|
47
|
-
},
|
48
|
-
"maximum": {
|
49
|
-
"type": "number"
|
50
|
-
},
|
51
|
-
"exclusiveMaximum": {
|
52
|
-
"type": "boolean",
|
53
|
-
"default": false
|
54
|
-
},
|
55
|
-
"minimum": {
|
56
|
-
"type": "number"
|
57
|
-
},
|
58
|
-
"exclusiveMinimum": {
|
59
|
-
"type": "boolean",
|
60
|
-
"default": false
|
61
|
-
},
|
62
|
-
"maxLength": { "$ref": "#/definitions/positiveInteger" },
|
63
|
-
"minLength": { "$ref": "#/definitions/positiveIntegerDefault0" },
|
64
|
-
"pattern": {
|
65
|
-
"type": "string",
|
66
|
-
"format": "regex"
|
67
|
-
},
|
68
|
-
"additionalItems": {
|
69
|
-
"anyOf": [
|
70
|
-
{ "type": "boolean" },
|
71
|
-
{ "$ref": "#" }
|
72
|
-
],
|
73
|
-
"default": {}
|
74
|
-
},
|
75
|
-
"items": {
|
76
|
-
"anyOf": [
|
77
|
-
{ "$ref": "#" },
|
78
|
-
{ "$ref": "#/definitions/schemaArray" }
|
79
|
-
],
|
80
|
-
"default": {}
|
81
|
-
},
|
82
|
-
"maxItems": { "$ref": "#/definitions/positiveInteger" },
|
83
|
-
"minItems": { "$ref": "#/definitions/positiveIntegerDefault0" },
|
84
|
-
"uniqueItems": {
|
85
|
-
"type": "boolean",
|
86
|
-
"default": false
|
87
|
-
},
|
88
|
-
"maxProperties": { "$ref": "#/definitions/positiveInteger" },
|
89
|
-
"minProperties": { "$ref": "#/definitions/positiveIntegerDefault0" },
|
90
|
-
"required": { "$ref": "#/definitions/stringArray" },
|
91
|
-
"additionalProperties": {
|
92
|
-
"anyOf": [
|
93
|
-
{ "type": "boolean" },
|
94
|
-
{ "$ref": "#" }
|
95
|
-
],
|
96
|
-
"default": {}
|
97
|
-
},
|
98
|
-
"definitions": {
|
99
|
-
"type": "object",
|
100
|
-
"additionalProperties": { "$ref": "#" },
|
101
|
-
"default": {}
|
102
|
-
},
|
103
|
-
"properties": {
|
104
|
-
"type": "object",
|
105
|
-
"additionalProperties": { "$ref": "#" },
|
106
|
-
"default": {}
|
107
|
-
},
|
108
|
-
"patternProperties": {
|
109
|
-
"type": "object",
|
110
|
-
"additionalProperties": { "$ref": "#" },
|
111
|
-
"default": {}
|
112
|
-
},
|
113
|
-
"dependencies": {
|
114
|
-
"type": "object",
|
115
|
-
"additionalProperties": {
|
116
|
-
"anyOf": [
|
117
|
-
{ "$ref": "#" },
|
118
|
-
{ "$ref": "#/definitions/stringArray" }
|
119
|
-
]
|
120
|
-
}
|
121
|
-
},
|
122
|
-
"enum": {
|
123
|
-
"type": "array",
|
124
|
-
"minItems": 1,
|
125
|
-
"uniqueItems": true
|
126
|
-
},
|
127
|
-
"type": {
|
128
|
-
"anyOf": [
|
129
|
-
{ "$ref": "#/definitions/simpleTypes" },
|
130
|
-
{
|
131
|
-
"type": "array",
|
132
|
-
"items": { "$ref": "#/definitions/simpleTypes" },
|
133
|
-
"minItems": 1,
|
134
|
-
"uniqueItems": true
|
135
|
-
}
|
136
|
-
]
|
137
|
-
},
|
138
|
-
"format": { "type": "string" },
|
139
|
-
"allOf": { "$ref": "#/definitions/schemaArray" },
|
140
|
-
"anyOf": { "$ref": "#/definitions/schemaArray" },
|
141
|
-
"oneOf": { "$ref": "#/definitions/schemaArray" },
|
142
|
-
"not": { "$ref": "#" }
|
143
|
-
},
|
144
|
-
"dependencies": {
|
145
|
-
"exclusiveMaximum": [ "maximum" ],
|
146
|
-
"exclusiveMinimum": [ "minimum" ]
|
147
|
-
},
|
148
|
-
"default": {}
|
149
|
-
}
|
@@ -1,44 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
module JSONSchemer
|
3
|
-
module Schema
|
4
|
-
class Draft4 < Base
|
5
|
-
ID_KEYWORD = 'id'
|
6
|
-
SUPPORTED_FORMATS = Set[
|
7
|
-
'date-time',
|
8
|
-
'email',
|
9
|
-
'hostname',
|
10
|
-
'ipv4',
|
11
|
-
'ipv6',
|
12
|
-
'uri',
|
13
|
-
'regex'
|
14
|
-
].freeze
|
15
|
-
|
16
|
-
private
|
17
|
-
|
18
|
-
def id_keyword
|
19
|
-
ID_KEYWORD
|
20
|
-
end
|
21
|
-
|
22
|
-
def supported_format?(format)
|
23
|
-
SUPPORTED_FORMATS.include?(format)
|
24
|
-
end
|
25
|
-
|
26
|
-
def validate_exclusive_maximum(instance, exclusive_maximum, maximum)
|
27
|
-
yield error(instance, 'exclusiveMaximum') if exclusive_maximum && instance.data >= maximum
|
28
|
-
end
|
29
|
-
|
30
|
-
def validate_exclusive_minimum(instance, exclusive_minimum, minimum)
|
31
|
-
yield error(instance, 'exclusiveMinimum') if exclusive_minimum && instance.data <= minimum
|
32
|
-
end
|
33
|
-
|
34
|
-
def validate_integer(instance, &block)
|
35
|
-
if !instance.data.is_a?(Integer)
|
36
|
-
yield error(instance, 'integer')
|
37
|
-
return
|
38
|
-
end
|
39
|
-
|
40
|
-
validate_numeric(instance, &block)
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|
@@ -1,155 +0,0 @@
|
|
1
|
-
{
|
2
|
-
"$schema": "http://json-schema.org/draft-06/schema#",
|
3
|
-
"$id": "http://json-schema.org/draft-06/schema#",
|
4
|
-
"title": "Core schema meta-schema",
|
5
|
-
"definitions": {
|
6
|
-
"schemaArray": {
|
7
|
-
"type": "array",
|
8
|
-
"minItems": 1,
|
9
|
-
"items": { "$ref": "#" }
|
10
|
-
},
|
11
|
-
"nonNegativeInteger": {
|
12
|
-
"type": "integer",
|
13
|
-
"minimum": 0
|
14
|
-
},
|
15
|
-
"nonNegativeIntegerDefault0": {
|
16
|
-
"allOf": [
|
17
|
-
{ "$ref": "#/definitions/nonNegativeInteger" },
|
18
|
-
{ "default": 0 }
|
19
|
-
]
|
20
|
-
},
|
21
|
-
"simpleTypes": {
|
22
|
-
"enum": [
|
23
|
-
"array",
|
24
|
-
"boolean",
|
25
|
-
"integer",
|
26
|
-
"null",
|
27
|
-
"number",
|
28
|
-
"object",
|
29
|
-
"string"
|
30
|
-
]
|
31
|
-
},
|
32
|
-
"stringArray": {
|
33
|
-
"type": "array",
|
34
|
-
"items": { "type": "string" },
|
35
|
-
"uniqueItems": true,
|
36
|
-
"default": []
|
37
|
-
}
|
38
|
-
},
|
39
|
-
"type": ["object", "boolean"],
|
40
|
-
"properties": {
|
41
|
-
"$id": {
|
42
|
-
"type": "string",
|
43
|
-
"format": "uri-reference"
|
44
|
-
},
|
45
|
-
"$schema": {
|
46
|
-
"type": "string",
|
47
|
-
"format": "uri"
|
48
|
-
},
|
49
|
-
"$ref": {
|
50
|
-
"type": "string",
|
51
|
-
"format": "uri-reference"
|
52
|
-
},
|
53
|
-
"title": {
|
54
|
-
"type": "string"
|
55
|
-
},
|
56
|
-
"description": {
|
57
|
-
"type": "string"
|
58
|
-
},
|
59
|
-
"default": {},
|
60
|
-
"examples": {
|
61
|
-
"type": "array",
|
62
|
-
"items": {}
|
63
|
-
},
|
64
|
-
"multipleOf": {
|
65
|
-
"type": "number",
|
66
|
-
"exclusiveMinimum": 0
|
67
|
-
},
|
68
|
-
"maximum": {
|
69
|
-
"type": "number"
|
70
|
-
},
|
71
|
-
"exclusiveMaximum": {
|
72
|
-
"type": "number"
|
73
|
-
},
|
74
|
-
"minimum": {
|
75
|
-
"type": "number"
|
76
|
-
},
|
77
|
-
"exclusiveMinimum": {
|
78
|
-
"type": "number"
|
79
|
-
},
|
80
|
-
"maxLength": { "$ref": "#/definitions/nonNegativeInteger" },
|
81
|
-
"minLength": { "$ref": "#/definitions/nonNegativeIntegerDefault0" },
|
82
|
-
"pattern": {
|
83
|
-
"type": "string",
|
84
|
-
"format": "regex"
|
85
|
-
},
|
86
|
-
"additionalItems": { "$ref": "#" },
|
87
|
-
"items": {
|
88
|
-
"anyOf": [
|
89
|
-
{ "$ref": "#" },
|
90
|
-
{ "$ref": "#/definitions/schemaArray" }
|
91
|
-
],
|
92
|
-
"default": {}
|
93
|
-
},
|
94
|
-
"maxItems": { "$ref": "#/definitions/nonNegativeInteger" },
|
95
|
-
"minItems": { "$ref": "#/definitions/nonNegativeIntegerDefault0" },
|
96
|
-
"uniqueItems": {
|
97
|
-
"type": "boolean",
|
98
|
-
"default": false
|
99
|
-
},
|
100
|
-
"contains": { "$ref": "#" },
|
101
|
-
"maxProperties": { "$ref": "#/definitions/nonNegativeInteger" },
|
102
|
-
"minProperties": { "$ref": "#/definitions/nonNegativeIntegerDefault0" },
|
103
|
-
"required": { "$ref": "#/definitions/stringArray" },
|
104
|
-
"additionalProperties": { "$ref": "#" },
|
105
|
-
"definitions": {
|
106
|
-
"type": "object",
|
107
|
-
"additionalProperties": { "$ref": "#" },
|
108
|
-
"default": {}
|
109
|
-
},
|
110
|
-
"properties": {
|
111
|
-
"type": "object",
|
112
|
-
"additionalProperties": { "$ref": "#" },
|
113
|
-
"default": {}
|
114
|
-
},
|
115
|
-
"patternProperties": {
|
116
|
-
"type": "object",
|
117
|
-
"additionalProperties": { "$ref": "#" },
|
118
|
-
"propertyNames": { "format": "regex" },
|
119
|
-
"default": {}
|
120
|
-
},
|
121
|
-
"dependencies": {
|
122
|
-
"type": "object",
|
123
|
-
"additionalProperties": {
|
124
|
-
"anyOf": [
|
125
|
-
{ "$ref": "#" },
|
126
|
-
{ "$ref": "#/definitions/stringArray" }
|
127
|
-
]
|
128
|
-
}
|
129
|
-
},
|
130
|
-
"propertyNames": { "$ref": "#" },
|
131
|
-
"const": {},
|
132
|
-
"enum": {
|
133
|
-
"type": "array",
|
134
|
-
"minItems": 1,
|
135
|
-
"uniqueItems": true
|
136
|
-
},
|
137
|
-
"type": {
|
138
|
-
"anyOf": [
|
139
|
-
{ "$ref": "#/definitions/simpleTypes" },
|
140
|
-
{
|
141
|
-
"type": "array",
|
142
|
-
"items": { "$ref": "#/definitions/simpleTypes" },
|
143
|
-
"minItems": 1,
|
144
|
-
"uniqueItems": true
|
145
|
-
}
|
146
|
-
]
|
147
|
-
},
|
148
|
-
"format": { "type": "string" },
|
149
|
-
"allOf": { "$ref": "#/definitions/schemaArray" },
|
150
|
-
"anyOf": { "$ref": "#/definitions/schemaArray" },
|
151
|
-
"oneOf": { "$ref": "#/definitions/schemaArray" },
|
152
|
-
"not": { "$ref": "#" }
|
153
|
-
},
|
154
|
-
"default": {}
|
155
|
-
}
|
@@ -1,25 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
module JSONSchemer
|
3
|
-
module Schema
|
4
|
-
class Draft6 < Base
|
5
|
-
SUPPORTED_FORMATS = Set[
|
6
|
-
'date-time',
|
7
|
-
'email',
|
8
|
-
'hostname',
|
9
|
-
'ipv4',
|
10
|
-
'ipv6',
|
11
|
-
'uri',
|
12
|
-
'uri-reference',
|
13
|
-
'uri-template',
|
14
|
-
'json-pointer',
|
15
|
-
'regex'
|
16
|
-
].freeze
|
17
|
-
|
18
|
-
private
|
19
|
-
|
20
|
-
def supported_format?(format)
|
21
|
-
SUPPORTED_FORMATS.include?(format)
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
@@ -1,172 +0,0 @@
|
|
1
|
-
{
|
2
|
-
"$schema": "http://json-schema.org/draft-07/schema#",
|
3
|
-
"$id": "http://json-schema.org/draft-07/schema#",
|
4
|
-
"title": "Core schema meta-schema",
|
5
|
-
"definitions": {
|
6
|
-
"schemaArray": {
|
7
|
-
"type": "array",
|
8
|
-
"minItems": 1,
|
9
|
-
"items": { "$ref": "#" }
|
10
|
-
},
|
11
|
-
"nonNegativeInteger": {
|
12
|
-
"type": "integer",
|
13
|
-
"minimum": 0
|
14
|
-
},
|
15
|
-
"nonNegativeIntegerDefault0": {
|
16
|
-
"allOf": [
|
17
|
-
{ "$ref": "#/definitions/nonNegativeInteger" },
|
18
|
-
{ "default": 0 }
|
19
|
-
]
|
20
|
-
},
|
21
|
-
"simpleTypes": {
|
22
|
-
"enum": [
|
23
|
-
"array",
|
24
|
-
"boolean",
|
25
|
-
"integer",
|
26
|
-
"null",
|
27
|
-
"number",
|
28
|
-
"object",
|
29
|
-
"string"
|
30
|
-
]
|
31
|
-
},
|
32
|
-
"stringArray": {
|
33
|
-
"type": "array",
|
34
|
-
"items": { "type": "string" },
|
35
|
-
"uniqueItems": true,
|
36
|
-
"default": []
|
37
|
-
}
|
38
|
-
},
|
39
|
-
"type": ["object", "boolean"],
|
40
|
-
"properties": {
|
41
|
-
"$id": {
|
42
|
-
"type": "string",
|
43
|
-
"format": "uri-reference"
|
44
|
-
},
|
45
|
-
"$schema": {
|
46
|
-
"type": "string",
|
47
|
-
"format": "uri"
|
48
|
-
},
|
49
|
-
"$ref": {
|
50
|
-
"type": "string",
|
51
|
-
"format": "uri-reference"
|
52
|
-
},
|
53
|
-
"$comment": {
|
54
|
-
"type": "string"
|
55
|
-
},
|
56
|
-
"title": {
|
57
|
-
"type": "string"
|
58
|
-
},
|
59
|
-
"description": {
|
60
|
-
"type": "string"
|
61
|
-
},
|
62
|
-
"default": true,
|
63
|
-
"readOnly": {
|
64
|
-
"type": "boolean",
|
65
|
-
"default": false
|
66
|
-
},
|
67
|
-
"writeOnly": {
|
68
|
-
"type": "boolean",
|
69
|
-
"default": false
|
70
|
-
},
|
71
|
-
"examples": {
|
72
|
-
"type": "array",
|
73
|
-
"items": true
|
74
|
-
},
|
75
|
-
"multipleOf": {
|
76
|
-
"type": "number",
|
77
|
-
"exclusiveMinimum": 0
|
78
|
-
},
|
79
|
-
"maximum": {
|
80
|
-
"type": "number"
|
81
|
-
},
|
82
|
-
"exclusiveMaximum": {
|
83
|
-
"type": "number"
|
84
|
-
},
|
85
|
-
"minimum": {
|
86
|
-
"type": "number"
|
87
|
-
},
|
88
|
-
"exclusiveMinimum": {
|
89
|
-
"type": "number"
|
90
|
-
},
|
91
|
-
"maxLength": { "$ref": "#/definitions/nonNegativeInteger" },
|
92
|
-
"minLength": { "$ref": "#/definitions/nonNegativeIntegerDefault0" },
|
93
|
-
"pattern": {
|
94
|
-
"type": "string",
|
95
|
-
"format": "regex"
|
96
|
-
},
|
97
|
-
"additionalItems": { "$ref": "#" },
|
98
|
-
"items": {
|
99
|
-
"anyOf": [
|
100
|
-
{ "$ref": "#" },
|
101
|
-
{ "$ref": "#/definitions/schemaArray" }
|
102
|
-
],
|
103
|
-
"default": true
|
104
|
-
},
|
105
|
-
"maxItems": { "$ref": "#/definitions/nonNegativeInteger" },
|
106
|
-
"minItems": { "$ref": "#/definitions/nonNegativeIntegerDefault0" },
|
107
|
-
"uniqueItems": {
|
108
|
-
"type": "boolean",
|
109
|
-
"default": false
|
110
|
-
},
|
111
|
-
"contains": { "$ref": "#" },
|
112
|
-
"maxProperties": { "$ref": "#/definitions/nonNegativeInteger" },
|
113
|
-
"minProperties": { "$ref": "#/definitions/nonNegativeIntegerDefault0" },
|
114
|
-
"required": { "$ref": "#/definitions/stringArray" },
|
115
|
-
"additionalProperties": { "$ref": "#" },
|
116
|
-
"definitions": {
|
117
|
-
"type": "object",
|
118
|
-
"additionalProperties": { "$ref": "#" },
|
119
|
-
"default": {}
|
120
|
-
},
|
121
|
-
"properties": {
|
122
|
-
"type": "object",
|
123
|
-
"additionalProperties": { "$ref": "#" },
|
124
|
-
"default": {}
|
125
|
-
},
|
126
|
-
"patternProperties": {
|
127
|
-
"type": "object",
|
128
|
-
"additionalProperties": { "$ref": "#" },
|
129
|
-
"propertyNames": { "format": "regex" },
|
130
|
-
"default": {}
|
131
|
-
},
|
132
|
-
"dependencies": {
|
133
|
-
"type": "object",
|
134
|
-
"additionalProperties": {
|
135
|
-
"anyOf": [
|
136
|
-
{ "$ref": "#" },
|
137
|
-
{ "$ref": "#/definitions/stringArray" }
|
138
|
-
]
|
139
|
-
}
|
140
|
-
},
|
141
|
-
"propertyNames": { "$ref": "#" },
|
142
|
-
"const": true,
|
143
|
-
"enum": {
|
144
|
-
"type": "array",
|
145
|
-
"items": true,
|
146
|
-
"minItems": 1,
|
147
|
-
"uniqueItems": true
|
148
|
-
},
|
149
|
-
"type": {
|
150
|
-
"anyOf": [
|
151
|
-
{ "$ref": "#/definitions/simpleTypes" },
|
152
|
-
{
|
153
|
-
"type": "array",
|
154
|
-
"items": { "$ref": "#/definitions/simpleTypes" },
|
155
|
-
"minItems": 1,
|
156
|
-
"uniqueItems": true
|
157
|
-
}
|
158
|
-
]
|
159
|
-
},
|
160
|
-
"format": { "type": "string" },
|
161
|
-
"contentMediaType": { "type": "string" },
|
162
|
-
"contentEncoding": { "type": "string" },
|
163
|
-
"if": { "$ref": "#" },
|
164
|
-
"then": { "$ref": "#" },
|
165
|
-
"else": { "$ref": "#" },
|
166
|
-
"allOf": { "$ref": "#/definitions/schemaArray" },
|
167
|
-
"anyOf": { "$ref": "#/definitions/schemaArray" },
|
168
|
-
"oneOf": { "$ref": "#/definitions/schemaArray" },
|
169
|
-
"not": { "$ref": "#" }
|
170
|
-
},
|
171
|
-
"default": true
|
172
|
-
}
|
@@ -1,32 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
module JSONSchemer
|
3
|
-
module Schema
|
4
|
-
class Draft7 < Base
|
5
|
-
SUPPORTED_FORMATS = Set[
|
6
|
-
'date-time',
|
7
|
-
'date',
|
8
|
-
'time',
|
9
|
-
'email',
|
10
|
-
'idn-email',
|
11
|
-
'hostname',
|
12
|
-
'idn-hostname',
|
13
|
-
'ipv4',
|
14
|
-
'ipv6',
|
15
|
-
'uri',
|
16
|
-
'uri-reference',
|
17
|
-
'iri',
|
18
|
-
'iri-reference',
|
19
|
-
'uri-template',
|
20
|
-
'json-pointer',
|
21
|
-
'relative-json-pointer',
|
22
|
-
'regex'
|
23
|
-
].freeze
|
24
|
-
|
25
|
-
private
|
26
|
-
|
27
|
-
def supported_format?(format)
|
28
|
-
SUPPORTED_FORMATS.include?(format)
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|