From 298ae8683bf4d065a6fa5507ec1f4cc134e2211c Mon Sep 17 00:00:00 2001 From: Kamil Giszczak Date: Tue, 31 May 2022 12:52:36 +0200 Subject: [PATCH 001/105] Add Shale, a Ruby schema and code generator --- implementations.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/implementations.md b/implementations.md index 785552b2..9ff96380 100644 --- a/implementations.md +++ b/implementations.md @@ -124,6 +124,8 @@ For example, the only incompatibilities between draft-04 and draft-06 involve `e - [jsonschema-generator](https://github.com/victools/jsonschema-generator) (Apache 2.0) - generates schemas from Java types *supports Draft 7 and Draft 2019-09* - Scala - [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* #### From data @@ -175,6 +177,8 @@ are the only keywords that changed. - [schemafy](https://github.com/Marwes/schemafy/) - generates Rust types and serialization code from a JSON schema. *supports Draft 4* - TypeScript - [jsongenerator](https://github.com/jimblackler/jsonschematypes/tree/master/codegen) *JSON Schema 2019-09, draft-07, -06, -04, -03* (Apache-2.0) +- Ruby + - [Shale](https://github.com/kgiszczak/shale) (MIT) - generates Ruby models from a JSON schema *supports Draft 2020-12* #### Web UI generation From bd21c05b50996bfb9003f833f371ff270d1e689e Mon Sep 17 00:00:00 2001 From: Clemens Uhlenhut Date: Wed, 29 Jun 2022 09:55:12 +0200 Subject: [PATCH 002/105] Added JSONBuddy Cli tool --- _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 ca0a2517..e947896d 100644 --- a/_data/validator-libraries-modern.yml +++ b/_data/validator-libraries-modern.yml @@ -362,3 +362,9 @@ date-draft: draft: [7, 6, 4] notes: wraps [xeipuuv/gojsonschema](https://github.com/xeipuuv/gojsonschema) + - name: valbuddy + license: Free and commercial versions + url: 'https://www.json-buddy.com/json-validator-command-line-tool.htm' + date-draft: + draft: [2019-09, 7, 6, 4] + notes: JSONBuddy cli tool. Windows platform. Support for large data and streaming validation. \ No newline at end of file From 51d141618b708e169ea750303e71341164b381c5 Mon Sep 17 00:00:00 2001 From: Clemens Uhlenhut Date: Wed, 29 Jun 2022 12:37:11 +0200 Subject: [PATCH 003/105] Update _data/validator-libraries-modern.yml Co-authored-by: Ben Hutton --- _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 e947896d..86ef7bb8 100644 --- a/_data/validator-libraries-modern.yml +++ b/_data/validator-libraries-modern.yml @@ -363,7 +363,7 @@ draft: [7, 6, 4] notes: wraps [xeipuuv/gojsonschema](https://github.com/xeipuuv/gojsonschema) - name: valbuddy - license: Free and commercial versions + license: Free and commercial versions (proprietary) url: 'https://www.json-buddy.com/json-validator-command-line-tool.htm' date-draft: draft: [2019-09, 7, 6, 4] From 2714cae4526b4b5b68b964b2114790a6dc02adc9 Mon Sep 17 00:00:00 2001 From: Ben Hutton Date: Mon, 11 Jul 2022 09:38:22 +0100 Subject: [PATCH 004/105] Update day and time for Open Community Working Meetings --- index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.md b/index.md index f30d9e8e..df042724 100644 --- a/index.md +++ b/index.md @@ -41,7 +41,7 @@ We hold weekly Office Hours and twice monthly Open Community Working Meetings. Office Hours are every first Tuesday of the month at 15:00 UTC, and by appointment. -Open Community Working Meetings are every First and Third Friday of the month at 12:00 PT. +Open Community Working Meetings are every First and Third Monday of the month at 14:00 PT. ## Need more? From 08d994de463b8a7b59b73d73a772b37d425ce258 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 22 Jul 2022 09:36:08 +0000 Subject: [PATCH 005/105] Bump tzinfo from 1.2.9 to 1.2.10 Bumps [tzinfo](https://github.com/tzinfo/tzinfo) from 1.2.9 to 1.2.10. - [Release notes](https://github.com/tzinfo/tzinfo/releases) - [Changelog](https://github.com/tzinfo/tzinfo/blob/master/CHANGES.md) - [Commits](https://github.com/tzinfo/tzinfo/compare/v1.2.9...v1.2.10) --- updated-dependencies: - dependency-name: tzinfo 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 1f5915d2..a406fa2a 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -245,7 +245,7 @@ GEM thread_safe (0.3.6) typhoeus (1.4.0) ethon (>= 0.9.0) - tzinfo (1.2.9) + tzinfo (1.2.10) thread_safe (~> 0.1) unf (0.1.4) unf_ext From bbc6caaa81181d3ad881c146e8c822e5ce246a3e Mon Sep 17 00:00:00 2001 From: datensen <46059055+datensen@users.noreply.github.com> Date: Fri, 29 Jul 2022 15:11:47 +0200 Subject: [PATCH 006/105] add Perseid Modeler --- implementations.md | 1 + 1 file changed, 1 insertion(+) diff --git a/implementations.md b/implementations.md index 9ff96380..92197240 100644 --- a/implementations.md +++ b/implementations.md @@ -268,6 +268,7 @@ _None currently support draft-06 or later._ - [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.* +- [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.* - [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)* - [WebStorm](https://www.jetbrains.com/webstorm/), [IntelliJ IDEA](https://www.jetbrains.com/idea/), and other [JetBrains IDEs](https://www.jetbrains.com/products.html?fromMenu#type=ide) - *Code completion, documentation, and validation for JSON and YAML files using JSON Schema. Support for draft-4, draft-6, and draft-7.* From c2d3acd658953087f0b0a859185aef87a0519c7a Mon Sep 17 00:00:00 2001 From: datensen <46059055+datensen@users.noreply.github.com> Date: Fri, 29 Jul 2022 17:48:55 +0200 Subject: [PATCH 007/105] updated version supported by Perseid Modeler --- implementations.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/implementations.md b/implementations.md index 92197240..d82ce3f9 100644 --- a/implementations.md +++ b/implementations.md @@ -268,7 +268,7 @@ _None currently support draft-06 or later._ - [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.* -- [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.* +- [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)* - [WebStorm](https://www.jetbrains.com/webstorm/), [IntelliJ IDEA](https://www.jetbrains.com/idea/), and other [JetBrains IDEs](https://www.jetbrains.com/products.html?fromMenu#type=ide) - *Code completion, documentation, and validation for JSON and YAML files using JSON Schema. Support for draft-4, draft-6, and draft-7.* From e342d397f5f6df9d5bc06542c929bb32ea9bf840 Mon Sep 17 00:00:00 2001 From: datensen <46059055+datensen@users.noreply.github.com> Date: Fri, 29 Jul 2022 17:50:03 +0200 Subject: [PATCH 008/105] Minor update for Perseid Modeler --- implementations.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/implementations.md b/implementations.md index d82ce3f9..8cffdd0d 100644 --- a/implementations.md +++ b/implementations.md @@ -268,7 +268,7 @@ _None currently support draft-06 or later._ - [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.* -- [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* +- [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)* - [WebStorm](https://www.jetbrains.com/webstorm/), [IntelliJ IDEA](https://www.jetbrains.com/idea/), and other [JetBrains IDEs](https://www.jetbrains.com/products.html?fromMenu#type=ide) - *Code completion, documentation, and validation for JSON and YAML files using JSON Schema. Support for draft-4, draft-6, and draft-7.* From 90416a4885cb1d9654f852e177770a1a0fbb7eb6 Mon Sep 17 00:00:00 2001 From: Juan Cruz Viotti Date: Thu, 4 Aug 2022 19:04:20 -0400 Subject: [PATCH 009/105] Add Alterschema to the implementations list Signed-off-by: Juan Cruz Viotti --- implementations.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/implementations.md b/implementations.md index 9ff96380..a6799cbc 100644 --- a/implementations.md +++ b/implementations.md @@ -240,7 +240,8 @@ the utility, and decided on a case-by-case basis. #### Schema draft migration -_None currently support draft-06 or later._ +- JavaScript + - [AlterSchema](https://github.com/sourcemeta/alterschema) _JSON Schema 2020-12, 2019-09, draft-07, -06, -04_ #### Format converters From d19bf5270fa04451fdffca3a51d4858bef847982 Mon Sep 17 00:00:00 2001 From: Julian Berman Date: Tue, 9 Aug 2022 10:40:34 +0300 Subject: [PATCH 010/105] Add a Glossary page with 2 initial entries. Doing so should hopefully now allow farming out additional entries. Refs: json-schema-org/community#199. --- learn/glossary.md | 33 +++++++++++++++++++++++++++++++++ learn/index.md | 1 + 2 files changed, 34 insertions(+) create mode 100644 learn/glossary.md diff --git a/learn/glossary.md b/learn/glossary.md new file mode 100644 index 00000000..858b9e41 --- /dev/null +++ b/learn/glossary.md @@ -0,0 +1,33 @@ +# JSON Schema Glossary + +This document collects short explanations of terminology one may encounter within the JSON Schema community. + +Whilst many of the entries below have precise technical definitions, preference is given to explanations of their conversational use, with additional references linked for further information. +This page is not meant to be [normative](#normative), nor is it meant to contain fully original research or explanation. +It is meant to aid the understanding of those less familiar with formal language used within JSON Schema, or within specifications more broadly. +(In fact, entries below make effort to avoid terminology like "normative" itself for reasons just mentioned.) + +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. + +### draft + +An individual release of the JSON Schema specification. + +JSON Schema drafts are not intended to be provisional documents, as the layman's use of the word "draft" might indicate. + +While future drafts may introduce new behavior or changes to existing behavior, each draft is a completed, released document, batching together changes to the specification, and intended for implementation and use. + +The current list of drafts can be found [here](https://json-schema.org/specification-links.html#published-drafts). + +### normative + +In the context of JSON Schema, and formal specifications more broadly, a document which outlines standardized behavior. +This is as distinct from *non*-normative or informational documents, meant to explain, simplify or offer opinions. + +Distinguishing between whether a document is normative or not is intended to clarify to those using the document whether its contents are allowed to contradict or augment behavior described in other normative documents. +JSON Schema's normative documents notably include its [specification](https://json-schema.org/specification.html). +This page for instance, not being a normative document, is not able to proscribe new JSON Schema behavior not already covered by the specification. + +##### See also + +* [normative](https://developer.mozilla.org/en-US/docs/Glossary/Normative) and [non-normative](https://developer.mozilla.org/en-US/docs/Glossary/non-normative) in the Mozilla Glossary, and its links diff --git a/learn/index.md b/learn/index.md index 32716050..37c3a883 100644 --- a/learn/index.md +++ b/learn/index.md @@ -12,3 +12,4 @@ 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 Glossary](./glossary.md) which attempts to explain conversational terminology From fee524d04abc93e3f615053aafa38cfc1d6ef2b1 Mon Sep 17 00:00:00 2001 From: Julian Berman Date: Tue, 9 Aug 2022 21:44:53 +0300 Subject: [PATCH 011/105] Add the proper header for the glossary markdown file. --- learn/glossary.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/learn/glossary.md b/learn/glossary.md index 858b9e41..52284449 100644 --- a/learn/glossary.md +++ b/learn/glossary.md @@ -1,4 +1,7 @@ -# JSON Schema Glossary +--- +layout: page +title: JSON Schema Glossary +--- This document collects short explanations of terminology one may encounter within the JSON Schema community. From 4e0d93ba2a38f6c53f2cd31f96acfe79819555b8 Mon Sep 17 00:00:00 2001 From: Julian Berman Date: Wed, 10 Aug 2022 16:43:32 +0300 Subject: [PATCH 012/105] Add a solicitation for further glossary entries. --- learn/glossary.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/learn/glossary.md b/learn/glossary.md index 52284449..ce4ed2fb 100644 --- a/learn/glossary.md +++ b/learn/glossary.md @@ -10,6 +10,8 @@ This page is not meant to be [normative](#normative), nor is it meant to contain It is meant to aid the understanding of those less familiar with formal language used within JSON Schema, or within specifications more broadly. (In fact, entries below make effort to avoid terminology like "normative" itself for reasons just mentioned.) +If you encounter a term you wish were defined here, please feel free to [file an issue requesting it](https://github.com/json-schema-org/json-schema-org.github.io/issues/new?title=Add%20a%20glossary%20entry%20for%20). + 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. ### draft From 77d5a40f69923b269a7ddd28efda1c235ab92036 Mon Sep 17 00:00:00 2001 From: Julian Berman Date: Wed, 10 Aug 2022 16:46:33 +0300 Subject: [PATCH 013/105] Try including anchor headings via allejo/jekyll-anchor-headings. --- _includes/anchor_headings.html | 172 +++++++++++++++++++++++++++++++++ _layouts/default.html | 2 +- 2 files changed, 173 insertions(+), 1 deletion(-) create mode 100644 _includes/anchor_headings.html diff --git a/_includes/anchor_headings.html b/_includes/anchor_headings.html new file mode 100644 index 00000000..f8e22d6a --- /dev/null +++ b/_includes/anchor_headings.html @@ -0,0 +1,172 @@ +{% capture headingsWorkspace %} + {% comment %} + Copyright (c) 2018 Vladimir "allejo" Jimenez + + Permission is hereby granted, free of charge, to any person + obtaining a copy of this software and associated documentation + files (the "Software"), to deal in the Software without + restriction, including without limitation the rights to use, + copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following + conditions: + + The above copyright notice and this permission notice shall be + included in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + OTHER DEALINGS IN THE SOFTWARE. + {% endcomment %} + {% comment %} + Version 1.0.11 + https://github.com/allejo/jekyll-anchor-headings + + "Be the pull request you wish to see in the world." ~Ben Balter + + Usage: + {% include anchor_headings.html html=content anchorBody="#" %} + + Parameters: + * html (string) - the HTML of compiled markdown generated by kramdown in Jekyll + + Optional Parameters: + * beforeHeading (bool) : false - Set to true if the anchor should be placed _before_ the heading's content + * headerAttrs (string) : '' - Any custom HTML attributes that will be added to the heading tag; you may NOT use `id`; + the `%heading%` and `%html_id%` placeholders are available + * anchorAttrs (string) : '' - Any custom HTML attributes that will be added to the `` tag; you may NOT use `href`, `class` or `title`; + the `%heading%` and `%html_id%` placeholders are available + * anchorBody (string) : '' - The content that will be placed inside the anchor; the `%heading%` placeholder is available + * anchorClass (string) : '' - The class(es) that will be used for each anchor. Separate multiple classes with a space + * anchorTitle (string) : '' - The `title` attribute that will be used for anchors + * h_min (int) : 1 - The minimum header level to build an anchor for; any header lower than this value will be ignored + * h_max (int) : 6 - The maximum header level to build an anchor for; any header greater than this value will be ignored + * bodyPrefix (string) : '' - Anything that should be inserted inside of the heading tag _before_ its anchor and content + * bodySuffix (string) : '' - Anything that should be inserted inside of the heading tag _after_ its anchor and content + * generateId (true) : false - Set to true if a header without id should generate an id to use. + + Output: + The original HTML with the addition of anchors inside of all of the h1-h6 headings. + {% endcomment %} + + {% assign minHeader = include.h_min | default: 1 %} + {% assign maxHeader = include.h_max | default: 6 %} + {% assign beforeHeading = include.beforeHeading %} + {% assign headerAttrs = include.headerAttrs %} + {% assign nodes = include.html | split: ' + {% if headerLevel == 0 %} + + {% assign firstChunk = node | split: '>' | first %} + + + {% unless firstChunk contains '<' %} + {% capture node %}{% endcapture %} + {% assign _workspace = node | split: _closingTag %} + {% capture _hAttrToStrip %}{{ _workspace[0] | split: '>' | first }}>{% endcapture %} + {% assign header = _workspace[0] | replace: _hAttrToStrip, '' %} + {% assign escaped_header = header | strip_html | strip %} + + {% assign _classWorkspace = _workspace[0] | split: 'class="' %} + {% assign _classWorkspace = _classWorkspace[1] | split: '"' %} + {% assign _html_class = _classWorkspace[0] %} + + {% if _html_class contains "no_anchor" %} + {% assign skip_anchor = true %} + {% else %} + {% assign skip_anchor = false %} + {% endif %} + + {% assign _idWorkspace = _workspace[0] | split: 'id="' %} + {% if _idWorkspace[1] %} + {% assign _idWorkspace = _idWorkspace[1] | split: '"' %} + {% assign html_id = _idWorkspace[0] %} + {% elsif include.generateId %} + + {% assign html_id = escaped_header | slugify %} + {% if html_id == "" %} + {% assign html_id = false %} + {% endif %} + {% capture headerAttrs %}{{ headerAttrs }} id="%html_id%"{% endcapture %} + {% endif %} + + + {% capture anchor %}{% endcapture %} + + {% if skip_anchor == false and html_id and headerLevel >= minHeader and headerLevel <= maxHeader %} + {% if headerAttrs %} + {% capture _hAttrToStrip %}{{ _hAttrToStrip | split: '>' | first }} {{ headerAttrs | replace: '%heading%', escaped_header | replace: '%html_id%', html_id }}>{% endcapture %} + {% endif %} + + {% capture anchor %}href="#{{ html_id }}"{% endcapture %} + + {% if include.anchorClass %} + {% capture anchor %}{{ anchor }} class="{{ include.anchorClass }}"{% endcapture %} + {% endif %} + + {% if include.anchorTitle %} + {% capture anchor %}{{ anchor }} title="{{ include.anchorTitle | replace: '%heading%', escaped_header }}"{% endcapture %} + {% endif %} + + {% if include.anchorAttrs %} + {% capture anchor %}{{ anchor }} {{ include.anchorAttrs | replace: '%heading%', escaped_header | replace: '%html_id%', html_id }}{% endcapture %} + {% endif %} + + {% capture anchor %}{{ include.anchorBody | replace: '%heading%', escaped_header | default: '' }}{% endcapture %} + + + {% if beforeHeading %} + {% capture anchor %}{{ anchor }} {% endcapture %} + {% else %} + {% capture anchor %} {{ anchor }}{% endcapture %} + {% endif %} + {% endif %} + + {% capture new_heading %} + + {% endcapture %} + + + {% assign chunkCount = _workspace | size %} + {% if chunkCount > 1 %} + {% capture new_heading %}{{ new_heading }}{{ _workspace | last }}{% endcapture %} + {% endif %} + + {% capture edited_headings %}{{ edited_headings }}{{ new_heading }}{% endcapture %} + {% endfor %} +{% endcapture %}{% assign headingsWorkspace = '' %}{{ edited_headings | strip }} diff --git a/_layouts/default.html b/_layouts/default.html index 751e0dcc..7796462a 100644 --- a/_layouts/default.html +++ b/_layouts/default.html @@ -12,7 +12,7 @@ {% endif %}
- {{ content }} + {% include anchor_headings.html html=content anchorBody="#" %}
From 7f57b0faef4040a0e6eb1b1b411b5d8c339ec092 Mon Sep 17 00:00:00 2001 From: Julian Berman Date: Wed, 10 Aug 2022 16:57:25 +0300 Subject: [PATCH 014/105] H4 for see also, as our H5 is smaller than Lean's. --- learn/glossary.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/learn/glossary.md b/learn/glossary.md index ce4ed2fb..31d308b6 100644 --- a/learn/glossary.md +++ b/learn/glossary.md @@ -33,6 +33,6 @@ Distinguishing between whether a document is normative or not is intended to cla JSON Schema's normative documents notably include its [specification](https://json-schema.org/specification.html). This page for instance, not being a normative document, is not able to proscribe new JSON Schema behavior not already covered by the specification. -##### See also +#### See also * [normative](https://developer.mozilla.org/en-US/docs/Glossary/Normative) and [non-normative](https://developer.mozilla.org/en-US/docs/Glossary/non-normative) in the Mozilla Glossary, and its links From 9783f12ccecc19784c7fe9c27e03a6796fe78c99 Mon Sep 17 00:00:00 2001 From: Julian Berman Date: Fri, 12 Aug 2022 13:40:40 +0300 Subject: [PATCH 015/105] Add glossary entries for schema and instance. --- learn/glossary.md | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/learn/glossary.md b/learn/glossary.md index 31d308b6..0b585c7a 100644 --- a/learn/glossary.md +++ b/learn/glossary.md @@ -24,6 +24,15 @@ 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). +### instance + +A piece of JSON data which is to be validated by a [schema](#schema). + +JSON Schema can be used to validate JSON values of any type (as well as values from many JSON-like formats which can be reasonably represented as JSON). + +The JSON Schema specification makes no broad assumptions about the structure of instances themselves beyond those of the JSON specification itself. +In particular it does not reserve any properties within a JSON object for its own use, or require parsers of JSON to support features beyond those already mandated of JSON implementations. + ### normative In the context of JSON Schema, and formal specifications more broadly, a document which outlines standardized behavior. @@ -36,3 +45,13 @@ This page for instance, not being a normative document, is not able to proscribe #### See also * [normative](https://developer.mozilla.org/en-US/docs/Glossary/Normative) and [non-normative](https://developer.mozilla.org/en-US/docs/Glossary/non-normative) in the Mozilla Glossary, and its links + +### schema + +A document, written according to the proscribed structure of the JSON Schema specification, which can be used to validate [instances](#instance). + +The rules constituting what schemas are *valid* JSON Schemas, as well as the rules governing their behavior when validating instances, are defined by the JSON Schema specification. + +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. From 5a15c9930b03f3fc0a17e867449d4efdf641d694 Mon Sep 17 00:00:00 2001 From: Ben Hutton Date: Mon, 15 Aug 2022 13:39:07 +0100 Subject: [PATCH 016/105] Fix using `type` rather than `$ref` in 2020-12 release notes Some schemas in the 2020-12 release notes used `type` rather than `$ref` where the value was clearly a relative reference URI. https://groups.google.com/g/json-schema/c/v1fwFPA2PFU?pli=1 --- draft/2020-12/release-notes.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/draft/2020-12/release-notes.md b/draft/2020-12/release-notes.md index e4fb5c2b..7fad89da 100644 --- a/draft/2020-12/release-notes.md +++ b/draft/2020-12/release-notes.md @@ -350,8 +350,8 @@ external references that we want to bundle. "properties": { "address": { "type": "string" }, "city": { "type": "string" }, - "postalCode": { "type": "/schema/common#/$defs/usaPostalCode" }, - "state": { "type": "/$defs/states" } + "postalCode": { "$ref": "/schema/common#/$defs/usaPostalCode" }, + "state": { "$ref": "/$defs/states" } }, "$defs": { @@ -407,8 +407,8 @@ embedded schemas using `$defs`. Here's what the bundled schema would look like. "properties": { "address": { "type": "string" }, "city": { "type": "string" }, - "postalCode": { "type": "/schema/common#/$defs/usaPostalCode" }, - "state": { "type": "#/$defs/states" } + "postalCode": { "$ref": "/schema/common#/$defs/usaPostalCode" }, + "state": { "$ref": "#/$defs/states" } }, "$defs": { From 30f0b15730faba6c8147ae647c0ce6a68cb1f5a6 Mon Sep 17 00:00:00 2001 From: Jason Desrosiers Date: Fri, 19 Aug 2022 13:27:24 -0700 Subject: [PATCH 017/105] Fix local build error --- Gemfile | 1 + Gemfile.lock | 2 ++ 2 files changed, 3 insertions(+) diff --git a/Gemfile b/Gemfile index 37f5eaa4..d74d7c0d 100644 --- a/Gemfile +++ b/Gemfile @@ -1,2 +1,3 @@ source 'https://rubygems.org' gem 'github-pages', group: :jekyll_plugins +gem 'webrick', '~> 1.7' diff --git a/Gemfile.lock b/Gemfile.lock index a406fa2a..94427aa0 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -251,6 +251,7 @@ GEM unf_ext unf_ext (0.0.8.2) unicode-display_width (1.8.0) + webrick (1.7.0) zeitwerk (2.6.0) PLATFORMS @@ -258,6 +259,7 @@ PLATFORMS DEPENDENCIES github-pages + webrick (~> 1.7) BUNDLED WITH 2.2.7 From aa96d4b08ab1d4210ea15d52007986bf1c4e5977 Mon Sep 17 00:00:00 2001 From: boneyao Date: Mon, 22 Aug 2022 09:08:01 +0800 Subject: [PATCH 018/105] Java Implementation update Vert.x Json Schema, jsonschemafriend, networknt/json-schema-validator implement 2020-12 --- _data/validator-libraries-modern.yml | 39 ++++++++++++++-------------- 1 file changed, 20 insertions(+), 19 deletions(-) diff --git a/_data/validator-libraries-modern.yml b/_data/validator-libraries-modern.yml index ca0a2517..ea2303bb 100644 --- a/_data/validator-libraries-modern.yml +++ b/_data/validator-libraries-modern.yml @@ -109,19 +109,31 @@ notes: includes custom validator support, rich error returns - name: Java implementations: - - name: Snow - url: https://github.com/ssilverman/snowy-json - notes: Uses Maven for the project and Gson under the hood. - date-draft: [2019-09] - draft: [7, 6] - license: GNU Affero General Public License v3.0 - name: Vert.x Json Schema url: https://github.com/eclipse-vertx/vertx-json-schema notes: Validator for Eclipse Vert.x project JSON types. - date-draft: [2019-09] + date-draft: [2020-12, 2019-09] draft: [7] license: Apache License, Version 2.0 notes: includes custom keywords support, custom dialect support, asynchronous validation + - name: jsonschemafriend + url: https://github.com/jimblackler/jsonschemafriend + notes: + date-draft: [2020-12, 2019-09] + draft: [7, 6, 4, 3] + license: Apache License 2.0 + - 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] + draft: [7, 6, 4] + license: Apache License 2.0 + - name: Snow + url: https://github.com/ssilverman/snowy-json + notes: Uses Maven for the project and Gson under the hood. + date-draft: [2019-09] + draft: [7, 6] + license: GNU Affero General Public License v3.0 - name: everit-org/json-schema url: https://github.com/everit-org/json-schema notes: @@ -134,18 +146,7 @@ date-draft: draft: [7, 6, 4] license: Apache License 2.0 - - name: networknt/json-schema-validator - url: https://github.com/networknt/json-schema-validator - notes: Support OpenAPI 3.0 with Jackson parser - date-draft: [2019-09] - draft: [7, 6, 4] - license: Apache License 2.0 - - name: jsonschemafriend - url: https://github.com/jimblackler/jsonschemafriend - notes: - date-draft: [2019-09] - draft: [7, 6, 4, 3] - license: Apache License 2.0 + - name: Kotlin implementations: - name: Medeia-validator From 33b89001486e434d7dbd2e8a8de78e92c2ce5a1c Mon Sep 17 00:00:00 2001 From: Greg Dennis Date: Mon, 22 Aug 2022 08:58:23 +1200 Subject: [PATCH 019/105] sort implementations by most recent draft support --- _data/validator-libraries-modern.yml | 79 ++++++++++++++-------------- 1 file changed, 39 insertions(+), 40 deletions(-) diff --git a/_data/validator-libraries-modern.yml b/_data/validator-libraries-modern.yml index 005de682..58d7f6ec 100644 --- a/_data/validator-libraries-modern.yml +++ b/_data/validator-libraries-modern.yml @@ -1,16 +1,16 @@ - name: .NET anchor-name: dotnet implementations: - - name: Json.NET Schema - url: https://www.newtonsoft.com/jsonschema - date-draft: [2019-09] - draft: [7, 6, 4, 3] - license: "AGPL-3.0-only" - name: JsonSchema.Net url: https://github.com/gregsdennis/json-everything date-draft: [2020-12, 2019-09] draft: [7, 6] license: MIT + - name: Json.NET Schema + url: https://www.newtonsoft.com/jsonschema + date-draft: [2019-09] + draft: [7, 6, 4, 3] + license: "AGPL-3.0-only" - name: C implementations: - name: WJElement @@ -71,17 +71,17 @@ license: LGPL - name: Elixir implementations: + - name: JsonXema + url: https://github.com/hrzndhrn/json_xema + date-draft: + draft: [7, 6, 4] + license: MIT - name: Elixir JSON Schema validator url: https://github.com/jonasschmidt/ex_json_schema date-draft: draft: [4] notes: "Draft-06+ progress: issue [24](https://github.com/jonasschmidt/ex_json_schema/issues/24); branch [multi-draft-support](https://github.com/jonasschmidt/ex_json_schema/tree/multi-draft-support)" license: MIT - - name: JsonXema - url: https://github.com/hrzndhrn/json_xema - date-draft: - draft: [7, 6, 4] - license: MIT - name: Erlang implementations: - name: JeSSE @@ -90,11 +90,6 @@ license: "Apache 2.0" - name: Go implementations: - - name: gojsonschema - url: https://github.com/xeipuuv/gojsonschema - date-draft: - draft: [7, 6, 4] - license: "Apache 2.0" - name: santhosh-tekuri/jsonschema url: https://github.com/santhosh-tekuri/jsonschema notes: includes custom keywords, output formats @@ -107,6 +102,11 @@ draft: [7] license: MIT notes: includes custom validator support, rich error returns + - name: gojsonschema + url: https://github.com/xeipuuv/gojsonschema + date-draft: + draft: [7, 6, 4] + license: "Apache 2.0" - name: Java implementations: - name: Vert.x Json Schema @@ -146,7 +146,6 @@ date-draft: draft: [7, 6, 4] license: Apache License 2.0 - - name: Kotlin implementations: - name: Medeia-validator @@ -166,22 +165,22 @@ license: MIT - name: JavaScript implementations: + - name: Hyperjump JSV + url: https://github.com/jdesrosiers/json-schema + notes: "Built for Node.js and browsers. Includes support for custom vocabularies." + date-draft: [2019-09, 2020-12] + draft: [7, 6, 4] + license: MIT - 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)" date-draft: [2019-09, 2020-12] draft: [7, 6, 4] license: MIT - - name: djv - url: https://github.com/korzio/djv - notes: "for Node.js and browsers" - date-draft: - draft: [6, 4] - license: MIT - - name: Hyperjump JSV - url: https://github.com/jdesrosiers/json-schema - notes: "Built for Node.js and browsers. Includes support for custom vocabularies." - date-draft: [2019-09, 2020-12] + - name: "@cfworker/json-schema" + 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] license: MIT - name: JSON Schema Library @@ -190,17 +189,17 @@ date-draft: draft: [7, 6, 4] license: MIT + - name: djv + url: https://github.com/korzio/djv + notes: "for Node.js and browsers" + date-draft: + draft: [6, 4] + license: MIT - name: vue-vuelidate-jsonschema url: https://github.com/mokkabonna/vue-vuelidate-jsonschema date-draft: draft: [6] license: MIT - - name: "@cfworker/json-schema" - 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] - license: MIT - name: Perl implementations: - name: JSON::Schema::Modern @@ -322,7 +321,7 @@ url: https://json-everything.net date-draft: [2020-12, 2019-09] draft: [7, 6] - notes: Powered by JsonSchema.Net; server-side validation + notes: Powered by JsonSchema.Net in Blazor WASM for client-side validation - name: jsonschema.dev url: https://jsonschema.dev draft: [7] @@ -351,12 +350,6 @@ url: 'https://www.npmjs.com/package/ajv-cli' date-draft: draft: [7, 6, 4] - - name: Polyglottal JSON Schema Validator - license: MIT - url: 'https://www.npmjs.com/package/pajv' - date-draft: - draft: [6, 4] - notes: can be used with YAML and many other formats besides JSON - name: yajsv license: MIT url: 'https://github.com/neilpa/yajsv' @@ -368,4 +361,10 @@ url: 'https://www.json-buddy.com/json-validator-command-line-tool.htm' date-draft: draft: [2019-09, 7, 6, 4] - notes: JSONBuddy cli tool. Windows platform. Support for large data and streaming validation. \ No newline at end of file + notes: JSONBuddy cli tool. Windows platform. Support for large data and streaming validation. + - name: Polyglottal JSON Schema Validator + license: MIT + url: 'https://www.npmjs.com/package/pajv' + date-draft: + draft: [6, 4] + notes: can be used with YAML and many other formats besides JSON From ee7eaf0cab1483d7fbf5a594b62b8b605f34f41d Mon Sep 17 00:00:00 2001 From: Greg Dennis Date: Mon, 22 Aug 2022 09:23:28 +1200 Subject: [PATCH 020/105] move impls with no draft-6 or later support to obsolete --- _data/validator-libraries-modern.yml | 16 +--------------- _data/validator-libraries-obsolete.yml | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 15 deletions(-) diff --git a/_data/validator-libraries-modern.yml b/_data/validator-libraries-modern.yml index 58d7f6ec..e2a0a024 100644 --- a/_data/validator-libraries-modern.yml +++ b/_data/validator-libraries-modern.yml @@ -11,14 +11,6 @@ date-draft: [2019-09] draft: [7, 6, 4, 3] license: "AGPL-3.0-only" -- name: C - implementations: - - name: WJElement - url: https://github.com/netmail-open/wjelement - date-draft: - draft: [4, 3] - license: LGPL-3.0 - notes: "Draft-06+ progress: issue [17](https://github.com/netmail-open/wjelement/issues/17#issuecomment-390899432)" - name: C++ implementations: - name: f5-json-schema @@ -67,7 +59,7 @@ - name: json-schema url: https://github.com/fisxoj/json-schema date-draft: [2019-09] - draft: [4, 6, 7] + draft: [7, 6, 4] license: LGPL - name: Elixir implementations: @@ -76,12 +68,6 @@ date-draft: draft: [7, 6, 4] license: MIT - - name: Elixir JSON Schema validator - url: https://github.com/jonasschmidt/ex_json_schema - date-draft: - draft: [4] - notes: "Draft-06+ progress: issue [24](https://github.com/jonasschmidt/ex_json_schema/issues/24); branch [multi-draft-support](https://github.com/jonasschmidt/ex_json_schema/tree/multi-draft-support)" - license: MIT - name: Erlang implementations: - name: JeSSE diff --git a/_data/validator-libraries-obsolete.yml b/_data/validator-libraries-obsolete.yml index 6cc5bd40..952b28ce 100644 --- a/_data/validator-libraries-obsolete.yml +++ b/_data/validator-libraries-obsolete.yml @@ -11,6 +11,14 @@ date-draft: [2019-09] draft: [7, 6, 4] license: MIT +- name: C + implementations: + - name: WJElement + url: https://github.com/netmail-open/wjelement + date-draft: + draft: [4, 3] + license: LGPL-3.0 + notes: "Draft-06+ progress: issue [17](https://github.com/netmail-open/wjelement/issues/17#issuecomment-390899432)" - name: C++ anchor-name: cpp implementations: @@ -53,6 +61,14 @@ notes: draft: [4] license: BSL-1.0 +- name: Elixir + implementations: + - name: Elixir JSON Schema validator + url: https://github.com/jonasschmidt/ex_json_schema + date-draft: + draft: [4] + notes: "Draft-06+ progress: issue [24](https://github.com/jonasschmidt/ex_json_schema/issues/24); branch [multi-draft-support](https://github.com/jonasschmidt/ex_json_schema/tree/multi-draft-support)" + license: MIT - name: Go implementations: - name: validate-json From 6127552790d5ccf69351f708ef1793016f8dce78 Mon Sep 17 00:00:00 2001 From: Greg Dennis Date: Mon, 22 Aug 2022 11:39:57 +1200 Subject: [PATCH 021/105] add a note for C-lang now missing an impl --- _data/validator-libraries-modern.yml | 2 ++ implementations.md | 3 +++ 2 files changed, 5 insertions(+) diff --git a/_data/validator-libraries-modern.yml b/_data/validator-libraries-modern.yml index e2a0a024..82bfb332 100644 --- a/_data/validator-libraries-modern.yml +++ b/_data/validator-libraries-modern.yml @@ -11,6 +11,8 @@ date-draft: [2019-09] draft: [7, 6, 4, 3] license: "AGPL-3.0-only" +- name: C + notes: All known implementations are now obsolete. - name: C++ implementations: - name: f5-json-schema diff --git a/implementations.md b/implementations.md index a6799cbc..7b6eba77 100644 --- a/implementations.md +++ b/implementations.md @@ -40,6 +40,9 @@ Validators {% for language in validator-libraries %}
  • {{language.name}} + {% if language.notes %} + {{ implementation.notes }} + {% endif %}
      {% for implementation in language.implementations %}
    • From d500e001257afcdd89645698baf0a4c6be9d05e1 Mon Sep 17 00:00:00 2001 From: Greg Dennis Date: Mon, 22 Aug 2022 14:29:19 +1200 Subject: [PATCH 022/105] move valbuddy up --- _data/validator-libraries-modern.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/_data/validator-libraries-modern.yml b/_data/validator-libraries-modern.yml index 82bfb332..f23522c5 100644 --- a/_data/validator-libraries-modern.yml +++ b/_data/validator-libraries-modern.yml @@ -333,6 +333,12 @@ draft: [7] - name: Command Line implementations: + - name: valbuddy + license: Free and commercial versions (proprietary) + url: 'https://www.json-buddy.com/json-validator-command-line-tool.htm' + date-draft: + draft: [2019-09, 7, 6, 4] + notes: JSONBuddy cli tool. Windows platform. Support for large data and streaming validation. - name: ajv-cli license: MIT url: 'https://www.npmjs.com/package/ajv-cli' @@ -344,12 +350,6 @@ date-draft: draft: [7, 6, 4] notes: wraps [xeipuuv/gojsonschema](https://github.com/xeipuuv/gojsonschema) - - name: valbuddy - license: Free and commercial versions (proprietary) - url: 'https://www.json-buddy.com/json-validator-command-line-tool.htm' - date-draft: - draft: [2019-09, 7, 6, 4] - notes: JSONBuddy cli tool. Windows platform. Support for large data and streaming validation. - name: Polyglottal JSON Schema Validator license: MIT url: 'https://www.npmjs.com/package/pajv' From 1b3f0f3a4dbf50862ac069a66f751b6738f7fbd4 Mon Sep 17 00:00:00 2001 From: Greg Dennis Date: Mon, 22 Aug 2022 15:35:22 +1200 Subject: [PATCH 023/105] a few more updates --- _data/validator-libraries-modern.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/_data/validator-libraries-modern.yml b/_data/validator-libraries-modern.yml index f23522c5..47b225b2 100644 --- a/_data/validator-libraries-modern.yml +++ b/_data/validator-libraries-modern.yml @@ -12,7 +12,7 @@ draft: [7, 6, 4, 3] license: "AGPL-3.0-only" - name: C - notes: All known implementations are now obsolete. + notes: No known implementations support draft-06 or later. - name: C++ implementations: - name: f5-json-schema @@ -310,10 +310,6 @@ date-draft: [2020-12, 2019-09] draft: [7, 6] notes: Powered by JsonSchema.Net in Blazor WASM for client-side validation - - name: jsonschema.dev - url: https://jsonschema.dev - draft: [7] - notes: Powered by ajv; client-side validation - name: jschon.dev url: https://jschon.dev/ date-draft: [2020-12, 2019-09] @@ -323,6 +319,10 @@ date-draft: [2019-09] draft: [7, 6, 4, 3] notes: Powered by JSON.Net; server-side validation + - name: jsonschema.dev + url: https://jsonschema.dev + draft: [7] + notes: Powered by ajv; client-side validation - name: JSON Schema Lint url: http://jsonschemalint.com/ date-draft: From 57b87d4e7f495dc2a6d382f13507c54480940774 Mon Sep 17 00:00:00 2001 From: "Henry H. Andrews" Date: Fri, 19 Aug 2022 12:48:22 -0700 Subject: [PATCH 024/105] Warn people about AJV's noncompliant strict mode. --- _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 47b225b2..8188421d 100644 --- a/_data/validator-libraries-modern.yml +++ b/_data/validator-libraries-modern.yml @@ -161,7 +161,7 @@ license: MIT - 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)" + 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); _Only specification-compliant when strict mode is **disabled.**_" date-draft: [2019-09, 2020-12] draft: [7, 6, 4] license: MIT From 0d8017b48afe4f0431b0b1bc1eb2c44a3f675abf Mon Sep 17 00:00:00 2001 From: "Henry H. Andrews" Date: Mon, 22 Aug 2022 22:19:50 -0700 Subject: [PATCH 025/105] Add link to how to turn off AJV's strict mode --- _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 8188421d..db9bce97 100644 --- a/_data/validator-libraries-modern.yml +++ b/_data/validator-libraries-modern.yml @@ -161,7 +161,7 @@ license: MIT - 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); _Only specification-compliant when strict mode is **disabled.**_" + 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); _Only specification-compliant when [strict mode](https://ajv.js.org/strict-mode.html) is **disabled.**_" date-draft: [2019-09, 2020-12] draft: [7, 6, 4] license: MIT From a0c4a67b206df186a185c7e03861ca58addfd8f2 Mon Sep 17 00:00:00 2001 From: Julian Berman Date: Sun, 28 Aug 2022 12:41:20 +0300 Subject: [PATCH 026/105] Add glossary entries for keyword and meta-schema. --- learn/glossary.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/learn/glossary.md b/learn/glossary.md index 0b585c7a..94f1afbc 100644 --- a/learn/glossary.md +++ b/learn/glossary.md @@ -24,6 +24,12 @@ 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). +### keyword + +A property appearing within a [schema](#schema) object. + +The [JSON Schema specification](https://json-schema.org/specification.html) defines behavior for a large library of keywords which can be used to describe [instances](#instance). + ### instance A piece of JSON data which is to be validated by a [schema](#schema). @@ -33,6 +39,15 @@ JSON Schema can be used to validate JSON values of any type (as well as values f The JSON Schema specification makes no broad assumptions about the structure of instances themselves beyond those of the JSON specification itself. In particular it does not reserve any properties within a JSON object for its own use, or require parsers of JSON to support features beyond those already mandated of JSON implementations. +### meta-schema + +A [schema](#schema) which is itself intended to describe other *schemas*. + +JSON Schema defines a language for describing any [instance](#instance) using a schema written in JSON. +Since schemas are themselves JSON values, they may be opaquely treated as *instances*, and therefore described by other schemas. + +We refer to the schema-of-a-schema as a "meta-schema" to express this use. + ### normative In the context of JSON Schema, and formal specifications more broadly, a document which outlines standardized behavior. From d6e3a4899366dbd73d8f1a9a43c7b5c6c0f4a759 Mon Sep 17 00:00:00 2001 From: Julian Berman Date: Sun, 28 Aug 2022 12:41:46 +0300 Subject: [PATCH 027/105] Loosen the verbiage around the schema<->instance interaction in the glossary. --- learn/glossary.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/learn/glossary.md b/learn/glossary.md index 94f1afbc..8cbbda00 100644 --- a/learn/glossary.md +++ b/learn/glossary.md @@ -32,9 +32,9 @@ The [JSON Schema specification](https://json-schema.org/specification.html) defi ### instance -A piece of JSON data which is to be validated by a [schema](#schema). +A piece of JSON data which is to be described by a [schema](#schema). -JSON Schema can be used to validate JSON values of any type (as well as values from many JSON-like formats which can be reasonably represented as JSON). +JSON Schema can be used to describe JSON values of any type (as well as values from many JSON-like formats which can be reasonably represented as JSON). The JSON Schema specification makes no broad assumptions about the structure of instances themselves beyond those of the JSON specification itself. In particular it does not reserve any properties within a JSON object for its own use, or require parsers of JSON to support features beyond those already mandated of JSON implementations. @@ -63,9 +63,9 @@ This page for instance, not being a normative document, is not able to proscribe ### schema -A document, written according to the proscribed structure of the JSON Schema specification, which can be used to validate [instances](#instance). +A document, written according to the proscribed structure of the JSON Schema specification, which can be used to describe [instances](#instance). -The rules constituting what schemas are *valid* JSON Schemas, as well as the rules governing their behavior when validating instances, are defined by the JSON Schema specification. +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. From 75ec41479f39e55d8e8e850c7beb1197ef8a7a1c Mon Sep 17 00:00:00 2001 From: "Henry H. Andrews" Date: Mon, 29 Aug 2022 11:46:18 -0700 Subject: [PATCH 028/105] Sort languages and drafts automatically Several languages and date drafts were out of order. Fix it in code instead of trying to keep the data file consistent. --- _data/validator-libraries-modern.yml | 10 ++++++---- implementations.md | 6 +++--- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/_data/validator-libraries-modern.yml b/_data/validator-libraries-modern.yml index db9bce97..89302900 100644 --- a/_data/validator-libraries-modern.yml +++ b/_data/validator-libraries-modern.yml @@ -193,12 +193,14 @@ - name: JSON::Schema::Modern url: https://github.com/karenetheridge/JSON-Schema-Modern notes: - date-draft: [7, 2019-09, 2020-12] + date-draft: [2019-09, 2020-12] + draft: [7] license: "GNU General Public License, Version 1 + The Artistic License 1.0" - name: JSON::Schema::Tiny url: https://github.com/karenetheridge/JSON-Schema-Tiny notes: - date-draft: [7, 2019-09, 2020-12] + date-draft: [2019-09, 2020-12] + draft: [7] license: "GNU General Public License, Version 1 + The Artistic License 1.0" - name: JSON::Validator url: https://github.com/mojolicious/json-validator @@ -336,8 +338,8 @@ - name: valbuddy license: Free and commercial versions (proprietary) url: 'https://www.json-buddy.com/json-validator-command-line-tool.htm' - date-draft: - draft: [2019-09, 7, 6, 4] + date-draft: [2019-09] + draft: [7, 6, 4] notes: JSONBuddy cli tool. Windows platform. Support for large data and streaming validation. - name: ajv-cli license: MIT diff --git a/implementations.md b/implementations.md index 7b6eba77..c7e35057 100644 --- a/implementations.md +++ b/implementations.md @@ -26,7 +26,7 @@ Validators
    • {% endif %} + {% if implementation.last-updated %} +
    • Information last updated: + {{ implementation.last-updated }} +
    • + {% endif %} +
  • {% endfor %} @@ -338,6 +344,13 @@ Hyper-Schema ({{ implementation.license | join: ", " }}) {% endif %} + {% if implementation.last-updated %} +
    + Information last updated: + {{ implementation.last-updated }} + {% endif %} + + {% endfor %} From f6158efbd446235d88ee2f8dfef7f682e52085d7 Mon Sep 17 00:00:00 2001 From: "Henry H. Andrews" Date: Mon, 29 Aug 2022 21:35:18 -0700 Subject: [PATCH 034/105] Add a compliance section to the impl data This adds a structured section on compliance, specifically how to configure for it. This is *not* intended to be the same sort of compliance information that the test suite provides. Rather, it is about things that implementations document that don't necessarily show up in test suite results. This format includes brief instructions and optionally (ideally) a documentation link. I think this langauge is appropriately neutral, and particularly when there is a doc link it feels more like calling attention to something that is already advertised rather than being judgemental. The AJV and Opis cases are straightfoward. The Common Lisp implementation's case of needing to disable automatic downloading is worth a bit of thought as that is a SHOULD NOT rather than a MUST NOT, but this is why the schema description notes that it is the _most_ compliant config, and other configs may still be compliant. Similary, the networknt Java implementation having `nullable` on by default is not technically non-compliant, but it is more compliant to not have it. There may be other compliance configuration changes that need documenting, but these were the ones that I could find with a reasonable amount of effort. --- _data/schema.yml | 48 ++++++++++++++++++++++++++++ _data/validator-libraries-modern.yml | 23 ++++++++++++- implementations.md | 11 +++++++ 3 files changed, 81 insertions(+), 1 deletion(-) diff --git a/_data/schema.yml b/_data/schema.yml index a1e65f2e..bb696653 100644 --- a/_data/schema.yml +++ b/_data/schema.yml @@ -95,6 +95,8 @@ $defs: Additional information. Overly promotional (or critical) wording should be avoided. type: string + compliance: + $ref: "#/$defs/compliance" last-updated: description: | The date (in whatever timezone was relevant at the time) @@ -108,3 +110,49 @@ $defs: type: string format: date pattern: '^\d\d\d\d-[01]\d-[0123]\d$' + compliance: + description: | + The compliance section notes aspects of an implementation's + _default configuration_ that are non-compliant with the + specification in ways that are _not necessarily_ detected + by the test suite. This information is provided based on + implementation documentation. + type: object + unevaluatedProperties: false + properties: + constraints: + description: | + A brief note of design constraints that impacted choices + regarding compliance. This includes things like + targeting memory-constrained environments, or trading + off features for performance. It does not include + opinions regarding the value (or lack thereof) of + the specification requirements. + type: string + config: + description: | + Documents how to configure an implementation to produce + the most specification-compliant behavior if it does + not do so by default. The resulting configuration + may still have incomplete compliance (such as not + having implemented all keywords), but will not + have additional behavior that contradicts the + specification (such as modifying the instance + by filling in default values). + type: object + unevaluatedProperties: false + required: [instructions] + properties: + docs: + description: | + A link to the implementation's configuration + documentation, ideally to whatever part addresses + configuration and compliance. + type: string + format: uri + instructions: + description: | + Instructions to configure for compliance. Will + appear in a sentence after "you must" and before + "to produce specification-compliant behavior." + type: string diff --git a/_data/validator-libraries-modern.yml b/_data/validator-libraries-modern.yml index ea67caf0..db785618 100644 --- a/_data/validator-libraries-modern.yml +++ b/_data/validator-libraries-modern.yml @@ -73,6 +73,11 @@ date-draft: [2019-09] draft: [7, 6, 4] license: LGPL + compliance: + config: + docs: https://github.com/fisxoj/json-schema/blob/master/README.rst + instructions: | + set `resolve-remote-references` to `nil` last-updated: "2022-08-31" - name: Elixir implementations: @@ -134,6 +139,10 @@ date-draft: [2020-12, 2019-09] draft: [7, 6, 4] license: Apache License 2.0 + compliance: + config: + docs: https://github.com/networknt/json-schema-validator/blob/master/doc/config.md + instructions: "set `handleNullableField` to `false`" last-updated: "2022-08-31" - name: Snow url: https://github.com/ssilverman/snowy-json @@ -165,10 +174,14 @@ last-updated: "2022-08-31" - 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); _Only specification-compliant when [strict mode](https://ajv.js.org/strict-mode.html) is **disabled.**_" + 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)" date-draft: [2019-09, 2020-12] draft: [7, 6, 4] license: MIT + compliance: + config: + docs: https://ajv.js.org/strict-mode.html + instructions: "set option `strict: false`" last-updated: "2022-08-31" - name: "@cfworker/json-schema" url: https://github.com/cfworker/cfworker/blob/master/packages/json-schema/README.md @@ -249,6 +262,10 @@ date-draft: [2020-12, 2019-09] draft: [7, 6] license: "Apache License 2.0" + compliance: + config: + docs: https://opis.io/json-schema/2.x/php-loader.html#parser-options + instructions: 'set several options to their "vanilla" values' last-updated: "2022-08-31" - name: Swaggest Json Schema url: https://github.com/swaggest/php-json-schema @@ -386,6 +403,10 @@ url: 'https://www.npmjs.com/package/ajv-cli' date-draft: [2020-12, 2019-09] draft: [7, 6, 4] + compliance: + config: + docs: https://github.com/ajv-validator/ajv-cli#ajv-options + instructions: "pass `--strict=false`" last-updated: "2022-08-31" - name: yajsv license: MIT diff --git a/implementations.md b/implementations.md index fc65be59..90d4aff0 100644 --- a/implementations.md +++ b/implementations.md @@ -57,6 +57,17 @@ Validators {% endif %} + {% if implementation.compliance %} +
  • Compliance: + {% if implementation.compliance.config.docs %} + This implementation documents that you must + {% endif %} + {% if implementation.compliance.config.instructions %} + {{ implementation.compliance.config.instructions | markdownify | remove: '

    ' | remove: '

    ' }}
    to produce specification-compliant behavior. +
  • + {% endif %} + {% endif %} + {% if implementation.license %}
  • License: {{ implementation.license | join: ", " }} From ebdd0b57fca34030709a4de418c7d11b8bb7b1da Mon Sep 17 00:00:00 2001 From: "Henry H. Andrews" Date: Wed, 31 Aug 2022 14:11:36 -0700 Subject: [PATCH 035/105] Add built-on field Some implementations, particularly but not exclusively CLI and web ones, are implemented on top of other validator libraries. This adds a structured field to account for that, and updates all known cases where it is relevant. It was necessary to also support an anchor-name field for implementations as with programming languages, and in the process disambiguate a few duplicate names. --- _data/schema.yml | 41 ++++++++++++++++++++++------ _data/validator-libraries-modern.yml | 41 ++++++++++++++++++++++------ implementations.md | 9 +++++- 3 files changed, 74 insertions(+), 17 deletions(-) diff --git a/_data/schema.yml b/_data/schema.yml index bb696653..43a2cdb9 100644 --- a/_data/schema.yml +++ b/_data/schema.yml @@ -31,12 +31,8 @@ $defs: oneOf: - required: [implementations] - required: [notes] + $ref: "#/$defs/name-and-anchor-name" properties: - name: - type: string - anchor-name: - type: string - description: A name suitable for us as an HTML id. implementations: description: | The list of implementations for this language/environment, @@ -55,6 +51,30 @@ $defs: required: [last-updated] notes: type: [string, "null"] + name-and-anchor-name: + $comment: | + Require an anchor-name if the name is not suitable for + use as an anchor (HTML id attribute) + if: + required: [name] + not: + properties: + name: + $ref: "#/$defs/anchor-name" + then: + required: [anchor-name] + properties: + name: + type: string + anchor-name: + $ref: "#/$defs/anchor-name" + anchor-name: + description: | + A name suitable for us as an HTML id, if the regular name + is not a vald id. The regex is looser than the HTML spec + but is based on what was already working on the page. + type: string + pattern: '^[A-Za-z][A-Za-z0-9+-_:./ ()]*$' implementation: description: | An implementation and its associated information. @@ -64,10 +84,8 @@ $defs: anyOf: - required: [draft] - required: [date-draft] + $ref: "#/$defs/name-and-anchor-name" properties: - name: - description: The human-friendly name of the implementation - type: string url: description: | The URL of the implementation's repository or documentation @@ -95,6 +113,13 @@ $defs: Additional information. Overly promotional (or critical) wording should be avoided. type: string + built-on: + description: | + Indicates that this implementation is built on another + implementation, typically to make it available through + a web page, CLI, or a different programming language. + type: object + $ref: "#/$defs/name-and-anchor-name" compliance: $ref: "#/$defs/compliance" last-updated: diff --git a/_data/validator-libraries-modern.yml b/_data/validator-libraries-modern.yml index db785618..aaf6455e 100644 --- a/_data/validator-libraries-modern.yml +++ b/_data/validator-libraries-modern.yml @@ -52,7 +52,7 @@ draft: [7] license: MIT last-updated: "2022-08-31" - - name: json-schema + - name: json-schema (luposlip) url: https://github.com/luposlip/json-schema date-draft: [] draft: [4, 6, 7] @@ -61,6 +61,7 @@ - name: COM/ActiveX implementations: - name: JSON Essentials for COM/ActiveX + anchor-name: JSONEssentials url: https://pinery.systems/json-essentials-com/index.html draft: [7] license: proprietary @@ -68,7 +69,7 @@ last-updated: "2022-08-31" - name: Common Lisp implementations: - - name: json-schema + - name: json-schema (fisxoj) url: https://github.com/fisxoj/json-schema date-draft: [2019-09] draft: [7, 6, 4] @@ -135,7 +136,7 @@ last-updated: "2022-08-31" - name: networknt/json-schema-validator url: https://github.com/networknt/json-schema-validator - notes: Support OpenAPI 3.0 with Jackson parser + notes: Support OpenAPI 3.0 with Jackson parser date-draft: [2020-12, 2019-09] draft: [7, 6, 4] license: Apache License 2.0 @@ -184,6 +185,7 @@ instructions: "set option `strict: false`" last-updated: "2022-08-31" - name: "@cfworker/json-schema" + 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] @@ -294,11 +296,13 @@ draft: [7, 6, 4] license: BSD-3-Clause last-updated: "2022-08-31" - - name: jsonschema-rs + - name: jsonschema-rs (Python) url: https://github.com/Stranger6667/jsonschema-rs/tree/master/bindings/python notes: Python bindings to Rust's jsonschema crate date-draft: [] draft: [7, 6, 4] + built-on: + name: jsonschema-rs license: MIT last-updated: "2022-08-31" - name: Ruby @@ -351,43 +355,59 @@ last-updated: "2022-08-31" - name: Web (Online) implementations: - - name: Hyperjump JSV + - name: Hyperjump JSV (online) url: https://json-schema.hyperjump.io date-draft: [2020-12, 2019-09] draft: [7, 6, 4] notes: Supports multiple schemas and multiple instances; client-side validation + built-on: + name: Hyperjump JSV last-updated: "2022-08-31" - name: json-everything url: https://json-everything.net date-draft: [2020-12, 2019-09] draft: [7, 6] notes: Powered by JsonSchema.Net in Blazor WASM for client-side validation + built-on: + name: JsonSchema.Net last-updated: "2022-08-31" - name: jschon.dev url: https://jschon.dev/ date-draft: [2020-12, 2019-09] draft: [] + built-on: + name: jschon last-updated: "2022-08-31" - name: JSON Schema Validator url: https://www.jsonschemavalidator.net/ date-draft: [2019-09] draft: [7, 6, 4, 3] - notes: Powered by JSON.Net; server-side validation + notes: server-side validation + built-on: + name: Json.NET Schema last-updated: "2022-08-31" - name: jsonschema.dev url: https://jsonschema.dev draft: [7] - notes: Powered by ajv; client-side validation + notes: client-side validation + built-on: + name: ajv last-updated: "2022-08-31" - name: JSON Schema Lint url: http://jsonschemalint.com/ date-draft: [] draft: [7, 6, 4, 3, 2, 1] + built-on: + name: ajv + notes: Uses JSV for draft-03 and earlier last-updated: "2022-08-31" - name: ExtendsClass's JSON Schema Validator + anchor-name: ExtendsClass url: https://extendsclass.com/json-schema-validator.html date-draft: [] draft: [7] + built-on: + name: ajv last-updated: "2022-08-31" - name: Command Line implementations: @@ -407,13 +427,16 @@ config: docs: https://github.com/ajv-validator/ajv-cli#ajv-options instructions: "pass `--strict=false`" + built-on: + name: ajv last-updated: "2022-08-31" - name: yajsv license: MIT url: 'https://github.com/neilpa/yajsv' date-draft: [] draft: [7, 6, 4] - notes: wraps [xeipuuv/gojsonschema](https://github.com/xeipuuv/gojsonschema) + built-on: + name: gojsonschema last-updated: "2022-08-31" - name: Polyglottal JSON Schema Validator license: MIT @@ -422,3 +445,5 @@ draft: [6, 4] notes: can be used with YAML and many other formats besides JSON last-updated: "2022-08-31" + built-on: + name: ajv diff --git a/implementations.md b/implementations.md index 90d4aff0..d9356576 100644 --- a/implementations.md +++ b/implementations.md @@ -46,7 +46,8 @@ Validators
      {% for implementation in language.implementations %}
    • - {{ implementation.name }} + + {{ implementation.name }}
      • Supports: {% if implementation.date-draft %} @@ -68,6 +69,12 @@ Validators {% endif %} {% endif %} + {% if implementation.built-on %} +
      • Built on: + {{ implementation.built-on.name }} +
      • + {% endif %} + {% if implementation.license %}
      • License: {{ implementation.license | join: ", " }} From 1e7b146243f5f2426f99eb2f24b44e6e05002f1f Mon Sep 17 00:00:00 2001 From: "Henry H. Andrews" Date: Wed, 31 Aug 2022 18:55:05 -0700 Subject: [PATCH 036/105] Update ajv-cli, validate implementations data This updates ajv-cli and changes it to use the current syntax to validate everything under 2020-12. I'm not sure why it was using draft-07 for the learn/examples schemas as they declare 2020-12. --- .travis.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 724b3497..886aa1a0 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,8 +4,10 @@ sudo: false node_js: - node before_script: -- npm install ajv-cli@3.1.0 +- npm install ajv-cli@5.0.0 ajv-formats@2.1.1 - PATH="./node_modules/.bin/:$PATH" script: - bundle exec jekyll build -- ajv test -s draft-07/schema -d "learn/examples/*.json" --valid --add-used-schema=false +- ajv compile --spec=draft2020 --strict=false -s learn/examples/geographical-location.schema.json -s learn/examples/address.schema.json -s learn/examples/card.schema.json -s learn/examples/calendar.schema.json +- ajv compile --spec=draft2020 --strict=false -c ajv-formats -s _data/schema.yml +- ajv --spec=draft2020 --strict=false -c ajv-formats test -s _data/schema.yml -d "_data/*-libraries-*.yml" --valid From 723f3212710f5e7eaca54f6b681a58dfb70c086c Mon Sep 17 00:00:00 2001 From: Jim Crist-Harif Date: Wed, 14 Sep 2022 15:36:58 -0500 Subject: [PATCH 037/105] Add msgspec to implementations --- implementations.md | 1 + 1 file changed, 1 insertion(+) diff --git a/implementations.md b/implementations.md index e6034160..92aae02c 100644 --- a/implementations.md +++ b/implementations.md @@ -155,6 +155,7 @@ For example, the only incompatibilities between draft-04 and draft-06 involve `e - [typescript-json-schema](https://github.com/YousefED/typescript-json-schema) - 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. - 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 2ced0f2c2ddf9e277674d1ccdabd3dd23400976f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 22 Sep 2022 02:20:58 +0000 Subject: [PATCH 038/105] Bump commonmarker from 0.23.5 to 0.23.6 Bumps [commonmarker](https://github.com/gjtorikian/commonmarker) from 0.23.5 to 0.23.6. - [Release notes](https://github.com/gjtorikian/commonmarker/releases) - [Changelog](https://github.com/gjtorikian/commonmarker/blob/main/CHANGELOG.md) - [Commits](https://github.com/gjtorikian/commonmarker/compare/v0.23.5...v0.23.6) --- updated-dependencies: - dependency-name: commonmarker 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 94427aa0..ce7c576b 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -14,7 +14,7 @@ GEM execjs coffee-script-source (1.11.1) colorator (1.1.0) - commonmarker (0.23.5) + commonmarker (0.23.6) concurrent-ruby (1.1.10) dnsruby (1.61.9) simpleidn (~> 0.1) From bcf15746137770483a74285caa488f157749855d Mon Sep 17 00:00:00 2001 From: "Henry H. Andrews" Date: Sat, 24 Sep 2022 10:00:09 -0700 Subject: [PATCH 039/105] Trigger site publishing after master->main rename From c3b7cb9a15dbceda7e1789ac63eb23456eaf0495 Mon Sep 17 00:00:00 2001 From: DJ Adams Date: Thu, 29 Sep 2022 07:26:04 +0000 Subject: [PATCH 040/105] 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 041/105] 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 b420f375bc1867553d93c278923d611d35627d23 Mon Sep 17 00:00:00 2001 From: Ben Hutton Date: Thu, 29 Sep 2022 08:56:00 +0100 Subject: [PATCH 042/105] Update schedule for our open community meetings And add link to calendar --- index.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/index.md b/index.md index df042724..3b64e05c 100644 --- a/index.md +++ b/index.md @@ -41,8 +41,10 @@ We hold weekly Office Hours and twice monthly Open Community Working Meetings. Office Hours are every first Tuesday of the month at 15:00 UTC, and by appointment. -Open Community Working Meetings are every First and Third Monday of the month at 14:00 PT. +Open Community Working Meetings are every Monday at 14:00 PT. +If either of these are cancelled or moved for any reason, we will aim to announce such via the Slack announcement channel and Twitter. +See our [community calendar](https://calendar.google.com/calendar/u/0/embed?src=c_8r4g9r3etmrmt83fm2gljbatos@group.calendar.google.com) (and make sure to check the time zone). ## Need more? @@ -110,6 +112,7 @@ Similarly to most specifications, the JSON schema specification will continue to 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 a822bf3be51e19e25367ad9c9d440413beee4273 Mon Sep 17 00:00:00 2001 From: Kurt McKee Date: Thu, 29 Sep 2022 08:14:48 -0500 Subject: [PATCH 043/105] 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 044/105] 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 c76c6771a6df418dfc0e70af8b13dbdee3c1df41 Mon Sep 17 00:00:00 2001 From: Ben Hutton Date: Tue, 4 Oct 2022 14:37:01 +0100 Subject: [PATCH 045/105] Fix office hours time! --- index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.md b/index.md index 3b64e05c..84fcfde3 100644 --- a/index.md +++ b/index.md @@ -39,7 +39,7 @@ We hold weekly Office Hours and twice monthly Open Community Working Meetings. 👷 Open Community Working Meetings -Office Hours are every first Tuesday of the month at 15:00 UTC, and by appointment. +Office Hours are every first Tuesday of the month at 15:00 BST, and by appointment. Open Community Working Meetings are every Monday at 14:00 PT. From 537e4ee29c5b1296b7b25fb124244fb07cb429b0 Mon Sep 17 00:00:00 2001 From: Michael Mior Date: Tue, 4 Oct 2022 11:24:31 -0400 Subject: [PATCH 046/105] 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 047/105] 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 048/105] 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 049/105] 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 050/105] 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 051/105] 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 052/105] 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 053/105] 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 054/105] 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 055/105] 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 056/105] 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 057/105] 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 058/105] 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 059/105] 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 060/105] 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 061/105] 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 062/105] 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 063/105] 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 064/105] 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 065/105] 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 066/105] 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 067/105] 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 068/105] 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 069/105] 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 070/105] 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 071/105] 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 072/105] 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 073/105] 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 074/105] 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 075/105] 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 076/105] 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 077/105] 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 078/105] 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 079/105] 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 080/105] 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 081/105] 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 082/105] 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 083/105] 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 084/105] 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 085/105] 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 086/105] 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 087/105] 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 088/105] 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 089/105] 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 090/105] 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 091/105] 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 092/105] 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 093/105] 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 094/105] 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 095/105] 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 096/105] 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 097/105] 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 098/105] 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 099/105] 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 100/105] 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 101/105] 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 102/105] 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 103/105] 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 104/105] 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 105/105] 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).