diff --git a/CNAME b/CNAME
deleted file mode 100644
index 0d9c62bd..00000000
--- a/CNAME
+++ /dev/null
@@ -1,2 +0,0 @@
-json-schema.org
-
diff --git a/README.md b/README.md
index b1992750..5ee11859 100644
--- a/README.md
+++ b/README.md
@@ -1,7 +1,15 @@
+---
+📌 **Deprecation Notice** 📌
+
+This repository is now deprecated. To contribute to JSON Schema's website please use the new repository ➡️ [https://github.com/json-schema-org/website](https://github.com/json-schema-org/website).
+
+---
+
# JSON Schema Website
+[](https://www.repostatus.org/#moved) to [https://github.com/json-schema-org/website](https://github.com/json-schema-org/websitem)
+
[](https://github.com/json-schema-org/.github/blob/main/CODE_OF_CONDUCT.md)
-[](https://www.repostatus.org/#active)
[](https://opencollective.com/json-schema)
This is the repository for the [JSON Schema website](https://json-schema.org).
diff --git a/_data/validator-libraries-modern.yml b/_data/validator-libraries-modern.yml
index 1844bfaa..04de6723 100644
--- a/_data/validator-libraries-modern.yml
+++ b/_data/validator-libraries-modern.yml
@@ -88,6 +88,12 @@
last-updated: "2022-08-31"
- name: Elixir
implementations:
+ - name: Exonerate
+ url: https://hexdocs.pm/exonerate/Exonerate.html
+ date-draft: [2020-12, 2019-09]
+ draft: [7, 6, 4]
+ license: MIT
+ last-updated: "2023-04-04"
- name: JsonXema
url: https://github.com/hrzndhrn/json_xema
date-draft: []
@@ -143,7 +149,7 @@
- name: networknt/json-schema-validator
url: https://github.com/networknt/json-schema-validator
notes: Support OpenAPI 3.0 with Jackson parser
- date-draft: [2020-12, 2019-09]
+ date-draft: []
draft: [7, 6, 4]
license: Apache License 2.0
compliance:
@@ -151,6 +157,12 @@
docs: https://github.com/networknt/json-schema-validator/blob/master/doc/config.md
instructions: "set `handleNullableField` to `false`"
last-updated: "2022-08-31"
+ - name: erosb/json-sKema
+ url: https://github.com/erosb/json-sKema
+ notes: Successor of the everit-org/json-schema library
+ date-draft: [2020-12]
+ license: MIT
+ last-updated: "2023-04-10"
- name: Snow
url: https://github.com/ssilverman/snowy-json
notes: Uses Maven for the project and Gson under the hood.
@@ -170,6 +182,18 @@
draft: [7, 6, 4]
license: Apache License 2.0
last-updated: "2022-08-31"
+ - name: json-schema (dev.harrel)
+ url: https://github.com/harrel56/json-schema
+ notes: JSON library agnostic implementation. Supports custom keywords.
+ date-draft: [ 2020-12 ]
+ license: MIT
+ last-updated: "2023-06-29"
+ - name: Zuunr JSON
+ url: https://bitbucket.org/zuunr/json
+ notes: Immutable JSON representation in Java + validation and filtering based on JSON Schema
+ date-draft: [ 2020-12 ]
+ license: Apache 2.0
+ last-updated: 2023-09-04
- name: JavaScript
implementations:
- name: Hyperjump JSV
@@ -179,6 +203,20 @@
draft: [7, 6, 4]
license: MIT
last-updated: "2022-08-31"
+ - name: "@exodus/schemasafe"
+ url: https://github.com/ExodusMovement/schemasafe
+ notes: |
+ For Node.js and browsers, with security and speed being the main focus. Pre-compiles schemas to JS functions.
+ [Supports OpenAPI `discriminator`](https://github.com/ExodusMovement/schemasafe/blob/master/doc/Discriminator-support.md).
+ Default behavior is hardened with additional schema coherence validation.
+ date-draft: [2020-12, 2019-09]
+ draft: [7, 6, 4]
+ license: MIT
+ compliance:
+ config:
+ docs: https://github.com/ExodusMovement/schemasafe/blob/master/doc/Options.md
+ instructions: "disable schema coherence checks and `format` assertion by setting option `mode: 'spec'`"
+ last-updated: "2023-08-29"
- name: ajv
url: https://github.com/ajv-validator/ajv
notes: "for Node.js and browsers - supports [user-defined keywords](https://github.com/ajv-validator/ajv/blob/master/docs/keywords.md) and [$data reference](https://github.com/json-schema-org/json-schema-spec/issues/51)"
@@ -243,6 +281,15 @@
draft: [7]
license: MIT
last-updated: "2022-08-31"
+ - name: json-schema-validator
+ url: https://github.com/OptimumCode/json-schema-validator
+ notes: |
+ Kotlin Muliplatform implementation of JSON schema to validate the JsonElement from kotlinx.serialization-json.
+ The library is 'work in progress' and new features/drafts will be added in the future.
+ date-draft: []
+ draft: [7]
+ license: MIT
+ last-updated: "2023-08-01"
- name: Perl
implementations:
- name: JSON::Schema::Modern
@@ -321,10 +368,10 @@
implementations:
- name: JSONSchemer
url: https://github.com/davishmcclurg/json_schemer
- date-draft: []
+ date-draft: [2020-12, 2019-09]
draft: [7, 6, 4]
license: MIT
- last-updated: "2022-08-31"
+ last-updated: "2023-08-20"
- name: JSI
url: https://rubydoc.info/gems/jsi
date-draft: []
diff --git a/implementations.md b/implementations.md
index cb578e54..c2df42b0 100644
--- a/implementations.md
+++ b/implementations.md
@@ -50,10 +50,11 @@ Validators
{{ implementation.name }}
- Supports:
- {% if implementation.date-draft %}
+ {% if implementation.date-draft and implementation.date-draft != empty %}
{{ implementation.date-draft | sort | reverse | join: ", " }}
+ {%- if implementation.draft and implementation.draft != empty %}, {% endif %}
{% endif %}
- {% if implementation.draft %}
+ {% if implementation.draft and implementation.draft != empty %}
draft-0{{ implementation.draft | sort | reverse | join: ", -0" }}
{% endif %}
@@ -156,6 +157,8 @@ For example, the only incompatibilities between draft-04 and draft-06 involve `e
- Python
- [Pydantic](https://pydantic-docs.helpmanual.io/) (MIT) - generates schemas from Python models based on Python 3.6+ type hints.
- [msgspec](https://jcristharif.com/msgspec/) (BSD-3-Clause) - generates schemas from Python type annotations.
+ - [mashumaro](https://github.com/Fatal1ty/mashumaro) (Apache 2.0) - generates schemas from Python type annotations
+ - [drf-jsonschema-serializer](https://github.com/maykinmedia/drf-jsonschema-serializer) (BSD-3-Clause) - generates schemas from Django Rest Framework serializers
- Java
- [jsonschema-generator](https://github.com/victools/jsonschema-generator) (Apache 2.0) - generates schemas from Java types *supports Draft 7 and Draft 2019-09*
- Scala
@@ -168,7 +171,7 @@ For example, the only incompatibilities between draft-04 and draft-06 involve `e
#### From data
- Java
- - [saasquatch/json-schema-inferrer](https://github.com/saasquatch/json-schema-inferrer) _draft-07, -06, -04_ (Apache 2.0) - Java library for inferring JSON Schemas from one or multiple JSON samples.
+ - [saasquatch/json-schema-inferrer](https://github.com/saasquatch/json-schema-inferrer) _2020-12, 2019-09, draft-07, draft-06, draft-04_ (Apache 2.0) - Java library for inferring JSON Schemas from one or multiple JSON samples.
- Scala
- [Schema Guru](https://github.com/snowplow/schema-guru) (Apache 2.0) - CLI util, Spark Job and Web UI for deriving JSON Schemas out of corpus of JSON instances; see issue [178](https://github.com/snowplow/schema-guru/issues/178) for progress towards draft-06+ support
- [JSONoid](https://github.com/michaelmior/jsonoid-discovery/) (MIT) - command line tool and Spark application for inferring schemas from JSON documents, supports draft 2019-09
@@ -206,6 +209,7 @@ are the only keywords that changed.
- [json-schema-to-elm](https://github.com/dragonwasrobot/json-schema-to-elm) - generates Elm types, JSON decoders+encoders, and fuzz tests from one or more JSON Schema files, using [dragonwasrobot/json_schema](https://github.com/dragonwasrobot/json_schema) *supports Draft 7*
- Go
- [go-jsonschema](https://git.sr.ht/~emersion/go-jsonschema) - generates Go types and helpers from JSON schema files *supports Draft 2020-12*
+ - [protoc-gen-jsonschema](https://github.com/chrusty/protoc-gen-jsonschema) - Generates JSON schemas from protobuf proto v2 and v3 files.
- Java
- [jsonCodeGen](https://github.com/schlothauer-wauer/jsoncodegen) (MIT) - Groovy based generation tasks from JSON schema. Already includes templates/generators for Java Beans, Swagger specification files and PlantUML diagrams.
- [jsonschema2pojo](https://github.com/joelittlejohn/jsonschema2pojo) (Apache 2.0) - generates Java types from JSON Schema (or example JSON) and can annotate those types for data-binding with Jackson 2.x or Gson. *draft-07*
@@ -222,6 +226,8 @@ are the only keywords that changed.
- [statham](https://github.com/jacksmith15/statham-schema) (MIT) - generate type-annotated models from JSON Schema documents.
- Rust
- [schemafy](https://github.com/Marwes/schemafy/) - generates Rust types and serialization code from a JSON schema. *supports Draft 4*
+- Scala
+ - [json-schema-to-case-class](https://github.com/cchandurkar/json-schema-to-case-class) (MIT) - NPM Package, [Web UI](https://cchandurkar.github.io/json-schema-to-case-class) and a CLI to generate Scala case classes from JSON Schema. *Supports JSON Schema 2019-09, draft-07, -06, -04, -03*
- TypeScript
- [jsongenerator](https://github.com/jimblackler/jsonschematypes/tree/master/codegen) *JSON Schema 2019-09, draft-07, -06, -04, -03* (Apache-2.0)
- Ruby
@@ -316,7 +322,7 @@ the utility, and decided on a case-by-case basis.
- [Altova XMLSpy 2019r3](https://www.altova.com/xmlspy-xml-editor#json_schema) - *Graphical JSON Schema editor for draft-06 and draft-7, as well as validation of JSON files based on JSON Schema*
- [Dashjoin JSON Schema editor](https://dashjoin.github.io/#/schema) - *Graphical online JSON Schema editor for draft-06 (minus oneOf, anyOf, allOf, not). The generated schema can be tested immediately via a form that is driven by it.*
- [Hackolade Studio](https://hackolade.com/help/JSONSchemaEditor.html) - *Visual JSON Schema editor for draft-04, draft-06, draft-07, 2019-09, 2020-12, as well as data modeling tool for NoSQL databases, storage formats, REST APIs, and JSON in RDBMS. Also converts to and from: different draft specifications, DDL, XSD, Swagger, OpenAPI, YAML, Avro, Parquet, Protobuf, and most of the NoSQL script syntaxes. Includes a GUI for Entity-Relationship Diagrams and a Command-Line Interface.*
-- [JSONBuddy](https://www.json-buddy.com/) - *Text and grid-style JSON editor and validator. Complete JSON Schema development environment with JSON Schema analyzer, context sensitive entry-helpers, sample data generation based on JSON Schema and JSON Schema validation debugger: Step through the validation process and set breakpoints. Support for draft-4, draft-6, draft-7, 2019-09 and 2020-12.*
+- [JSONBuddy](https://www.json-buddy.com/) - *Text and grid-style JSON editor and validator. Complete JSON Schema development environment with JSON Schema analyzer, context sensitive entry-helpers, sample data generation based on JSON Schema and JSON Schema validation debugger: Step through the validation process and set breakpoints. JSON Schema testing tool including schema coverage. Support for draft-4, draft-6, draft-7, 2019-09 and 2020-12.*
- [JSONEditor Online](https://jsoneditoronline.org/) - *View, edit, format, and validate JSON online* Support draft-4, draft-6, and draft-7.
- [Liquid JSON Schema Editor](https://www.liquid-technologies.com/json-schema-editor) - *Graphical JSON Schema editor for draft-04, draft-06, draft-07 and 2019-09, with split source code and grphical editing. Includes validation of JSON files based on JSON Schema, JSON Sample Generator and JSON Schema Documentation Generator.*
- [Oxygen JSON Schema Editor](https://www.oxygenxml.com/xml_developer/json_schema_editor.html) - *JSON Schema editor with a variety of editing features and helper views (Design/Text/Author). Support for validation and editing JSON Schema draft-4, draft-6, and draft-7, 2019-09 (partial), 2020-12 (partial). Validation and editing of JSON files based on JSON Schema.*
diff --git a/learn/glossary.md b/learn/glossary.md
index 6ffd5392..8328a958 100644
--- a/learn/glossary.md
+++ b/learn/glossary.md
@@ -14,6 +14,18 @@ If you encounter a term you wish were defined here, please feel free to [file an
The entries on this page can be linked to via anchor links (e.g. `https://json-schema.org/learn/glossary.html#vocabulary`) when sharing a definition with others.
+### dialect
+
+A cohesive collection of [keywords](#keyword) available for use within a schema, often representing a use-case specific single release of the JSON Schema specification.
+
+Dialects, particularly the 2019-09 and 2020-12 dialects, are often defined via a collection of [vocabularies](#vocabulary).
+
+Each dialect is identified by a URI, its *dialect identifier*, which [schemas](#schema) may then reference in their `$schema` [keyword](#keyword).
+Doing so identifies the schema as being written in the dialect, and thereby indicates which keywords are usable within it, along with their intended meaning.
+
+The JSON Schema specification defines a number of dialects, each of which enable vocabularies suitable for the dialect's specific use case.
+These vocabularies are [described](https://json-schema.org/specification.html#general-purpose-meta-schema) in meta-schemas.
+
### draft
An individual release of the JSON Schema specification.
@@ -24,6 +36,18 @@ While future drafts may introduce new behavior or changes to existing behavior,
The current list of drafts can be found [here](https://json-schema.org/specification-links.html#published-drafts).
+### JSON
+
+A pervasive data interchange format used for representing and transmitting data as human readable text.
+JSON is extremely widely used, and parsers which can read and write it exist for essentially every commonly-used programming language.
+
+JSON Schema, distinctly, is built *on top* of JSON, in that JSON [schemas](#schema) are themselves JSON objects which describe JSON values.
+The two are, however, entirely different pieces of the conceptual puzzle, with JSON being a concrete format for *representing* data, and JSON Schema being a way to *schematize* data which is written in a JSON-compatible format.
+
+The JSON format is an open format, with its own [homepage](https://www.json.org/), and specifications published in the [ECMA-404](http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf) and [RFC-8259](https://datatracker.ietf.org/doc/html/rfc8259) documents from ECMA and the IETF respectively.
+In particular, it is not managed or developed by the JSON Schema team, who simply make use of the format.
+
+
### keyword
A property appearing within a [schema](#schema) object.
@@ -67,6 +91,40 @@ A document, written according to the proscribed structure of the JSON Schema spe
The rules constituting which schemas are conformant, as well as the rules governing their behavior when validating instances, are defined by the [JSON Schema specification](https://json-schema.org/specification.html).
-Strictly speaking, according to the specification, schemas are themselves JSON documents, though it is somewhat common for them to be authored or maintained in other languages which are easily translated to JSON, such as YAML.
+Strictly speaking, according to the specification, schemas are themselves [JSON documents](#JSON), though it is somewhat common for them to be authored or maintained in other languages which are easily translated to JSON, such as YAML.
In recent [drafts](#draft) of the specification, a schema is either a JSON object or a JSON boolean value.
+
+### subschema
+
+A [schema](#schema) which is itself contained within a surrounding parent schema.
+Like schemas themselves, in recent [drafts](#draft) of JSON Schema, subschemas are either [JSON](#JSON) objects or JSON boolean values.
+
+Within the JSON Schema specification and its [dialects](#dialect), a number of [keywords](#keyword) take subschemas as part of their values.
+For example, the `not` keyword takes a subschema value and inverts its result, succeeding whenever the subschema does not succeed, such that the [instance](#instance) `12` is invalid under `{"type": "string"}` but valid under `{"not": {"type": "string"}}`, where `{"type": "string"}` is a subschema contained in the full schema.
+
+Some subschemas may appear in more complex nested locations within a parent schema.
+The `allOf` keyword, for instance, takes an array of multiple subschemas and succeeds whenever all of the subschemas do individually.
+
+Whether something that otherwise *appears* to be a schema (based on its contents) actually *is* a subschema can be misleading at first glance without context or knowlege about its location within the parent schema.
+Specifically, in our above example, `{"type": "string"}` was a subschema of a larger schema, but in the schema `{"const": {"type": "string"}}`, it is *not* a subschema.
+Even though as a value it looks the same, the `const` keyword, which compares instances against a specific expected value, does *not* take a subschema as its value, its value is an opaque value with no particular meaning (such that in this schema, the number 12 would be invalid, but the precise instance `{"type": "string"}` is valid).
+Said more plainly, whether a particular value is a subschema or not depends on its precise location within a parent schema, as interpretation of the value depends on the defined behavior of the keyword(s) it lives under.
+
+Subschemas may themselves contain sub-subschemas, though colloquially one generally uses the term "subschema" regardless of the level of nesting, further clarifying which larger schema is the parent schema whenever needed.
+
+### vocabulary
+
+A tightly related collection of [keywords](keyword), grouped to facilitate re-use.
+
+A vocabulary is specified by a prose document or specification which explains the semantics of its keywords in a way suitable for implementers and users of the vocabulary.
+It often also includes a [meta-schema](#meta-schema) (or multiple metaschemas) which define the syntax of its keywords.
+
+Anyone can create and publish a vocabulary, and implementations generally will include facilities for extending themselves with support for additional vocabularies and their keywords.
+The JSON Schema specification includes a number of vocabularies which cover each of the keywords it defines.
+
+In some [dialects](#dialect) of JSON Schema, the `$vocabulary` keyword can be used to include the keywords defined by a vocabulary into the dialect, as well as to indicate whether implementations must specifically recognize the vocabulary in order to be able to process schemas written in the dialect or not.
+
+#### See also
+
+* [`json-schema-vocabularies`](https://github.com/json-schema-org/json-schema-vocabularies), a repository which collects known third-party JSON Schema vocabularies
diff --git a/slack.md b/slack.md
index 18113d47..cc97f5ed 100644
--- a/slack.md
+++ b/slack.md
@@ -1,3 +1,3 @@
---
-redirect_to: https://join.slack.com/t/json-schema/shared_invite/zt-15ylccbuu-3T2bRia8uzhE157TSW6nXg
+redirect_to: https://join.slack.com/t/json-schema/shared_invite/zt-1ywpdj4yd-bXiBLjYEbKWUjzon0qiY9Q
---