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