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.
Recommended reading paths
First-time user
Production rollout
Plugin integrator / Java API
Server administrator / Commands
Schema author / validator deep dive
Internal architecture review
Section map
Tutorials
How-to guides
Reference
- Schema keywords
- Validation behavior
- Skript API
- Java API
- Commands
- Format reference
- Config reference
- Examples and schema construction
Explanation
Documentation governance
- Structure and implementation details: Pages architecture
- Writing standards: Writing guide
- Contributor workflow: Developer guide
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.
2020-12 (Recommended)
{
"$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/exclusiveMaximumfrom boolean to numeric form - Draft-07 to 2020-12: Replace
itemsarray withprefixItems - All drafts: Use
$defsinstead ofdefinitionsfor new schemas
External Resources
- JSON Schema Official Documentation
- JSON Schema Specification (2020-12)
- JSON Schema Specification (2019-09)
- Understanding JSON Schema
- JSON Schema Examples
Related Pages
- Schema keywords - Complete keyword reference
- Examples and schema construction - Practical schema patterns
- Format reference - Supported string formats
- Validation behavior - Runtime execution order