From c3b7cb9a15dbceda7e1789ac63eb23456eaf0495 Mon Sep 17 00:00:00 2001 From: DJ Adams Date: Thu, 29 Sep 2022 07:26:04 +0000 Subject: [PATCH 01/64] fix specification reference links Looks like the doc fragment links in json-schema-core and json-schema-validation changed, so fixing the references, in this super useful getting started doc (thanks, btw!). --- learn/getting-started-step-by-step.md | 30 +++++++++++++-------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/learn/getting-started-step-by-step.md b/learn/getting-started-step-by-step.md index 5c2e51d5..5e299de1 100644 --- a/learn/getting-started-step-by-step.md +++ b/learn/getting-started-step-by-step.md @@ -50,10 +50,10 @@ We start with four properties called **keywords** which are expressed as [JSON]( > Yes. the standard uses a JSON data document to describe data documents, most often that are also JSON data documents but could be in any number of other content types like `text/xml`. -* The [`$schema`](https://json-schema.org/draft/2020-12/json-schema-core.html#rfc.section.8.1.1) keyword states that this schema is written according to a specific draft of the standard and used for a variety of reasons, primarily version control. -* The [`$id`](https://json-schema.org/draft/2020-12/json-schema-core.html#rfc.section.8.2.1) keyword defines a URI for the schema, and the base URI that other URI references within the schema are resolved against. -* The [`title`](https://json-schema.org/draft/2020-12/json-schema-validation.html#rfc.section.9.1) and [`description`](https://json-schema.org/draft/2020-12/json-schema-validation.html#rfc.section.9.1) annotation keywords are descriptive only. They do not add constraints to the data being validated. The intent of the schema is stated with these two keywords. -* The [`type`](https://json-schema.org/draft/2020-12/json-schema-validation.html#rfc.section.6.1.1) validation keyword defines the first constraint on our JSON data and in this case it has to be a JSON Object. +* The [`$schema`](https://json-schema.org/draft/2020-12/json-schema-core.html#section-8.1.1) keyword states that this schema is written according to a specific draft of the standard and used for a variety of reasons, primarily version control. +* The [`$id`](https://json-schema.org/draft/2020-12/json-schema-core.html#section-8.2.1) keyword defines a URI for the schema, and the base URI that other URI references within the schema are resolved against. +* The [`title`](https://json-schema.org/draft/2020-12/json-schema-validation.html#section-9.1) and [`description`](https://json-schema.org/draft/2020-12/json-schema-validation.html#section-9.1) annotation keywords are descriptive only. They do not add constraints to the data being validated. The intent of the schema is stated with these two keywords. +* The [`type`](https://json-schema.org/draft/2020-12/json-schema-validation.html#section-6.1.1) validation keyword defines the first constraint on our JSON data and in this case it has to be a JSON Object. ```json { @@ -67,9 +67,9 @@ We start with four properties called **keywords** which are expressed as [JSON]( We introduce the following pieces of terminology when we start the schema: -* [Schema Keyword](https://json-schema.org/draft/2020-12/json-schema-core.html#rfc.section.8.1.1): `$schema` and `$id`. -* [Schema Annotations](https://json-schema.org/draft/2020-12/json-schema-validation.html#rfc.section.9.1): `title` and `description`. -* [Validation Keyword](https://json-schema.org/draft/2020-12/json-schema-validation.html#rfc.section.6.1.1): `type`. +* [Schema Keyword](https://json-schema.org/draft/2020-12/json-schema-core.html#section-8.1.1): `$schema` and `$id`. +* [Schema Annotations](https://json-schema.org/draft/2020-12/json-schema-validation.html#section-9.1): `title` and `description`. +* [Validation Keyword](https://json-schema.org/draft/2020-12/json-schema-validation.html#section-6.1.1): `type`. ## Defining the properties @@ -77,10 +77,10 @@ We introduce the following pieces of terminology when we start the schema: In JSON Schema terms, we update our schema to add: -* The [`properties`](https://json-schema.org/draft/2020-12/json-schema-core.html#rfc.section.10.3.2.1) validation keyword. +* The [`properties`](https://json-schema.org/draft/2020-12/json-schema-core.html#section-10.3.2.1) validation keyword. * The `productId` key. * `description` schema annotation and `type` validation keyword is noted -- we covered both of these in the previous section. -* The [`required`](https://json-schema.org/draft/2020-12/json-schema-validation.html#rfc.section.6.5.3) validation keyword listing `productId`. +* The [`required`](https://json-schema.org/draft/2020-12/json-schema-validation.html#section-6.5.3) validation keyword listing `productId`. ```json @@ -130,8 +130,8 @@ In JSON Schema terms, we update our schema to add: According to the store owner there are no free products. ;) * The `price` key is added with the usual `description` schema annotation and `type` validation keywords covered previously. It is also included in the array of keys defined by the `required` validation keyword. -* We specify the value of `price` must be something other than zero using the [`exclusiveMinimum`](https://json-schema.org/draft/2020-12/json-schema-validation.html#rfc.section.6.2.5) validation keyword. - * If we wanted to include zero as a valid price we would have specified the [`minimum`](https://json-schema.org/draft/2020-12/json-schema-validation.html#rfc.section.6.2.4) validation keyword. +* We specify the value of `price` must be something other than zero using the [`exclusiveMinimum`](https://json-schema.org/draft/2020-12/json-schema-validation.html#section-6.2.5) validation keyword. + * If we wanted to include zero as a valid price we would have specified the [`minimum`](https://json-schema.org/draft/2020-12/json-schema-validation.html#section-6.2.4) validation keyword. ```json { @@ -172,9 +172,9 @@ Therefore: * The `tags` key is added with the usual annotations and keywords. * This time the `type` validation keyword is `array`. -* We introduce the [`items`](https://json-schema.org/draft/2020-12/json-schema-core.html#rfc.section.10.3.1.2) validation keyword so we can define what appears in the array. In this case: `string` values via the `type` validation keyword. -* The [`minItems`](https://json-schema.org/draft/2020-12/json-schema-validation.html#rfc.section.6.4.2) validation keyword is used to make sure there is at least one item in the array. -* The [`uniqueItems`](https://json-schema.org/draft/2020-12/json-schema-validation.html#rfc.section.6.4.3) validation keyword notes all of the items in the array must be unique relative to one another. +* We introduce the [`items`](https://json-schema.org/draft/2020-12/json-schema-core.html#section-10.3.1.2) validation keyword so we can define what appears in the array. In this case: `string` values via the `type` validation keyword. +* The [`minItems`](https://json-schema.org/draft/2020-12/json-schema-validation.html#section-6.4.2) validation keyword is used to make sure there is at least one item in the array. +* The [`uniqueItems`](https://json-schema.org/draft/2020-12/json-schema-validation.html#section-6.4.3) validation keyword notes all of the items in the array must be unique relative to one another. * We did not add this key to the `required` validation keyword array because it is optional. ```json @@ -276,7 +276,7 @@ So far our JSON schema has been wholly self contained. It is very common to shar For this example we introduce a new JSON Schema resource and for both properties therein: * We use the `minimum` validation keyword noted earlier. -* We add the [`maximum`](https://json-schema.org/draft/2020-12/json-schema-validation.html#rfc.section.6.2.2) validation keyword. +* We add the [`maximum`](https://json-schema.org/draft/2020-12/json-schema-validation.html#section-6.2.2) validation keyword. * Combined, these give us a range to use in validation. ```json From 7ea91eb034b44c3578d1b0c7049643dd7e6a2be5 Mon Sep 17 00:00:00 2001 From: DJ Adams Date: Thu, 29 Sep 2022 07:48:18 +0000 Subject: [PATCH 02/64] fix spec links in file-system learning resource --- learn/file-system.md | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/learn/file-system.md b/learn/file-system.md index da7630b9..0544e423 100644 --- a/learn/file-system.md +++ b/learn/file-system.md @@ -66,16 +66,16 @@ We will start with a base JSON Schema expressing the following constraints: Building out our JSON Schema from top to bottom: -* The [`$id`](https://json-schema.org/draft/2020-12/json-schema-core.html#rfc.section.8.2.1) keyword. -* The [`$schema`](https://json-schema.org/draft/2020-12/json-schema-core.html#rfc.section.8.1.1) keyword. -* The [`type`](https://json-schema.org/draft/2020-12/json-schema-validation.html#rfc.section.6.1.1) validation keyword. -* The [`required`](https://json-schema.org/draft/2020-12/json-schema-validation.html#rfc.section.6.5.3) validation keyword. -* The [`properties`](https://json-schema.org/draft/2020-12/json-schema-core.html#rfc.section.10.3.2.1) validation keyword. +* The [`$id`](https://json-schema.org/draft/2020-12/json-schema-core.html#section-8.2.1) keyword. +* The [`$schema`](https://json-schema.org/draft/2020-12/json-schema-core.html#section-8.1.1) keyword. +* The [`type`](https://json-schema.org/draft/2020-12/json-schema-validation.html#section-6.1.1) validation keyword. +* The [`required`](https://json-schema.org/draft/2020-12/json-schema-validation.html#section-6.5.3) validation keyword. +* The [`properties`](https://json-schema.org/draft/2020-12/json-schema-core.html#section-10.3.2.1) validation keyword. * The `/` key is empty now; We will fill it out later. -* The [`patternProperties`](https://json-schema.org/draft/2020-12/json-schema-core.html#rfc.section.10.3.2.2) validation keyword. +* The [`patternProperties`](https://json-schema.org/draft/2020-12/json-schema-core.html#section-10.3.2.2) validation keyword. * This matches other property names via a regular expression. Note: it does not match `/`. * The `^(/[^/]+)+$` key is empty now; We will fill it out later. -* The [`additionalProperties`](https://json-schema.org/draft/2020-12/json-schema-core.html#rfc.section.10.3.2.3) validation keyword. +* The [`additionalProperties`](https://json-schema.org/draft/2020-12/json-schema-core.html#section-10.3.2.3) validation keyword. * The value here is `false` to constrain object properties to be either `/` or to match the regular expression. > You will notice that the regular expression is explicitly anchored (with `^` and `$`): in JSON Schema, regular expressions (in `patternProperties` and in `pattern`) are not anchored by default. @@ -104,11 +104,11 @@ We saw these keywords in the prior exercise: `$id`, `$schema`, `type`, `required To this we add: -* The [`description`](https://json-schema.org/draft/2020-12/json-schema-validation.html#rfc.section.9.1) annotation keyword. -* The [`oneOf`](https://json-schema.org/draft/2020-12/json-schema-core.html#rfc.section.10.2.1.3) keyword. -* The [`$ref`](https://json-schema.org/draft/2020-12/json-schema-core.html#rfc.section.8.2.3.1) keyword. +* The [`description`](https://json-schema.org/draft/2020-12/json-schema-validation.html#section-9.1) annotation keyword. +* The [`oneOf`](https://json-schema.org/draft/2020-12/json-schema-core.html#section-10.2.1.3) keyword. +* The [`$ref`](https://json-schema.org/draft/2020-12/json-schema-core.html#section-8.2.3.1) keyword. * In this case, all references used are local to the schema using a relative fragment URI (`#/...`). -* The [`$defs`](https://json-schema.org/draft/2020-12/json-schema-core.html#rfc.section.8.2.4) keyword. +* The [`$defs`](https://json-schema.org/draft/2020-12/json-schema-core.html#section-8.2.4) keyword. * Including several key names which we will define later. ```json @@ -142,12 +142,12 @@ To this we add: Let's now extend this skeleton to add constraints to some of the properties. -* Our `fstype` key uses the [`enum`](https://json-schema.org/draft/2020-12/json-schema-validation.html#rfc.section.6.1.2) validation keyword. +* Our `fstype` key uses the [`enum`](https://json-schema.org/draft/2020-12/json-schema-validation.html#section-6.1.2) validation keyword. * Our `options` key uses the following: * The `type` validation keyword (see above). - * The [`minItems`](https://json-schema.org/draft/2020-12/json-schema-validation.html#rfc.section.6.4.2) validation keyword. - * The [`items`](https://json-schema.org/draft/2020-12/json-schema-core.html#rfc.section.10.3.1.2) validation keyword. - * The [`uniqueItems`](https://json-schema.org/draft/2020-12/json-schema-validation.html#rfc.section.6.4.3) validation keyword. + * The [`minItems`](https://json-schema.org/draft/2020-12/json-schema-validation.html#section-6.4.2) validation keyword. + * The [`items`](https://json-schema.org/draft/2020-12/json-schema-core.html#section-10.3.1.2) validation keyword. + * The [`uniqueItems`](https://json-schema.org/draft/2020-12/json-schema-validation.html#section-6.4.3) validation keyword. * Together these say: `options` must be an array, and the items therein must be strings, there must be at least one item, and all items should be unique. * We have a `readonly` key. @@ -198,7 +198,7 @@ With these added constraints, the schema now looks like this: One new keyword is introduced here: -* The [`pattern`](https://json-schema.org/draft/2020-12/json-schema-validation.html#rfc.section.6.3.3) validation keyword notes the `device` key must be an absolute path starting with */dev*. +* The [`pattern`](https://json-schema.org/draft/2020-12/json-schema-validation.html#section-6.3.3) validation keyword notes the `device` key must be an absolute path starting with */dev*. ```json { @@ -246,7 +246,7 @@ We do have a new key: `label` and the `pattern` validation keyword states it mus We find another new keyword: -* The [`format`](https://json-schema.org/draft/2020-12/json-schema-validation.html#rfc.section.7) annotation and assertion keyword. +* The [`format`](https://json-schema.org/draft/2020-12/json-schema-validation.html#section-7) annotation and assertion keyword. ```json { @@ -276,8 +276,8 @@ We find another new keyword: Our last definition introduces two new keywords: -* The [`minimum`](https://json-schema.org/draft/2020-12/json-schema-validation.html#rfc.section.6.2.4) validation keyword. -* The [`maximum`](https://json-schema.org/draft/2020-12/json-schema-validation.html#rfc.section.6.2.2) validation keyword. +* The [`minimum`](https://json-schema.org/draft/2020-12/json-schema-validation.html#section-6.2.4) validation keyword. +* The [`maximum`](https://json-schema.org/draft/2020-12/json-schema-validation.html#section-6.2.2) validation keyword. * Together these require the size be between 16 and 512, inclusive. ```json From a822bf3be51e19e25367ad9c9d440413beee4273 Mon Sep 17 00:00:00 2001 From: Kurt McKee Date: Thu, 29 Sep 2022 08:14:48 -0500 Subject: [PATCH 03/64] Fix a whitespace typo --- specification.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/specification.md b/specification.md index e70419a9..742d633c 100644 --- a/specification.md +++ b/specification.md @@ -30,7 +30,7 @@ They are also available on the IETF main site: Meta-schemas ------------ -The meta-schemas are schemas against which other schemas can be validated.It is self-descriptive: the JSON Schema meta-schema validates itself. +The meta-schemas are schemas against which other schemas can be validated. It is self-descriptive: the JSON Schema meta-schema validates itself. The latest meta-schema is **2020-12**. For an explanation of the change to date-based identifiers, see the [Specification Links](specification-links.html) page. From 2aa6daaa828c85ece632439b884f2105e01f23d7 Mon Sep 17 00:00:00 2001 From: "Henry H. Andrews" Date: Sat, 1 Oct 2022 20:34:04 -0700 Subject: [PATCH 04/64] Announce several things about process changes This addresses some of the most commonly-heard questions and misconceptions about our recent process announcement. --- index.md | 44 ++++++++++---------------------------------- 1 file changed, 10 insertions(+), 34 deletions(-) diff --git a/index.md b/index.md index 3b64e05c..be134af2 100644 --- a/index.md +++ b/index.md @@ -20,6 +20,16 @@ permalink: / +## Announcements and Feedback Solicitation: Specification Process + +* The JSON Schema media types (`application/schema+json` and `application/schema-instance+json`) will be published as an [IETF RFC](https://datatracker.ietf.org/doc/draft-ietf-httpapi-rest-api-mediatypes/), which has already been adopted by the HTTP APIs working group. +* As an [Incubation-status OpenJS Foundation project](https://openjsf.org/projects/#incubating), we continue to work through our governance [todo list](https://github.com/json-schema-org/community/issues/129) to move to either At-Large or Impact status. +* The bulk of our specification will be published under a new process currently [under public discussion](https://github.com/orgs/json-schema-org/discussions/234). All are encouraged to provide feedback! Our goals with this process include: + * In the next release, offer stability guarantees for long-stable aspects of JSON Schema. + * Provide clarity regarding which other aspects are close to a stable form, and which are more experimental. + * Publish our specifications in a way similar to OpenAPI and AsyncAPI, which are also part of the Linux Foundation (the larger umbrella under which the OpenJS Foundation exists). +* We are working on finding the right path for Relative JSON Pointer to reach standardization in the near future. An IETF RFC currently remains the most likely path, although several details are still being worked out. + ## What now? Learn, Get help, Shape the Community, Chat, with the JSON Schema team and Community! @@ -79,40 +89,6 @@ so we will usually refer to `2020-12` (without the word "draft") on this web sit See the [Specification page](specification.html) for details about naming and numbering. -### The Path to Standardization - -The JSON Schema project intends to shepherd all three draft series to either: RFC status, the equivalent within another standards body, and/or join a foundation and establish self publication rules. - -
-Read more - -Currently, we are continuing to improve our self-published Internet-Drafts. We are not actively pursuing joining a standards organisation. - -We have a few contacts related to each potential path, but if you have experience with such things and would like to help, please still contact us! - -In the meantime, publication of Internet-Draft documents can be tracked through the IETF: -* [JSON Schema (core)](https://datatracker.ietf.org/doc/draft-bhutton-json-schema/) -* [JSON Schema Validation](https://datatracker.ietf.org/doc/draft-bhutton-json-schema-validation/) -* [Relative JSON Pointers](https://datatracker.ietf.org/doc/draft-bhutton-relative-json-pointer/) - -Internet-Drafts expire after six months, so our goal is to publish often enough to always have a set of unexpired drafts available. There may be brief gaps as we wrap up each draft and finalize the text. -
- -### Use of the _draft_ designation -Releases of the JSON schema specification and meta schemas use the _draft_ designation primarily for historical reasons stemming from the relationship of this specification to IETF ([explained here](https://json-schema.org/specification-links.html#understanding-draft-names-and-numbers)). -The use of this designation is under review but will continue until this review process completes to avoid changing the designation style multiple times. -
-Read more - -The JSON schema project recognizes, condones, and advocates for the use of the JSON schema standard in production. - -Each release of the JSON schema specification is treated as a production release by the JSON schema project. All changes in each new release are made judiciously, with great care, thorough review and careful consideration of how the changes will impact existing users and implementations of the JSON schema specification. - -Similarly to most specifications, the JSON schema specification will continue to evolve, and not all releases will be backwards compatible. The intention, particularly for vocabularies such as validation which have been widely implemented, is to remain as compatible as possible from release to release. However, major changes can still occur given a clear enough need validated with the user community. - -When the _draft_ designation is dropped this may indicate that the frequency of releases and amount of changes in each release will decrease, but it won't indicate that no new releases will be made, or that all future releases will be backwards compatible. -
- ## Quickstart The JSON document being validated or described we call the *instance*, and the document containing the description is called the *schema*. From 537e4ee29c5b1296b7b25fb124244fb07cb429b0 Mon Sep 17 00:00:00 2001 From: Michael Mior Date: Tue, 4 Oct 2022 11:24:31 -0400 Subject: [PATCH 05/64] Add JSONoid to implementations --- implementations.md | 1 + 1 file changed, 1 insertion(+) diff --git a/implementations.md b/implementations.md index 92aae02c..54a3c251 100644 --- a/implementations.md +++ b/implementations.md @@ -169,6 +169,7 @@ For example, the only incompatibilities between draft-04 and draft-06 involve `e - [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. - 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 - Clojure - [luposlip/json-schema](https://github.com/luposlip/json-schema) (Apache 2.0) - infer JSON Schema from Clojure data - Online (web tool) From 2705881a6b8a43c5b011915a777c29088894a32d Mon Sep 17 00:00:00 2001 From: Waldir Pimenta Date: Thu, 6 Oct 2022 00:27:21 +0100 Subject: [PATCH 06/64] Link directly to json-everything.net's validator --- _data/validator-libraries-modern.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_data/validator-libraries-modern.yml b/_data/validator-libraries-modern.yml index aaf6455e..fe9725ff 100644 --- a/_data/validator-libraries-modern.yml +++ b/_data/validator-libraries-modern.yml @@ -364,7 +364,7 @@ name: Hyperjump JSV last-updated: "2022-08-31" - name: json-everything - url: https://json-everything.net + url: https://json-everything.net/json-schema date-draft: [2020-12, 2019-09] draft: [7, 6] notes: Powered by JsonSchema.Net in Blazor WASM for client-side validation From 9ae616e7ab0eaed7afd3c68ce1e2b725c334fbf8 Mon Sep 17 00:00:00 2001 From: Simon Ser Date: Fri, 7 Oct 2022 12:07:30 +0200 Subject: [PATCH 07/64] Add go-jsonschema --- implementations.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/implementations.md b/implementations.md index 92aae02c..84705166 100644 --- a/implementations.md +++ b/implementations.md @@ -195,6 +195,8 @@ are the only keywords that changed. - Elm - [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* - 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* From 2f0f2ff5372340d18361cc9024b7bf6658908788 Mon Sep 17 00:00:00 2001 From: Julian Berman Date: Tue, 11 Oct 2022 11:50:18 +0000 Subject: [PATCH 08/64] Add glossary entries for dialect and vocabulary. --- learn/glossary.md | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/learn/glossary.md b/learn/glossary.md index 6ffd5392..8f0cc815 100644 --- a/learn/glossary.md +++ b/learn/glossary.md @@ -14,6 +14,15 @@ 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 collection of [vocabularies](#vocabulary), along with an indication of whether supporting each vocabulary is required to process schemas written in the dialect. + +Dialects are identified by a URI, 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](https://json-schema.org/specification.html#general-purpose-meta-schema) a number of dialects, each of which enable vocabularies suitable for the dialect's specific use case. + ### draft An individual release of the JSON Schema specification. @@ -70,3 +79,18 @@ The rules constituting which schemas are conformant, as well as the rules govern 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. In recent [drafts](#draft) of the specification, a schema is either a JSON object or a JSON boolean value. + +### vocabulary + +A collection of related [keywords](keyword), grouped to facilitate re-use. + +A vocabulary typically includes both a [meta-schema](#meta-schema) which formally defines the keywords it contains, as well as a prose document or specification which explains the semantics of its keywords in a way suitable for implementers and users of the vocabulary. + +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. + +Vocabularies are identified by a URI which may be referenced via the `$vocabulary` keyword in order to enable the vocabulary within a [dialect](#dialect). + +#### See also + +* [`json-schema-vocabularies`](https://github.com/json-schema-org/json-schema-vocabularies), a repository which collects known third-party JSON Schema vocabularies From fe3f20bf46a7abc3b6427e49af1af35aa4f83446 Mon Sep 17 00:00:00 2001 From: Julian Berman Date: Wed, 12 Oct 2022 15:56:49 +0000 Subject: [PATCH 09/64] The vocabulary document is considered authoritative. --- learn/glossary.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/learn/glossary.md b/learn/glossary.md index 8f0cc815..1fd68007 100644 --- a/learn/glossary.md +++ b/learn/glossary.md @@ -84,7 +84,8 @@ In recent [drafts](#draft) of the specification, a schema is either a JSON objec A collection of related [keywords](keyword), grouped to facilitate re-use. -A vocabulary typically includes both a [meta-schema](#meta-schema) which formally defines the keywords it contains, as well as a prose document or specification which explains the semantics of its keywords in a way suitable for implementers and users of the vocabulary. +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. From 67002b6e20c1f745b74115caaccce06e8b9ef3a5 Mon Sep 17 00:00:00 2001 From: Octavian Date: Wed, 19 Oct 2022 15:59:02 +0300 Subject: [PATCH 10/64] Update implementations.md - Updated Oxygen JSON Schema editor description - Added XSD to JSON schema converter - Added Oxygen Documentation generator --- implementations.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/implementations.md b/implementations.md index 121eb8d5..22015395 100644 --- a/implementations.md +++ b/implementations.md @@ -293,6 +293,9 @@ the utility, and decided on a case-by-case basis. - Webpack - [@cloudflare/json-schema-ref-loader](https://github.com/cloudflare/json-schema-tools/tree/master/workspaces/json-schema-ref-loader) ([JSON Schema Tools](https://github.com/cloudflare/json-schema-tools)), (BSD-3-Clause) Webpack loader for dereference-able schemas in JSON, JSON5, YAML, or JavaScript - [@cloudflare/json-schema-apidoc-loader](https://github.com/cloudflare/json-schema-tools/tree/master/workspaces/json-schema-apidoc-loader) ([JSON Schema Tools](https://github.com/cloudflare/json-schema-tools)), Back-end for [@cloudflare/doca](https://github.com/cloudflare/json-schema-tools/tree/master/workspaces/doca), _draft-04, -06, -07, and Doca extensions_ +- XSD + - [Oxygen XSD to JSON Schema](https://www.oxygenxml.com/json_converter.html#xsd-to-json-schema) - Generate from an XSD file a similar JSON Schema structure. + - [XSD to JSON Schema IntellJ plugin](https://plugins.jetbrains.com/plugin/19024-xsd-to-json-schema) - Plugin for converting an XML Schema (XSD) file to a JSON Schema file. #### Testing @@ -307,7 +310,7 @@ the utility, and decided on a case-by-case basis. - [JSONBuddy](https://www.json-buddy.com/) - *Text and grid-style JSON editor and validator with JSON schema analyzer, context sensitive entry-helpers and sample data generation based on JSON schema. Support for draft-4, draft-6, draft-7 and 2019-09. JSON Schema validation debugger: Step through the validation process and set breakpoints.* - [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 Editor](https://www.oxygenxml.com/xml_editor/json.html) - *JSON editor with a variety of editing features and helper views. Support for validation and editing JSON Schema draft-4, draft-6, and draft-7. Validation and editing of JSON files based on JSON Schema.* +- [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, 2020-12. Validation and editing of JSON files based on JSON Schema.* - [Perseid Modeler](https://www.datensen.com/data-modeling/perseid-modeler-for-json-schema.html) - *a modeling tool for JSON Schema and OpenAPI. Key features include: visual JSON schema creation using tree and ERD-like diagrams, support for JSON schema structures including operators and conditions, import of existing schemas from files, creation of detailed HTML reports, export to PDF, script generation, and more. Supported versions: draft 4, 6, 7, 2019-09 and 2020-12* - [Stoplight Studio](https://stoplight.io/) - *JSON Schema IDE (text-based and GUI) with support for JSON/YAML linting, which can also be based on JSON Schema rules via Spectral. Support for draft-4, draft-6 and draft-7.* - [Visual Studio Code](https://code.visualstudio.com/) - *Schema driven code completion, hovers and validation for editing JSON files (including schemas)* @@ -319,6 +322,7 @@ the utility, and decided on a case-by-case basis. - [jsonschematic](https://github.com/yanick/jsonschematic/) - Svelte-based schema viewer. Runs as a local web app. Supports draft-7. - [docson](https://github.com/lbovet/docson) - Javascript-based schema viewer. Runs as a local web app. Supports draft-4. - [json-schema-for-humans](https://pypi.org/project/json-schema-for-humans/) - Generate HTML representation of a schema. Python-based. Supports draft-7. +- [oXygen JSON Schema Documentation](https://www.oxygenxml.com/json_converter.html#generate-json-schema-documentation) - Generate JSON Schema documentation in HTML format including diagrams. - [wetzel](https://github.com/CesiumGS/wetzel) - Generates Markdown and AsciiDoc. With some limitations, supports draft-3, draft-4, draft-7, and 2020-12. Schema Repositories From 3d0a123bfcce2928f654d0db77c66485c16e5b6f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 21 Oct 2022 03:39:16 +0000 Subject: [PATCH 11/64] Bump nokogiri from 1.13.6 to 1.13.9 Bumps [nokogiri](https://github.com/sparklemotion/nokogiri) from 1.13.6 to 1.13.9. - [Release notes](https://github.com/sparklemotion/nokogiri/releases) - [Changelog](https://github.com/sparklemotion/nokogiri/blob/main/CHANGELOG.md) - [Commits](https://github.com/sparklemotion/nokogiri/compare/v1.13.6...v1.13.9) --- updated-dependencies: - dependency-name: nokogiri dependency-type: indirect ... Signed-off-by: dependabot[bot] --- Gemfile.lock | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile.lock b/Gemfile.lock index ce7c576b..4cf839f2 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -212,7 +212,7 @@ GEM jekyll-feed (~> 0.9) jekyll-seo-tag (~> 2.1) minitest (5.16.1) - nokogiri (1.13.6) + nokogiri (1.13.9) mini_portile2 (~> 2.8.0) racc (~> 1.4) octokit (4.25.0) From 5cabad53abf871e0362056b0f78ab77a08cb5724 Mon Sep 17 00:00:00 2001 From: Ben Hutton Date: Thu, 3 Nov 2022 14:43:09 +0000 Subject: [PATCH 12/64] Updated primer Opened in favour of https://github.com/json-schema-org/json-schema-org.github.io/pull/423 --- index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.md b/index.md index 0755d820..e276482b 100644 --- a/index.md +++ b/index.md @@ -5,7 +5,7 @@ permalink: / --- -**JSON Schema** is a vocabulary that allows you to **annotate** and **validate** JSON documents. +**JSON Schema** is a declarative domain specific language that allows you to **annotate** and **validate** JSON documents. JSON Schema enables the confident and reliable use of the JSON data format. ## Benefits From 4fd1feef51659b36f7edc6dd9fccd306c65c80e6 Mon Sep 17 00:00:00 2001 From: Octavian Date: Fri, 4 Nov 2022 08:42:32 +0200 Subject: [PATCH 13/64] Update implementations.md Updated the description for Oxygen JSON Schema implementation 2019-09 and 2020-12 --- implementations.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/implementations.md b/implementations.md index 22015395..6aa68b33 100644 --- a/implementations.md +++ b/implementations.md @@ -310,7 +310,7 @@ the utility, and decided on a case-by-case basis. - [JSONBuddy](https://www.json-buddy.com/) - *Text and grid-style JSON editor and validator with JSON schema analyzer, context sensitive entry-helpers and sample data generation based on JSON schema. Support for draft-4, draft-6, draft-7 and 2019-09. JSON Schema validation debugger: Step through the validation process and set breakpoints.* - [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, 2020-12. Validation and editing of JSON files based on JSON Schema.* +- [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.* - [Perseid Modeler](https://www.datensen.com/data-modeling/perseid-modeler-for-json-schema.html) - *a modeling tool for JSON Schema and OpenAPI. Key features include: visual JSON schema creation using tree and ERD-like diagrams, support for JSON schema structures including operators and conditions, import of existing schemas from files, creation of detailed HTML reports, export to PDF, script generation, and more. Supported versions: draft 4, 6, 7, 2019-09 and 2020-12* - [Stoplight Studio](https://stoplight.io/) - *JSON Schema IDE (text-based and GUI) with support for JSON/YAML linting, which can also be based on JSON Schema rules via Spectral. Support for draft-4, draft-6 and draft-7.* - [Visual Studio Code](https://code.visualstudio.com/) - *Schema driven code completion, hovers and validation for editing JSON files (including schemas)* From 1f8bd34dc8014e3c17d4e53d66a52e296e2ddc98 Mon Sep 17 00:00:00 2001 From: Julian Berman Date: Wed, 9 Nov 2022 11:07:19 -0500 Subject: [PATCH 14/64] Update the link for python-jsonschema (It now lives in a GitHub organization, though the old link redirects.) --- _data/validator-libraries-modern.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/_data/validator-libraries-modern.yml b/_data/validator-libraries-modern.yml index fe9725ff..a5229060 100644 --- a/_data/validator-libraries-modern.yml +++ b/_data/validator-libraries-modern.yml @@ -284,11 +284,11 @@ license: MIT last-updated: "2022-08-31" - name: jsonschema - url: https://github.com/Julian/jsonschema + url: https://github.com/python-jsonschema/jsonschema date-draft: [2019-09, 2020-12] draft: [7, 6, 4, 3] license: "MIT" - last-updated: "2022-08-31" + last-updated: "2022-11-09" - name: fastjsonschema url: https://github.com/horejsek/python-fastjsonschema notes: Great performance thanks to code generation. From 645fd3cf9e23bded416d315ab84efc356b83167d Mon Sep 17 00:00:00 2001 From: Ben Hutton Date: Mon, 14 Nov 2022 10:51:45 +0000 Subject: [PATCH 15/64] Remove "domain specific" --- index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.md b/index.md index e276482b..44c03f0c 100644 --- a/index.md +++ b/index.md @@ -5,7 +5,7 @@ permalink: / --- -**JSON Schema** is a declarative domain specific language that allows you to **annotate** and **validate** JSON documents. JSON Schema enables the confident and reliable use of the JSON data format. +**JSON Schema** is a declarative language that allows you to **annotate** and **validate** JSON documents. JSON Schema enables the confident and reliable use of the JSON data format. ## Benefits From 24df7c6fca226e5ccfbe39343b7d330105e75105 Mon Sep 17 00:00:00 2001 From: Ben Hutton Date: Mon, 14 Nov 2022 11:41:33 +0000 Subject: [PATCH 16/64] Fix primer layout (#489) * Fix primer layout --- index.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/index.md b/index.md index 44c03f0c..6d2a709c 100644 --- a/index.md +++ b/index.md @@ -4,8 +4,11 @@ title: JSON Schema permalink: / --- +
+**JSON Schema** is a declarative language that allows you to **annotate** and **validate** JSON documents. -**JSON Schema** is a declarative language that allows you to **annotate** and **validate** JSON documents. JSON Schema enables the confident and reliable use of the JSON data format. +JSON Schema enables the confident and reliable use of the JSON data format. +
## Benefits From d5a750e327d67e5757f10bd21b71f7290e568b29 Mon Sep 17 00:00:00 2001 From: Thomas Collins Date: Tue, 17 Jan 2023 22:25:58 +0000 Subject: [PATCH 17/64] Adding json-schema-static-docs to documentation generators Adding [json-schema-static-docs](https://tomcollins.github.io/json-schema-static-docs/) to the documentation generators section of the implementations page. --- implementations.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/implementations.md b/implementations.md index 6aa68b33..701f398d 100644 --- a/implementations.md +++ b/implementations.md @@ -319,6 +319,8 @@ the utility, and decided on a case-by-case basis. #### Documentation generators + +- [json-schema-static-docs]([https://github.com/yanick/jsonschematic/](https://tomcollins.github.io/json-schema-static-docs/)) - Generates human friendly markdown documentation from JSON Schema. Includes links between pages based on $ref values. Supports draft-7. - [jsonschematic](https://github.com/yanick/jsonschematic/) - Svelte-based schema viewer. Runs as a local web app. Supports draft-7. - [docson](https://github.com/lbovet/docson) - Javascript-based schema viewer. Runs as a local web app. Supports draft-4. - [json-schema-for-humans](https://pypi.org/project/json-schema-for-humans/) - Generate HTML representation of a schema. Python-based. Supports draft-7. From a40957c9abdda88a56a2f102083952acf257bd82 Mon Sep 17 00:00:00 2001 From: Thomas Collins Date: Wed, 18 Jan 2023 08:55:23 +0000 Subject: [PATCH 18/64] Correcting URL for json-schema-static-docs --- implementations.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/implementations.md b/implementations.md index 701f398d..b253e5a0 100644 --- a/implementations.md +++ b/implementations.md @@ -320,7 +320,7 @@ the utility, and decided on a case-by-case basis. #### Documentation generators -- [json-schema-static-docs]([https://github.com/yanick/jsonschematic/](https://tomcollins.github.io/json-schema-static-docs/)) - Generates human friendly markdown documentation from JSON Schema. Includes links between pages based on $ref values. Supports draft-7. +- [json-schema-static-docs](https://tomcollins.github.io/json-schema-static-docs/) - Generates human friendly markdown documentation from JSON Schema. Includes links between pages based on $ref values. Supports draft-7. - [jsonschematic](https://github.com/yanick/jsonschematic/) - Svelte-based schema viewer. Runs as a local web app. Supports draft-7. - [docson](https://github.com/lbovet/docson) - Javascript-based schema viewer. Runs as a local web app. Supports draft-4. - [json-schema-for-humans](https://pypi.org/project/json-schema-for-humans/) - Generate HTML representation of a schema. Python-based. Supports draft-7. From ed8505e7b2b621f57eddee070d446267f1dc9d58 Mon Sep 17 00:00:00 2001 From: Clemens Uhlenhut Date: Mon, 6 Feb 2023 08:54:38 +0100 Subject: [PATCH 19/64] Update implementations.md Added information about the latest release of JSONBuddy and support of draft 2020-12. --- implementations.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/implementations.md b/implementations.md index b253e5a0..88107db8 100644 --- a/implementations.md +++ b/implementations.md @@ -307,7 +307,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 with JSON schema analyzer, context sensitive entry-helpers and sample data generation based on JSON schema. Support for draft-4, draft-6, draft-7 and 2019-09. JSON Schema validation debugger: Step through the validation process and set breakpoints.* +- [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.* - [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.* From 500a0be86c0e258e2f982a79328cac5193effc80 Mon Sep 17 00:00:00 2001 From: Jason Desrosiers Date: Tue, 21 Feb 2023 12:42:00 -0800 Subject: [PATCH 20/64] Don't serve docker files --- _config.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/_config.yml b/_config.yml index 3a16502f..8540af95 100644 --- a/_config.yml +++ b/_config.yml @@ -36,6 +36,7 @@ exclude: - Gemfile - node_modules - vendor +- docker-compose.yml plugins: - jekyll-relative-links From db80fab9c7240929dd57336f7654ec9eb5d5003e Mon Sep 17 00:00:00 2001 From: Jason Desrosiers Date: Tue, 21 Feb 2023 13:13:54 -0800 Subject: [PATCH 21/64] Fix Netlify build --- .ruby-version | 1 + Gemfile | 1 + Gemfile.lock | 80 +++++++++++++++++++++++++-------------------------- _config.yml | 1 + 4 files changed, 42 insertions(+), 41 deletions(-) create mode 100644 .ruby-version diff --git a/.ruby-version b/.ruby-version new file mode 100644 index 00000000..94ff29cc --- /dev/null +++ b/.ruby-version @@ -0,0 +1 @@ +3.1.1 diff --git a/Gemfile b/Gemfile index d74d7c0d..a3a27a46 100644 --- a/Gemfile +++ b/Gemfile @@ -1,3 +1,4 @@ source 'https://rubygems.org' +ruby '3.1.1' gem 'github-pages', group: :jekyll_plugins gem 'webrick', '~> 1.7' diff --git a/Gemfile.lock b/Gemfile.lock index 4cf839f2..9111ff7b 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,43 +1,42 @@ GEM remote: https://rubygems.org/ specs: - activesupport (6.0.5) + activesupport (7.0.4.2) concurrent-ruby (~> 1.0, >= 1.0.2) - i18n (>= 0.7, < 2) - minitest (~> 5.1) - tzinfo (~> 1.1) - zeitwerk (~> 2.2, >= 2.2.2) - addressable (2.8.0) - public_suffix (>= 2.0.2, < 5.0) + i18n (>= 1.6, < 2) + minitest (>= 5.1) + tzinfo (~> 2.0) + addressable (2.8.1) + public_suffix (>= 2.0.2, < 6.0) coffee-script (2.4.1) coffee-script-source execjs coffee-script-source (1.11.1) colorator (1.1.0) - commonmarker (0.23.6) - concurrent-ruby (1.1.10) + commonmarker (0.23.8) + concurrent-ruby (1.2.0) dnsruby (1.61.9) simpleidn (~> 0.1) em-websocket (0.5.3) eventmachine (>= 0.12.9) http_parser.rb (~> 0) - ethon (0.15.0) + ethon (0.16.0) ffi (>= 1.15.0) eventmachine (1.2.7) execjs (2.8.1) - faraday (2.3.0) - faraday-net_http (~> 2.0) + faraday (2.7.4) + faraday-net_http (>= 2.0, < 3.1) ruby2_keywords (>= 0.0.4) - faraday-net_http (2.0.3) + faraday-net_http (3.0.2) ffi (1.15.5) forwardable-extended (2.6.0) gemoji (3.0.1) - github-pages (226) + github-pages (228) github-pages-health-check (= 1.17.9) - jekyll (= 3.9.2) + jekyll (= 3.9.3) jekyll-avatar (= 0.7.0) jekyll-coffeescript (= 1.1.1) - jekyll-commonmark-ghpages (= 0.2.0) + jekyll-commonmark-ghpages (= 0.4.0) jekyll-default-layout (= 0.1.4) jekyll-feed (= 0.15.1) jekyll-gist (= 1.5.0) @@ -71,10 +70,10 @@ GEM jemoji (= 0.12.0) kramdown (= 2.3.2) kramdown-parser-gfm (= 1.1.0) - liquid (= 4.0.3) + liquid (= 4.0.4) mercenary (~> 0.3) minima (= 2.5.1) - nokogiri (>= 1.13.4, < 2.0) + nokogiri (>= 1.13.6, < 2.0) rouge (= 3.26.0) terminal-table (~> 1.4) github-pages-health-check (1.17.9) @@ -83,17 +82,17 @@ GEM octokit (~> 4.0) public_suffix (>= 3.0, < 5.0) typhoeus (~> 1.3) - html-pipeline (2.14.2) + html-pipeline (2.14.3) activesupport (>= 2) nokogiri (>= 1.4) http_parser.rb (0.8.0) - i18n (0.9.5) + i18n (1.12.0) concurrent-ruby (~> 1.0) - jekyll (3.9.2) + jekyll (3.9.3) addressable (~> 2.4) colorator (~> 1.0) em-websocket (~> 0.5) - i18n (~> 0.7) + i18n (>= 0.7, < 2) jekyll-sass-converter (~> 1.0) jekyll-watch (~> 2.0) kramdown (>= 1.17, < 3) @@ -109,11 +108,11 @@ GEM coffee-script-source (~> 1.11.1) jekyll-commonmark (1.4.0) commonmarker (~> 0.22) - jekyll-commonmark-ghpages (0.2.0) - commonmarker (~> 0.23.4) + jekyll-commonmark-ghpages (0.4.0) + commonmarker (~> 0.23.7) jekyll (~> 3.9.0) jekyll-commonmark (~> 1.4.0) - rouge (>= 2.0, < 4.0) + rouge (>= 2.0, < 5.0) jekyll-default-layout (0.1.4) jekyll (~> 3.0) jekyll-feed (0.15.1) @@ -201,28 +200,26 @@ GEM rexml kramdown-parser-gfm (1.1.0) kramdown (~> 2.0) - liquid (4.0.3) - listen (3.7.1) + liquid (4.0.4) + listen (3.8.0) rb-fsevent (~> 0.10, >= 0.10.3) rb-inotify (~> 0.9, >= 0.9.10) mercenary (0.3.6) - mini_portile2 (2.8.0) minima (2.5.1) jekyll (>= 3.5, < 5.0) jekyll-feed (~> 0.9) jekyll-seo-tag (~> 2.1) - minitest (5.16.1) - nokogiri (1.13.9) - mini_portile2 (~> 2.8.0) + minitest (5.17.0) + nokogiri (1.14.2-x86_64-linux) racc (~> 1.4) - octokit (4.25.0) + octokit (4.25.1) faraday (>= 1, < 3) sawyer (~> 0.9) pathutil (0.16.2) forwardable-extended (~> 2.6) public_suffix (4.0.7) - racc (1.6.0) - rb-fsevent (0.11.1) + racc (1.6.2) + rb-fsevent (0.11.2) rb-inotify (0.10.1) ffi (~> 1.0) rexml (3.2.5) @@ -242,24 +239,25 @@ GEM unf (~> 0.1.4) terminal-table (1.8.0) unicode-display_width (~> 1.1, >= 1.1.1) - thread_safe (0.3.6) typhoeus (1.4.0) ethon (>= 0.9.0) - tzinfo (1.2.10) - thread_safe (~> 0.1) + tzinfo (2.0.6) + concurrent-ruby (~> 1.0) unf (0.1.4) unf_ext unf_ext (0.0.8.2) unicode-display_width (1.8.0) - webrick (1.7.0) - zeitwerk (2.6.0) + webrick (1.8.1) PLATFORMS - ruby + x86_64-linux-musl DEPENDENCIES github-pages webrick (~> 1.7) +RUBY VERSION + ruby 3.1.1p18 + BUNDLED WITH - 2.2.7 + 2.3.25 diff --git a/_config.yml b/_config.yml index 8540af95..3fd3064f 100644 --- a/_config.yml +++ b/_config.yml @@ -36,6 +36,7 @@ exclude: - Gemfile - node_modules - vendor +- cache - docker-compose.yml plugins: From 1577d2b2a30a41f7bdda28f90dbf82cb786747a6 Mon Sep 17 00:00:00 2001 From: Jason Desrosiers Date: Tue, 21 Feb 2023 10:53:34 -0800 Subject: [PATCH 22/64] Expose 2020-12 hyper-schema vocabulary --- draft/2020-12/meta/hyper-schema | 1 + 1 file changed, 1 insertion(+) create mode 120000 draft/2020-12/meta/hyper-schema diff --git a/draft/2020-12/meta/hyper-schema b/draft/2020-12/meta/hyper-schema new file mode 120000 index 00000000..29e3d6ac --- /dev/null +++ b/draft/2020-12/meta/hyper-schema @@ -0,0 +1 @@ +../../../_includes/draft/2020-12/meta/hyper-schema.json \ No newline at end of file From 5f4340aa4ba4c6d7f46c9e69c86594b9e923f471 Mon Sep 17 00:00:00 2001 From: Jason Desrosiers Date: Tue, 21 Feb 2023 13:44:07 -0800 Subject: [PATCH 23/64] Pull updated draft-07 hyper-schema-outout schema --- _includes/draft-07 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_includes/draft-07 b/_includes/draft-07 index 6e2b4251..567f7685 160000 --- a/_includes/draft-07 +++ b/_includes/draft-07 @@ -1 +1 @@ -Subproject commit 6e2b42516dc7e8845c980d284c61bd44c9f95cd2 +Subproject commit 567f768506aaa33a38e552c85bf0586029ef1b32 From 6cff5deaebc773b2a34a6c4bb47591dfde0636b1 Mon Sep 17 00:00:00 2001 From: Jacques Yakoub Date: Wed, 22 Feb 2023 11:50:52 +0100 Subject: [PATCH 24/64] docs: add a extra "Documentation generator" --- implementations.md | 1 + 1 file changed, 1 insertion(+) diff --git a/implementations.md b/implementations.md index 88107db8..e0cc8bce 100644 --- a/implementations.md +++ b/implementations.md @@ -320,6 +320,7 @@ the utility, and decided on a case-by-case basis. #### Documentation generators +- [docusaurus-json-schema-plugin](https://github.com/jy95/docusaurus-json-schema-plugin) - Schema viewer. Runs within a [Docusaurus](https://docusaurus.io/) web app. Supports draft-7, 2019-09, Draft 2020-12 - [json-schema-static-docs](https://tomcollins.github.io/json-schema-static-docs/) - Generates human friendly markdown documentation from JSON Schema. Includes links between pages based on $ref values. Supports draft-7. - [jsonschematic](https://github.com/yanick/jsonschematic/) - Svelte-based schema viewer. Runs as a local web app. Supports draft-7. - [docson](https://github.com/lbovet/docson) - Javascript-based schema viewer. Runs as a local web app. Supports draft-4. From b05b08d31bda2673d202b7967346b992a528e207 Mon Sep 17 00:00:00 2001 From: Santhosh Kumar Tekuri Date: Fri, 24 Feb 2023 18:16:42 +0530 Subject: [PATCH 25/64] Add boon validation library for Rust --- _data/validator-libraries-modern.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/_data/validator-libraries-modern.yml b/_data/validator-libraries-modern.yml index a5229060..f1f126fa 100644 --- a/_data/validator-libraries-modern.yml +++ b/_data/validator-libraries-modern.yml @@ -321,6 +321,12 @@ last-updated: "2022-08-31" - name: Rust implementations: + - name: boon + url: https://github.com/santhosh-tekuri/boon + date-draft: [2020-12, 2019-09] + draft: [7, 6, 4] + license: Apache License 2.0 + last-updated: "2023-02-22" - name: jsonschema-rs url: https://github.com/Stranger6667/jsonschema-rs notes: Fast due to compiling schema into a validation tree; 2019-09 and 2020-12 are partially supported From d7a714909faace2ffe3c54e8a7c1a0b3cd3f8432 Mon Sep 17 00:00:00 2001 From: Benjamin Granados <40007659+benjagm@users.noreply.github.com> Date: Wed, 1 Feb 2023 18:04:08 +0100 Subject: [PATCH 26/64] Update validator-libraries-modern.yml Added a GitHub Action in a new category. --- _data/validator-libraries-modern.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/_data/validator-libraries-modern.yml b/_data/validator-libraries-modern.yml index f1f126fa..9bf2dac3 100644 --- a/_data/validator-libraries-modern.yml +++ b/_data/validator-libraries-modern.yml @@ -453,3 +453,13 @@ last-updated: "2022-08-31" built-on: name: ajv +- name: Github Actions + implementations: + - name: Validate JSON Action + license: MIT + url: 'https://github.com/OrRosenblatt/validate-json-action' + date-draft: [2019-09, 2020-12] + draft: [] + built-on: + name: ajv + last-updated: "2023-02-01" From ec08a95bc8327fa53bd60cc041bd9988b61b9003 Mon Sep 17 00:00:00 2001 From: Matthew Adams Date: Tue, 14 Feb 2023 10:32:37 +0000 Subject: [PATCH 27/64] Added implementation details. --- _data/validator-libraries-modern.yml | 6 ++++++ implementations.md | 2 ++ 2 files changed, 8 insertions(+) diff --git a/_data/validator-libraries-modern.yml b/_data/validator-libraries-modern.yml index 9bf2dac3..84030d69 100644 --- a/_data/validator-libraries-modern.yml +++ b/_data/validator-libraries-modern.yml @@ -14,6 +14,12 @@ draft: [7, 6, 4, 3] license: "AGPL-3.0-only" last-updated: "2022-08-31" + - name: Corvus.JsonSchema + url: https://github.com/corvus-dotnet/corvus.jsonschema + date-draft: [2020-12, 2019-09] + draft: [7, 6] + license: Apache License, Version 2.0 + last-updated: "2023-02-14" - name: C notes: No known implementations support draft-06 or later. - name: C++ diff --git a/implementations.md b/implementations.md index e0cc8bce..37bef9a9 100644 --- a/implementations.md +++ b/implementations.md @@ -194,6 +194,8 @@ are the only keywords that changed. #### Code generation +- Dotnet + - [Corvus.JsonSchema](https://www.nuget.org/packages/Corvus.Json.JsonSchema.TypeGeneratorTool/) - generates an idiomatic dotnet type model from JSON Schema files, supporting all JSON Schema features, including property accessors, enumeration, common string `format`, and JSON document building/modification; over low-level `System.Text.Json` types. *supports Draft 6, Draft 7, Draft 2019-09 and Draft 2020-12*. - Elm - [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 From 20f6094a35789aca785367882f165219062584c8 Mon Sep 17 00:00:00 2001 From: Benjamin Granados <40007659+benjagm@users.noreply.github.com> Date: Wed, 1 Feb 2023 17:44:14 +0100 Subject: [PATCH 28/64] Update implementations.md --- implementations.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/implementations.md b/implementations.md index 37bef9a9..3a210100 100644 --- a/implementations.md +++ b/implementations.md @@ -162,6 +162,8 @@ For example, the only incompatibilities between draft-04 and draft-06 involve `e - [scala-jsonschema](https://github.com/andyglow/scala-jsonschema) (Apache 2.0) - generates schemad out of Scala case classes - Ruby - [Shale](https://github.com/kgiszczak/shale) (MIT) - generates schema from Ruby models *supports Draft 2020-12* +- Rust + - [Schemars](https://github.com/GREsau/schemars) (MIT) - generates schema from Rust code *supports Draft 7* #### From data From f627c7f0a189f03ef9b0d0a48cd7087eb98ef36a Mon Sep 17 00:00:00 2001 From: Benjamin Granados <40007659+benjagm@users.noreply.github.com> Date: Wed, 1 Feb 2023 17:50:30 +0100 Subject: [PATCH 29/64] Update implementations.md Added OpenAPI2JSON schema converter --- implementations.md | 1 + 1 file changed, 1 insertion(+) diff --git a/implementations.md b/implementations.md index 3a210100..22de12f0 100644 --- a/implementations.md +++ b/implementations.md @@ -290,6 +290,7 @@ the utility, and decided on a case-by-case basis. - OpenAPI - [JSON Schema to OpenAPI Schema](https://github.com/wework/json-schema-to-openapi-schema) _draft-04_ Draft-06 and -07 planned per README (MIT) + - [OpenAPI specification to JSON Schema](https://github.com/instrumenta/openapi2jsonschema) Draft-07 (MIT) - Orderly - [Orderly](https://github.com/lloyd/orderly) (BSD-3-Clause) - RAML From 4b70748708c463a0169f3c91ef067d3652c0d7e4 Mon Sep 17 00:00:00 2001 From: Nicolas Le Cam Date: Tue, 28 Feb 2023 11:07:53 +0100 Subject: [PATCH 30/64] Update @cfworker/json-schema info --- _data/validator-libraries-modern.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/_data/validator-libraries-modern.yml b/_data/validator-libraries-modern.yml index 84030d69..4b76ded6 100644 --- a/_data/validator-libraries-modern.yml +++ b/_data/validator-libraries-modern.yml @@ -194,10 +194,10 @@ anchor-name: cfworker url: https://github.com/cfworker/cfworker/blob/master/packages/json-schema/README.md notes: "Built for Cloudflare workers, browsers, and Node.js" - date-draft: [2019-09] - draft: [7, 6, 4] + date-draft: [2019-09, 2020-12] + draft: [7, 4] license: MIT - last-updated: "2022-08-31" + last-updated: "2023-02-28" - name: JSON Schema Library url: https://github.com/sagold/json-schema-library notes: "Built for Node.js and browsers. Customizable json-validator and json-schema utilities for traversal, data generation and validation" From cc0706ef3f7fcfbe9f66c09078ae1f63d62ca424 Mon Sep 17 00:00:00 2001 From: Benjamin Granados Date: Tue, 7 Mar 2023 10:45:43 +0100 Subject: [PATCH 31/64] Adding the OpenJS Foundation logo and copyright to JSON Schema site. As per OpenJS Foundation onboarding requirements we need to add the OpenJS Foundation logo and copyright to JSON Schema site. --- _includes/footer.html | 5 ++- assets/main.scss | 7 ++++ assets/openjs_foundation-logo.svg | 67 +++++++++++++++++++++++++++++++ 3 files changed, 78 insertions(+), 1 deletion(-) create mode 100644 assets/openjs_foundation-logo.svg diff --git a/_includes/footer.html b/_includes/footer.html index 6f99d796..d3537f08 100644 --- a/_includes/footer.html +++ b/_includes/footer.html @@ -19,7 +19,10 @@ diff --git a/assets/main.scss b/assets/main.scss index 9e965232..23875e58 100644 --- a/assets/main.scss +++ b/assets/main.scss @@ -176,4 +176,11 @@ $content-width: 960px !default; .wrapper.buttons { margin-bottom: 10px; +} + +.custom-logo-link { + /* display: inline-block; */ + max-height: 40px; + padding-bottom: 0.7em; + /* width: auto; */ } \ No newline at end of file diff --git a/assets/openjs_foundation-logo.svg b/assets/openjs_foundation-logo.svg new file mode 100644 index 00000000..fa063e7c --- /dev/null +++ b/assets/openjs_foundation-logo.svg @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 3b773016a739ff11662c92891bc6304ac0182993 Mon Sep 17 00:00:00 2001 From: Benjamin Granados Date: Tue, 7 Mar 2023 11:07:33 +0100 Subject: [PATCH 32/64] Adding the OpenJS Foundation trademarks content. Adding the OpenJS Foundation trademarks content. --- _includes/footer.html | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/_includes/footer.html b/_includes/footer.html index d3537f08..95b34378 100644 --- a/_includes/footer.html +++ b/_includes/footer.html @@ -21,11 +21,16 @@ - + From 4195b02d3243cd8ad47208ffea50a91fe58ac95a Mon Sep 17 00:00:00 2001 From: Benjamin Granados Date: Tue, 7 Mar 2023 18:45:07 +0100 Subject: [PATCH 33/64] Included @jviotti Reference docs https://www.learnjsonschema.com/ Included @jviotti Reference docs https://www.learnjsonschema.com/ --- learn/index.md | 1 + 1 file changed, 1 insertion(+) diff --git a/learn/index.md b/learn/index.md index 37c3a883..d9b9f3b4 100644 --- a/learn/index.md +++ b/learn/index.md @@ -12,4 +12,5 @@ title: Learn * [card.schema.json](./examples/card.schema.json) * [geographical-location.schema.json](./examples/geographical-location.schema.json) * [Understanding JSON Schema](/understanding-json-schema/) +* [JSON Schema reference focumentation](https://www.learnjsonschema.com/) * [JSON Schema Glossary](./glossary.md) which attempts to explain conversational terminology From 706d7fade01431b740ab7de07d6394cbe991ecfe Mon Sep 17 00:00:00 2001 From: Ben Hutton Date: Wed, 8 Mar 2023 10:47:10 +0000 Subject: [PATCH 34/64] Fix typo Co-authored-by: Jason Desrosiers --- learn/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/learn/index.md b/learn/index.md index d9b9f3b4..f94aaff2 100644 --- a/learn/index.md +++ b/learn/index.md @@ -12,5 +12,5 @@ title: Learn * [card.schema.json](./examples/card.schema.json) * [geographical-location.schema.json](./examples/geographical-location.schema.json) * [Understanding JSON Schema](/understanding-json-schema/) -* [JSON Schema reference focumentation](https://www.learnjsonschema.com/) +* [JSON Schema reference documentation](https://www.learnjsonschema.com/) * [JSON Schema Glossary](./glossary.md) which attempts to explain conversational terminology From cb53c1dbcaa9fb25dc9cf010c23d7100a8e30ce9 Mon Sep 17 00:00:00 2001 From: Benjamin Granados Date: Fri, 10 Mar 2023 15:14:37 +0100 Subject: [PATCH 35/64] Removing any reference to years in the OpenJS section Removing any reference to years in the OpenJS section --- _includes/footer.html | 1 - 1 file changed, 1 deletion(-) diff --git a/_includes/footer.html b/_includes/footer.html index 95b34378..46fe6fac 100644 --- a/_includes/footer.html +++ b/_includes/footer.html @@ -21,7 +21,6 @@ From 6c84af2059680a65defce977a8b823d210d13fd5 Mon Sep 17 00:00:00 2001 From: Tobias Buschor Date: Thu, 23 Mar 2023 20:21:40 +0100 Subject: [PATCH 36/64] Update validator-libraries-modern.yml --- _data/validator-libraries-modern.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/_data/validator-libraries-modern.yml b/_data/validator-libraries-modern.yml index 4b76ded6..b384a1b5 100644 --- a/_data/validator-libraries-modern.yml +++ b/_data/validator-libraries-modern.yml @@ -218,6 +218,12 @@ draft: [6] license: MIT last-updated: "2022-08-31" + - name: schema.js + url: https://github.com/nuxodin/schema.js + date-draft: [2020-12] + draft: [] + license: MIT + last-updated: "2023-03-23" - name: Kotlin implementations: - name: Medeia-validator From cf211cfd1061f3624d677035ebfca9554f9e8981 Mon Sep 17 00:00:00 2001 From: Tobias Buschor Date: Tue, 28 Mar 2023 11:09:58 +0200 Subject: [PATCH 37/64] Rename the implementation schema.js to jema.js (#511) * Rename the implementation schema.js to jema.js I have decided to use a more unique name. --- _data/validator-libraries-modern.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/_data/validator-libraries-modern.yml b/_data/validator-libraries-modern.yml index b384a1b5..1844bfaa 100644 --- a/_data/validator-libraries-modern.yml +++ b/_data/validator-libraries-modern.yml @@ -218,12 +218,12 @@ draft: [6] license: MIT last-updated: "2022-08-31" - - name: schema.js - url: https://github.com/nuxodin/schema.js + - name: jema.js + url: https://github.com/nuxodin/jema.js date-draft: [2020-12] draft: [] license: MIT - last-updated: "2023-03-23" + last-updated: "2023-03-28" - name: Kotlin implementations: - name: Medeia-validator From 1a696c37375b658a5187cf195d62968dac772f6a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20Kl=C3=ADmek?= Date: Tue, 28 Mar 2023 12:19:32 +0200 Subject: [PATCH 38/64] Add Dataspecer to implementations (#509) --- implementations.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/implementations.md b/implementations.md index 22de12f0..cb578e54 100644 --- a/implementations.md +++ b/implementations.md @@ -179,6 +179,10 @@ For example, the only incompatibilities between draft-04 and draft-06 involve `e - [Liquid Online Tools](https://www.liquid-technologies.com/online-json-to-schema-converter) - infer JSON Schema from sample JSON data - [quicktype.io](https://app.quicktype.io/#l=schema) - infer JSON Schema from samples, and generate TypeScript, C++, go, Java, C#, Swift, etc. types from JSON Schema +#### From model + +- [Dataspecer](https://dataspecer.com) - Generates JSON Schema (and JSON-LD context) from conceptual model *supports Draft 2020-12* + Generators from schemas ----------------------- From dbe7f658b6086e39cec91ff331c7cf39244ee425 Mon Sep 17 00:00:00 2001 From: Alexander Tikhonov Date: Tue, 11 Apr 2023 14:18:47 +0300 Subject: [PATCH 39/64] Add mashumaro to implementations (#514) --- implementations.md | 1 + 1 file changed, 1 insertion(+) diff --git a/implementations.md b/implementations.md index cb578e54..5810819a 100644 --- a/implementations.md +++ b/implementations.md @@ -156,6 +156,7 @@ 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 - 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 From a7ba6527cef06c605d6bae1fdd44057bf25de173 Mon Sep 17 00:00:00 2001 From: Bence Eros Date: Tue, 11 Apr 2023 13:22:04 +0200 Subject: [PATCH 40/64] adds erosb/json-sKema (#515) --- _data/validator-libraries-modern.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/_data/validator-libraries-modern.yml b/_data/validator-libraries-modern.yml index 1844bfaa..ce5a3c4e 100644 --- a/_data/validator-libraries-modern.yml +++ b/_data/validator-libraries-modern.yml @@ -151,6 +151,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. From 850c0c84c942d77a0ae957fe9dd4c583b05c3c86 Mon Sep 17 00:00:00 2001 From: Isaac Yonemoto Date: Tue, 4 Apr 2023 15:23:54 -0500 Subject: [PATCH 41/64] Update validator-libraries-modern.yml --- _data/validator-libraries-modern.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/_data/validator-libraries-modern.yml b/_data/validator-libraries-modern.yml index ce5a3c4e..79f1b4ea 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: [] From d7c7f15d7d71146c190ea58450f9690696e39421 Mon Sep 17 00:00:00 2001 From: Ben Hutton Date: Mon, 17 Apr 2023 12:31:59 +0100 Subject: [PATCH 42/64] Update slack invite link Previous one expired, so new slack invite link! The link doesn't have an expiery date, but sometimes expires after some number of uses... number unknown or not documented by Slack as far as I can tell. --- slack.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/slack.md b/slack.md index 18113d47..0f8bb1cf 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-1tc77c02b-z~UiKXqpM2gHchClKbUoXw --- From 76fa30ec186a89665f91247a1d9596ca1d3129c1 Mon Sep 17 00:00:00 2001 From: Chaitanya Chandurkar Date: Thu, 13 Apr 2023 03:01:47 -0400 Subject: [PATCH 43/64] Add json-schema-to-case-class to implementations --- implementations.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/implementations.md b/implementations.md index 5810819a..e5979b87 100644 --- a/implementations.md +++ b/implementations.md @@ -223,6 +223,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#readme) (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 From 2f96bcc762fce95430f6364df17196df3cbe9755 Mon Sep 17 00:00:00 2001 From: Chaitanya Chandurkar Date: Thu, 13 Apr 2023 03:05:21 -0400 Subject: [PATCH 44/64] Link to main repo --- implementations.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/implementations.md b/implementations.md index e5979b87..24cd8fff 100644 --- a/implementations.md +++ b/implementations.md @@ -224,7 +224,7 @@ are the only keywords that changed. - 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#readme) (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* + - [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 From 2f0a2f8b8304afcc263a242567dc04a2890a195e Mon Sep 17 00:00:00 2001 From: Julian Berman Date: Wed, 26 Apr 2023 16:56:50 -0400 Subject: [PATCH 45/64] Slightly loosen the language defining dialects and vocabularies. Even though this isn't fully consistent with the current spec definitions, it matches colloquial uses, and perhaps plans for future changes to these two concepts, without sacrificing accuracy today. --- learn/glossary.md | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/learn/glossary.md b/learn/glossary.md index 1fd68007..325cd5a9 100644 --- a/learn/glossary.md +++ b/learn/glossary.md @@ -16,12 +16,15 @@ The entries on this page can be linked to via anchor links (e.g. `https://json-s ### dialect -A collection of [vocabularies](#vocabulary), along with an indication of whether supporting each vocabulary is required to process schemas written in the 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 are identified by a URI, which [schemas](#schema) may then reference in their `$schema` [keyword](#keyword). +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](https://json-schema.org/specification.html#general-purpose-meta-schema) a number of dialects, each of which enable vocabularies suitable for the dialect's specific use case. +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 @@ -82,7 +85,7 @@ In recent [drafts](#draft) of the specification, a schema is either a JSON objec ### vocabulary -A collection of related [keywords](keyword), grouped to facilitate re-use. +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. @@ -90,7 +93,7 @@ It often also includes a [meta-schema](#meta-schema) (or multiple metaschemas) w 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. -Vocabularies are identified by a URI which may be referenced via the `$vocabulary` keyword in order to enable the vocabulary within a [dialect](#dialect). +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 From 7e4de361720ace9a4d2ac18fabc549dd7e9dac2b Mon Sep 17 00:00:00 2001 From: Julian Berman Date: Thu, 27 Apr 2023 11:14:50 -0400 Subject: [PATCH 46/64] Add a glossary entry for subschema. --- learn/glossary.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/learn/glossary.md b/learn/glossary.md index 325cd5a9..15f8a9d6 100644 --- a/learn/glossary.md +++ b/learn/glossary.md @@ -83,6 +83,24 @@ Strictly speaking, according to the specification, schemas are themselves JSON d 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 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. From 21276dc13d350817cc6584a9f497647f006ebc83 Mon Sep 17 00:00:00 2001 From: Julian Berman Date: Tue, 2 May 2023 13:47:45 -0400 Subject: [PATCH 47/64] Add a glossary entry for JSON. --- learn/glossary.md | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/learn/glossary.md b/learn/glossary.md index 15f8a9d6..08a9681a 100644 --- a/learn/glossary.md +++ b/learn/glossary.md @@ -36,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 other JSON objects. +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 the JSON 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. @@ -79,14 +91,14 @@ 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 objects or JSON boolean values. +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. From c0b1495a94c2834ee7f0e2a9aa5d3b173c7ad57f Mon Sep 17 00:00:00 2001 From: Julian Berman Date: Thu, 4 May 2023 10:31:58 -0400 Subject: [PATCH 48/64] Apply suggestions from CR Co-authored-by: Jason Desrosiers --- learn/glossary.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/learn/glossary.md b/learn/glossary.md index 08a9681a..8328a958 100644 --- a/learn/glossary.md +++ b/learn/glossary.md @@ -41,8 +41,8 @@ The current list of drafts can be found [here](https://json-schema.org/specifica 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 other JSON objects. -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 the JSON format. +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. From 805bec0239cc5c7153e1d3dba83e7506dadf559f Mon Sep 17 00:00:00 2001 From: slisaasquatch Date: Mon, 24 Apr 2023 11:41:46 -0700 Subject: [PATCH 49/64] Update saasquatch/json-schema-inferrer --- implementations.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/implementations.md b/implementations.md index 24cd8fff..f5054ae1 100644 --- a/implementations.md +++ b/implementations.md @@ -169,7 +169,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 From 6901d61c0ff8db1568e4db1da4be4417e340e5c3 Mon Sep 17 00:00:00 2001 From: Jason Desrosiers Date: Sun, 18 Jun 2023 17:18:19 -0700 Subject: [PATCH 50/64] Remove 2019-09,2020-12 support from networknt --- _data/validator-libraries-modern.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_data/validator-libraries-modern.yml b/_data/validator-libraries-modern.yml index 79f1b4ea..7327709a 100644 --- a/_data/validator-libraries-modern.yml +++ b/_data/validator-libraries-modern.yml @@ -149,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: From 65556f7a16c9a888898ebb37a62bf19280d6f2a2 Mon Sep 17 00:00:00 2001 From: Ben Hutton Date: Tue, 11 Jul 2023 11:46:13 +0100 Subject: [PATCH 51/64] Update slack link Fixes https://github.com/json-schema-org/blog/issues/34 Should not expire. Is limited to 400 uses per slack requirements. --- slack.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/slack.md b/slack.md index 0f8bb1cf..cc97f5ed 100644 --- a/slack.md +++ b/slack.md @@ -1,3 +1,3 @@ --- -redirect_to: https://join.slack.com/t/json-schema/shared_invite/zt-1tc77c02b-z~UiKXqpM2gHchClKbUoXw +redirect_to: https://join.slack.com/t/json-schema/shared_invite/zt-1ywpdj4yd-bXiBLjYEbKWUjzon0qiY9Q --- From a086d976948e5bc6aee326dd892ddcaa58be313c Mon Sep 17 00:00:00 2001 From: Clemens Uhlenhut Date: Fri, 30 Jun 2023 12:55:17 +0200 Subject: [PATCH 52/64] Update implementations.md Added information about JSON Schema testing tool. --- implementations.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/implementations.md b/implementations.md index f5054ae1..66d5ad7c 100644 --- a/implementations.md +++ b/implementations.md @@ -319,7 +319,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.* From fb3b1e681e273738f38cb1438b0635b6d4ad5383 Mon Sep 17 00:00:00 2001 From: Harrel Date: Thu, 29 Jun 2023 22:04:21 +0200 Subject: [PATCH 53/64] add dev.harrel:json-schema implementation --- _data/validator-libraries-modern.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/_data/validator-libraries-modern.yml b/_data/validator-libraries-modern.yml index 7327709a..45401832 100644 --- a/_data/validator-libraries-modern.yml +++ b/_data/validator-libraries-modern.yml @@ -182,6 +182,12 @@ 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: JavaScript implementations: - name: Hyperjump JSV From afebf6b72b471f754a89a8ab19dbc6676b7adac2 Mon Sep 17 00:00:00 2001 From: Oleg Smirnov Date: Wed, 2 Aug 2023 11:55:01 +0400 Subject: [PATCH 54/64] Add new json-schema-validator library to the list of implementations --- _data/validator-libraries-modern.yml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/_data/validator-libraries-modern.yml b/_data/validator-libraries-modern.yml index 45401832..6abf666e 100644 --- a/_data/validator-libraries-modern.yml +++ b/_data/validator-libraries-modern.yml @@ -261,6 +261,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 From 9ac36093083da18743d6b2d98faa94fb9974ef29 Mon Sep 17 00:00:00 2001 From: Nikita Skovoroda Date: Tue, 29 Aug 2023 20:24:03 +0300 Subject: [PATCH 55/64] Add `@exodus/schemasafe` validation library for JavaScript --- _data/validator-libraries-modern.yml | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/_data/validator-libraries-modern.yml b/_data/validator-libraries-modern.yml index 6abf666e..40122198 100644 --- a/_data/validator-libraries-modern.yml +++ b/_data/validator-libraries-modern.yml @@ -197,6 +197,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)" From 24d63efaa905e96074ddb1c01676068639a282f0 Mon Sep 17 00:00:00 2001 From: Chrusty Date: Thu, 7 Sep 2023 09:51:09 +1200 Subject: [PATCH 56/64] Adding protoc-gen-jsonschema as a code-generator --- implementations.md | 1 + 1 file changed, 1 insertion(+) diff --git a/implementations.md b/implementations.md index 66d5ad7c..ddb15002 100644 --- a/implementations.md +++ b/implementations.md @@ -207,6 +207,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* From ed82c99e2b68fd92e1e205b50b323efe87e925db Mon Sep 17 00:00:00 2001 From: Sergei Maertens Date: Wed, 6 Sep 2023 14:16:27 +0200 Subject: [PATCH 57/64] Add drf-jsonschema-serializer schema generator --- implementations.md | 1 + 1 file changed, 1 insertion(+) diff --git a/implementations.md b/implementations.md index ddb15002..9c44bf9c 100644 --- a/implementations.md +++ b/implementations.md @@ -157,6 +157,7 @@ For example, the only incompatibilities between draft-04 and draft-06 involve `e - [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 From cdbcf6919442b218fd6d957746028d6ae1c0c8b3 Mon Sep 17 00:00:00 2001 From: David Harsha Date: Sun, 20 Aug 2023 14:54:22 -0700 Subject: [PATCH 58/64] Add 2020-12/2019-09 support to json_schemer (ruby) Just released version 2.0.0 with support for these drafts: https://github.com/davishmcclurg/json_schemer/pull/135 --- _data/validator-libraries-modern.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/_data/validator-libraries-modern.yml b/_data/validator-libraries-modern.yml index 40122198..9b4b6e8e 100644 --- a/_data/validator-libraries-modern.yml +++ b/_data/validator-libraries-modern.yml @@ -362,10 +362,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: [] From a322db4c7a9ee4f101ed7f270ff5bc9bd2723e7a Mon Sep 17 00:00:00 2001 From: David Harsha Date: Sun, 20 Aug 2023 15:49:25 -0700 Subject: [PATCH 59/64] Improve implementation draft list layout This adds a comma between `draft` and `date-draft` items and checks for `empty` arrays to prevent stray "draft-0" output. --- implementations.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/implementations.md b/implementations.md index 9c44bf9c..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 %}
  • From 619d105f900bd078578787d13a043874460e8382 Mon Sep 17 00:00:00 2001 From: Niklas Eldberger Date: Tue, 12 Sep 2023 16:09:06 +0200 Subject: [PATCH 60/64] Add Zuunr JSON, Java validator --- _data/validator-libraries-modern.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/_data/validator-libraries-modern.yml b/_data/validator-libraries-modern.yml index 9b4b6e8e..04de6723 100644 --- a/_data/validator-libraries-modern.yml +++ b/_data/validator-libraries-modern.yml @@ -188,6 +188,12 @@ 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 From 9e2873d81a3e13eb980e08889c0f31c5ee50dd4d Mon Sep 17 00:00:00 2001 From: Ben Hutton Date: Mon, 2 Oct 2023 10:22:14 +0100 Subject: [PATCH 61/64] Delete CNAME Website is now deployed via Cloudflare from new `website` repo for this org. --- CNAME | 2 -- 1 file changed, 2 deletions(-) delete mode 100644 CNAME diff --git a/CNAME b/CNAME deleted file mode 100644 index 0d9c62bd..00000000 --- a/CNAME +++ /dev/null @@ -1,2 +0,0 @@ -json-schema.org - From 1ded71fde5e9773132c1e85c17d3e6e1c0086af7 Mon Sep 17 00:00:00 2001 From: Benjamin Granados <40007659+benjagm@users.noreply.github.com> Date: Wed, 11 Oct 2023 15:51:28 +0200 Subject: [PATCH 62/64] Add deprecation notice Add deprecation notice --- README.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/README.md b/README.md index b1992750..75764538 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,10 @@ +--- +📌 **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 [![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-2.1-4baaaa.svg)](https://github.com/json-schema-org/.github/blob/main/CODE_OF_CONDUCT.md) From 15701ceb9ad63bdb72e24b826df74899796547ca Mon Sep 17 00:00:00 2001 From: Benjamin Granados <40007659+benjagm@users.noreply.github.com> Date: Mon, 23 Oct 2023 11:02:47 +0200 Subject: [PATCH 63/64] Update README.md to tidy up badges. Tidy up badges. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 75764538..96dcb5ef 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ This repository is now deprecated. To contribute to JSON Schema's website please # JSON Schema Website [![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-2.1-4baaaa.svg)](https://github.com/json-schema-org/.github/blob/main/CODE_OF_CONDUCT.md) -[![Project Status: Active – The project has reached a stable, usable state and is being actively developed.](https://www.repostatus.org/badges/latest/active.svg)](https://www.repostatus.org/#active) +[![Project Status: Moved/Deprecated to https://github.com/json-schema-org/website – The project has been moved to a new location, and the version at that location should be considered authoritative.](https://www.repostatus.org/badges/latest/moved.svg)](https://www.repostatus.org/#moved) to [https://github.com/json-schema-org/website](https://github.com/json-schema-org/websitem) [![Financial Contributors on Open Collective](https://opencollective.com/json-schema/all/badge.svg?label=financial+contributors)](https://opencollective.com/json-schema) This is the repository for the [JSON Schema website](https://json-schema.org). From 91018fefd959caec966910184ef4a5ccb6aae326 Mon Sep 17 00:00:00 2001 From: Benjamin Granados <40007659+benjagm@users.noreply.github.com> Date: Tue, 24 Oct 2023 16:52:34 +0200 Subject: [PATCH 64/64] Update README.md to tidy up badges Update README.md to tidy up badges --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 96dcb5ef..5ee11859 100644 --- a/README.md +++ b/README.md @@ -7,8 +7,9 @@ This repository is now deprecated. To contribute to JSON Schema's website please # JSON Schema Website -[![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-2.1-4baaaa.svg)](https://github.com/json-schema-org/.github/blob/main/CODE_OF_CONDUCT.md) [![Project Status: Moved/Deprecated to https://github.com/json-schema-org/website – The project has been moved to a new location, and the version at that location should be considered authoritative.](https://www.repostatus.org/badges/latest/moved.svg)](https://www.repostatus.org/#moved) to [https://github.com/json-schema-org/website](https://github.com/json-schema-org/websitem) + +[![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-2.1-4baaaa.svg)](https://github.com/json-schema-org/.github/blob/main/CODE_OF_CONDUCT.md) [![Financial Contributors on Open Collective](https://opencollective.com/json-schema/all/badge.svg?label=financial+contributors)](https://opencollective.com/json-schema) This is the repository for the [JSON Schema website](https://json-schema.org).