Overview

Learn the documentation model, navigation system, and recommended reading paths for Schema Validator.

Documentation model

This site uses Diataxis so each page has one clear purpose:

  • Tutorials: learn by doing.
  • How-to guides: complete a specific operational task.
  • Reference: consult exact behavior and interfaces.
  • Explanation: understand architecture and design choices.

First-time user

  1. Getting started
  2. Installation
  3. Quickstart
  4. First validation workflow
  5. Configuration

Production rollout

  1. Installation
  2. Schema directory workflow
  3. Configuration
  4. Commands
  5. Config reference
  6. Validation behavior

Plugin integrator / Java API

  1. Installation
  2. Java API
  3. Architecture
  4. Validation behavior

Server administrator / Commands

  1. Installation
  2. Commands
  3. Configuration
  4. Schema directory workflow
  5. Design constraints

Schema author / validator deep dive

  1. Schema keywords
  2. Format reference
  3. Examples and schema construction
  4. Examples

Internal architecture review

  1. Architecture
  2. Design constraints
  3. Validation behavior

Section map

Tutorials

How-to guides

Reference

Explanation

Documentation governance


JSON Schema Versions and Drafts

Schema-Validator supports multiple JSON Schema drafts. Understanding the differences helps you write better schemas.

Supported Drafts

Draft Status Key Features
Draft-04 Legacy exclusiveMinimum/exclusiveMaximum as booleans, dependencies keyword
Draft-06 Legacy const, contains, propertyNames
Draft-07 Legacy if/then/else, readOnly/writeOnly
2019-09 Current dependentRequired/dependentSchemas, unevaluatedProperties/unevaluatedItems, $defs
2020-12 Current prefixItems (replaces items for tuples), prefixItems + items for tuple validation

Draft-Specific Examples

Draft-04 (Legacy)

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "age": {
      "type": "integer",
      "minimum": 0,
      "maximum": 100,
      "exclusiveMinimum": true,
      "exclusiveMaximum": true
    }
  }
}

Note: In Draft-04, exclusiveMinimum and exclusiveMaximum are booleans that modify minimum and maximum.

Draft-06

{
  "$schema": "http://json-schema.org/draft-06/schema#",
  "type": "object",
  "properties": {
    "status": {
      "const": "active"
    },
    "tags": {
      "type": "array",
      "contains": {"type": "string"}
    }
  }
}

Note: Draft-06 introduced const and contains keywords.

Draft-07

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "type": {"enum": ["user", "admin"]},
    "permissions": {"type": "array"}
  },
  "if": {"properties": {"type": {"const": "admin"}}},
  "then": {"required": ["permissions"]},
  "else": {"properties": {"permissions": false}}
}

Note: Draft-07 introduced if/then/else for conditional validation.

2019-09

{
  "$schema": "https://json-schema.org/draft/2019-09/schema",
  "type": "object",
  "properties": {
    "name": {"type": "string"},
    "email": {"type": "string"}
  },
  "dependentRequired": {
    "email": ["name"]
  },
  "$defs": {
    "address": {
      "type": "object",
      "properties": {
        "street": {"type": "string"}
      }
    }
  }
}

Note: 2019-09 introduced dependentRequired, dependentSchemas, unevaluatedProperties, and $defs.

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "array",
  "prefixItems": [
    {"type": "string"},
    {"type": "integer"}
  ],
  "items": false
}

Note: 2020-12 uses prefixItems for tuple validation (replaces Draft-07’s items array form).

Migration Guides

  • Draft-04 to 2020-12: Update exclusiveMinimum/exclusiveMaximum from boolean to numeric form
  • Draft-07 to 2020-12: Replace items array with prefixItems
  • All drafts: Use $defs instead of definitions for new schemas

External Resources

Was this page helpful?

No personal data collected — Privacy Policy