Module: JSONSchemer::Draft4

Defined in:
lib/json_schemer/draft4/meta.rb,
lib/json_schemer/draft4/vocab.rb,
lib/json_schemer/draft4/vocab/validation.rb

Defined Under Namespace

Modules: Vocab

Constant Summary collapse

BASE_URI =
URI('http://json-schema.org/draft-04/schema#')
FORMATS =
Draft6::FORMATS.dup
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' => {}
}