diff --git a/.gitmodules b/.gitmodules index f975f8f1..3ac879c1 100644 --- a/.gitmodules +++ b/.gitmodules @@ -26,3 +26,7 @@ [submodule "_includes/draft/2019-09"] path = _includes/draft/2019-09 url = https://github.com/json-schema-org/json-schema-spec.git +[submodule "_includes/draft/2020-12"] + path = _includes/draft/2020-12 + url = https://github.com/json-schema-org/json-schema-spec.git + branch = 2020-12 diff --git a/Gemfile.lock b/Gemfile.lock index 5802c946..3e8e182a 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -247,4 +247,4 @@ DEPENDENCIES github-pages BUNDLED WITH - 1.16.1 + 2.2.7 diff --git a/README.md b/README.md index d15bb072..72766976 100644 --- a/README.md +++ b/README.md @@ -12,10 +12,36 @@ For the current status of issues and pull requests, please see the following bad [![Available](https://img.shields.io/github/issues/json-schema-org/json-schema-org.github.io/Status:%20Available.svg?color=brightgreen)](https://github.com/json-schema-org/json-schema-org.github.io/issues?q=is%3Aopen+is%3Aissue+label%3A%22Status%3A+Available%22) [![In Progress](https://img.shields.io/github/issues/json-schema-org/json-schema-org.github.io/Status:%20In%20Progress.svg)](https://github.com/json-schema-org/json-schema-org.github.io/labels/Status:%20In%20Progress) [![Review Needed](https://img.shields.io/github/issues/json-schema-org/json-schema-org.github.io/Status:%20Review%20Needed.svg)](https://github.com/json-schema-org/json-schema-org.github.io/labels/Status%3A%20Review%20Needed) [![Critical](https://img.shields.io/github/issues/json-schema-org/json-schema-org.github.io/Priority:%20Critical.svg?color=critical -)](https://github.com/json-schema-org/json-schema-org.github.io/labels/Priority%3A%20Critical) [![High](https://img.shields.io/github/issues/json-schema-org/json-schema-org.github.io/Priority:%20High.svg?color=important)](https://github.com/json-schema-org/json-schema-org.github.io/labels/Priority%3A%20High) [![Medium](https://img.shields.io/github/issues/json-schema-org/json-schema-org.github.io/Priority:%20Medium.svg)](https://github.com/json-schema-org/json-schema-org.github.io/labels/Priority%3A%20Medium) [![Low](https://img.shields.io/github/issues/json-schema-org/json-schema-org.github.io/Priority:%20Low.svg)](https://github.com/json-schema-org/json-schema-org.github.io/labels/Priority%3A%20Low) +)](https://github.com/json-schema-org/json-schema-org.github.io/labels/Priority%3A%20Critical) [![High](https://img.shields.io/github/issues/json-schema-org/json-schema-org.github.io/Priority:%20High.svg?color=important)](https://github.com/json-schema-org/json-schema-org.github.io/labels/Priority%3A%20High) [![Medium](https://img.shields.io/github/issues/json-schema-org/json-schema-org.github.io/Priority:%20Medium.svg)](https://github.com/json-schema-org/json-schema-org.github.io/labels/Priority%3A%20Medium) [![Low](https://img.shields.io/github/issues/json-schema-org/json-schema-org.github.io/Priority:%20Low.svg)](https://github.com/json-schema-org/json-schema-org.github.io/labels/Priority%3A%20Low) Labels are assigned based on [Sensible Github Labels](https://github.com/Relequestual/sensible-github-labels). +## Compile and run locally + +This site runs via github pages, with automatically building PR previews via netlify. +If you wish to compile and run this site locally, you will need to have ruby installed. + +If you're not familiar with ruby, consider using `rvm` (https://rvm.io/). +Once you have Ruby installed, follow these instructions while in the project directory + +> Instructions +> +> 1. Install the jekyll and bundler gems. +> +> `gem install jekyll bundler` +> +> 2. Create a new Jekyll site at ./myblog. +> +> ... +> +> 3. Build the site and make it available on a local server. +> +> `bundle exec jekyll serve` +> +> 4. Browse to http://localhost:4000 + +Adapted from https://jekyllrb.com/docs/ + ## License -The source material in this repository is licensed under the AFL or BSD license. +The source material in this repository is licensed under the AFL or BSD license. diff --git a/_includes/draft/2020-12 b/_includes/draft/2020-12 new file mode 160000 index 00000000..0e08f035 --- /dev/null +++ b/_includes/draft/2020-12 @@ -0,0 +1 @@ +Subproject commit 0e08f03573753bebe2841023dd6fcc822490ea07 diff --git a/_includes/footer.html b/_includes/footer.html index beb53386..63643047 100644 --- a/_includes/footer.html +++ b/_includes/footer.html @@ -12,7 +12,7 @@ {% include icon-github.html username=site.github_username %} {% endif %} -
  • Discussion: Slack | Google Groups
  • +
  • Discussion: Slack | Google Groups
  • Site edits: GitHub repo for site
  • diff --git a/_includes/header.html b/_includes/header.html index a63449c6..a744b2a2 100644 --- a/_includes/header.html +++ b/_includes/header.html @@ -25,7 +25,7 @@ {{ my_page.title | escape }} {%- endif -%} {% endfor -%} - Join our Slack + Join our Slack {%- endif -%} diff --git a/draft/preview/2020-12-rc-1/jsonschema-core.html b/draft/2020-12/json-schema-core.html similarity index 97% rename from draft/preview/2020-12-rc-1/jsonschema-core.html rename to draft/2020-12/json-schema-core.html index 9efd5fe4..3feb6057 100644 --- a/draft/preview/2020-12-rc-1/jsonschema-core.html +++ b/draft/2020-12/json-schema-core.html @@ -445,8 +445,9 @@ - - + + + @@ -488,7 +489,7 @@ - + @@ -512,7 +513,7 @@ H. Andrews, Ed. -Expires: June 4, 2021 +Expires: August 1, 2021 @@ -529,7 +530,7 @@ -December 1, 2020 +January 28, 2020 @@ -542,7 +543,6 @@

    Abstract

    JSON Schema defines the media type "application/schema+json", a JSON-based format for describing the structure of JSON data. JSON Schema asserts what a JSON document must look like, ways to extract information from it, and how to interact with it. The "application/schema-instance+json" media type provides additional feature-rich integration with "application/schema+json" beyond what can be offered for "application/json" documents.

    Note to Readers

    -

    This document a pre-release identified as JSON Schema draft 2020-12-rc-1.

    The issues list for this draft can be found at <https://github.com/json-schema-org/json-schema-spec/issues>.

    For additional information, see <https://json-schema.org/>.

    To provide feedback, use this issue tracker, the communication methods listed on the homepage, or email the document editors.

    @@ -550,7 +550,7 @@

    Status of This Memo

    This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.

    Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet-Drafts is at https://datatracker.ietf.org/drafts/current/.

    Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."

    -

    This Internet-Draft will expire on June 4, 2021.

    +

    This Internet-Draft will expire on August 1, 2021.

    Copyright Notice

    Copyright (c) 2020 IETF Trust and the persons identified as the document authors. All rights reserved.

    This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License.

    @@ -702,9 +702,11 @@

    Table of Contents

  • 11. A Vocabulary for Unevaluated Locations
  • -

    diff --git a/draft/preview/2020-12-rc-1/jsonschema-validation.html b/draft/2020-12/json-schema-validation.html similarity index 98% rename from draft/preview/2020-12-rc-1/jsonschema-validation.html rename to draft/2020-12/json-schema-validation.html index f203d3ec..e573655f 100644 --- a/draft/preview/2020-12-rc-1/jsonschema-validation.html +++ b/draft/2020-12/json-schema-validation.html @@ -451,7 +451,7 @@ - + @@ -475,7 +475,7 @@ H. Andrews, Ed. -Expires: June 4, 2021 +Expires: August 1, 2021 @@ -484,7 +484,7 @@ -December 1, 2020 +January 28, 2020 @@ -497,7 +497,6 @@

    Abstract

    JSON Schema (application/schema+json) has several purposes, one of which is JSON instance validation. This document specifies a vocabulary for JSON Schema to describe the meaning of JSON documents, provide hints for user interfaces working with JSON data, and to make assertions about what a valid document must look like.

    Note to Readers

    -

    This document a pre-release identified as JSON Schema draft 2020-12-rc-1.

    The issues list for this draft can be found at <https://github.com/json-schema-org/json-schema-spec/issues>.

    For additional information, see <https://json-schema.org/>.

    To provide feedback, use this issue tracker, the communication methods listed on the homepage, or email the document editors.

    @@ -505,7 +504,7 @@

    Status of This Memo

    This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.

    Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet-Drafts is at https://datatracker.ietf.org/drafts/current/.

    Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."

    -

    This Internet-Draft will expire on June 4, 2021.

    +

    This Internet-Draft will expire on August 1, 2021.

    Copyright Notice

    Copyright (c) 2020 IETF Trust and the persons identified as the document authors. All rights reserved.

    This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License.

    @@ -777,12 +776,12 @@

    6.4.4. maxContains

    The value of this keyword MUST be a non-negative integer.

    If "contains" is not present within the same schema object, then this keyword has no effect.

    -

    An array instance is valid against "maxContains" if its value is less than or equal to, the array length of the annotation result from an adjacent "contains" keyword where the annotation is an array, or the length of the instance array where the annotation is "true".

    +

    An instance array is valid against "maxContains" in two ways, depending on the form of the annotation result of an adjacent "contains" keyword. The first way is if the annotation result is an array and the length of that array is less than or equal to the "maxContains" value. The second way is if the annotation result is a boolean "true" and the instance array length is less than or equal to the "maxContains" value.

    6.4.5. minContains

    The value of this keyword MUST be a non-negative integer.

    If "contains" is not present within the same schema object, then this keyword has no effect.

    -

    An array instance is valid against "minContains" if its value is greater than or equal to, the array length of the annotation result from an adjacent "contains" keyword where the annotation is an array, or the length of the instance array where the annotation is "true".

    +

    An instance array is valid against "minContains" in two ways, depending on the form of the annotation result of an adjacent "contains" keyword. The first way is if the annotation result is an array and the length of that array is greater than or equal to the "minContains" value. The second way is if the annotation result is a boolean "true" and the instance array length is greater than or equal to the "minContains" value.

    A value of 0 is allowed, but is only useful for setting a range of occurrences from 0 to the value of "maxContains". A value of 0 with no "maxContains" causes "contains" to always pass validation.

    Omitting this keyword has the same behavior as a value of 1.

    @@ -1228,13 +1227,7 @@

  • Clarified the set and meaning of "contentEncoding" values
  • Reference ECMA-262, 11th edition for regular expression support
  • Split "format" into an annotation only vocabulary and an assertion vocabulary
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • +
  • Clarify "deprecated" when applicable to arrays
  • diff --git a/draft/2020-12/meta/applicator b/draft/2020-12/meta/applicator new file mode 120000 index 00000000..8fd44f54 --- /dev/null +++ b/draft/2020-12/meta/applicator @@ -0,0 +1 @@ +../../../_includes/draft/2020-12/meta/applicator.json \ No newline at end of file diff --git a/draft/2020-12/meta/content b/draft/2020-12/meta/content new file mode 120000 index 00000000..784c2c5e --- /dev/null +++ b/draft/2020-12/meta/content @@ -0,0 +1 @@ +../../../_includes/draft/2020-12/meta/content.json \ No newline at end of file diff --git a/draft/2020-12/meta/core b/draft/2020-12/meta/core new file mode 120000 index 00000000..acdf0634 --- /dev/null +++ b/draft/2020-12/meta/core @@ -0,0 +1 @@ +../../../_includes/draft/2020-12/meta/core.json \ No newline at end of file diff --git a/draft/2020-12/meta/format-annotation b/draft/2020-12/meta/format-annotation new file mode 120000 index 00000000..1264ea08 --- /dev/null +++ b/draft/2020-12/meta/format-annotation @@ -0,0 +1 @@ +../../../_includes/draft/2020-12/meta/format-annotation.json \ No newline at end of file diff --git a/draft/2020-12/meta/format-assertion b/draft/2020-12/meta/format-assertion new file mode 120000 index 00000000..b31c612b --- /dev/null +++ b/draft/2020-12/meta/format-assertion @@ -0,0 +1 @@ +../../../_includes/draft/2020-12/meta/format-assertion.json \ No newline at end of file diff --git a/draft/2020-12/meta/meta-data b/draft/2020-12/meta/meta-data new file mode 120000 index 00000000..49e5296e --- /dev/null +++ b/draft/2020-12/meta/meta-data @@ -0,0 +1 @@ +../../../_includes/draft/2020-12/meta/meta-data.json \ No newline at end of file diff --git a/draft/2020-12/meta/unevaluated b/draft/2020-12/meta/unevaluated new file mode 120000 index 00000000..fbd3c938 --- /dev/null +++ b/draft/2020-12/meta/unevaluated @@ -0,0 +1 @@ +../../../_includes/draft/2020-12/meta/unevaluated.json \ No newline at end of file diff --git a/draft/2020-12/meta/validation b/draft/2020-12/meta/validation new file mode 120000 index 00000000..90f062f1 --- /dev/null +++ b/draft/2020-12/meta/validation @@ -0,0 +1 @@ +../../../_includes/draft/2020-12/meta/validation.json \ No newline at end of file diff --git a/draft/2020-12/output/schema b/draft/2020-12/output/schema new file mode 120000 index 00000000..efe176a0 --- /dev/null +++ b/draft/2020-12/output/schema @@ -0,0 +1 @@ +../../../_includes/draft/2020-12/output/schema.json \ No newline at end of file diff --git a/draft/2020-12/output/verbose-example b/draft/2020-12/output/verbose-example new file mode 120000 index 00000000..38f31932 --- /dev/null +++ b/draft/2020-12/output/verbose-example @@ -0,0 +1 @@ +../../../_includes/draft/2020-12/output/verbose-example.json \ No newline at end of file diff --git a/draft/preview/2020-12-rc-1/relative-json-pointer.html b/draft/2020-12/relative-json-pointer.html similarity index 97% rename from draft/preview/2020-12-rc-1/relative-json-pointer.html rename to draft/2020-12/relative-json-pointer.html index d1fd75de..fe44bd8a 100644 --- a/draft/preview/2020-12-rc-1/relative-json-pointer.html +++ b/draft/2020-12/relative-json-pointer.html @@ -397,7 +397,7 @@ - + @@ -421,7 +421,7 @@ H. Andrews, Ed. -Expires: June 4, 2021 +Expires: August 1, 2021 @@ -430,7 +430,7 @@ -December 1, 2020 +January 28, 2020 @@ -446,7 +446,7 @@

    Status of This Memo

    This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.

    Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet-Drafts is at https://datatracker.ietf.org/drafts/current/.

    Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."

    -

    This Internet-Draft will expire on June 4, 2021.

    +

    This Internet-Draft will expire on August 1, 2021.

    Copyright Notice

    Copyright (c) 2020 IETF Trust and the persons identified as the document authors. All rights reserved.

    This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License.

    @@ -505,8 +505,9 @@

    The ABNF syntax of a Relative JSON Pointer is:

     
    -   relative-json-pointer =  non-negative-integer <json-pointer>
    +   relative-json-pointer =  non-negative-integer [index-manipulation] <json-pointer>
        relative-json-pointer =/ non-negative-integer "#"
    +   index-manipulation    =  ("+" / "-") non-negative-integer
        non-negative-integer      =  %x30 / %x31-39 *( %x30-39 )
                ; "0", or digits without a leading "0"
     
    @@ -566,8 +567,10 @@ 

    "0" "baz" "1/0" "bar" + "0-1" "bar" "2/highly/nested/objects" true "0#" 1 + "0-1#" 0 "1#" "foo"

    @@ -629,7 +632,7 @@

    -
    draft-handrews-relative-json-pointer-03
    +
    draft-bhutton-relative-json-pointer-00
    • Add array forward and backward index manipulation

    diff --git a/draft/2020-12/release-notes.md b/draft/2020-12/release-notes.md new file mode 100644 index 00000000..ed8cfc6e --- /dev/null +++ b/draft/2020-12/release-notes.md @@ -0,0 +1,8 @@ +--- +title: JSON Schema 2020-12 Release Notes +layout: page +--- + +_NOTE: This page is still being written._ + +You can find a minimal changelog at the end of the specification documents themselves. \ No newline at end of file diff --git a/draft/2020-12/schema b/draft/2020-12/schema new file mode 120000 index 00000000..70e58e37 --- /dev/null +++ b/draft/2020-12/schema @@ -0,0 +1 @@ +../../_includes/draft/2020-12/schema.json \ No newline at end of file diff --git a/draft/2020-12/vocab/applicator.md b/draft/2020-12/vocab/applicator.md new file mode 100644 index 00000000..93c75bcb --- /dev/null +++ b/draft/2020-12/vocab/applicator.md @@ -0,0 +1,4 @@ +--- +redirect_to: /draft/2020-12/json-schema-core.html#rfc.section.10 +title: A Vocabulary for Applying Subschemas +--- diff --git a/draft/2020-12/vocab/content.md b/draft/2020-12/vocab/content.md new file mode 100644 index 00000000..b60a25c4 --- /dev/null +++ b/draft/2020-12/vocab/content.md @@ -0,0 +1,4 @@ +--- +redirect_to: /draft/2020-12/json-schema-validation.html#rfc.section.8 +title: A Vocabulary for the Contents of String-Encoded Data +--- diff --git a/draft/2020-12/vocab/core.md b/draft/2020-12/vocab/core.md new file mode 100644 index 00000000..dca0cbed --- /dev/null +++ b/draft/2020-12/vocab/core.md @@ -0,0 +1,4 @@ +--- +redirect_to: /draft/2020-12/json-schema-core.html#rfc.section.8 +title: The JSON Schema Core Vocabulary +--- diff --git a/draft/2020-12/vocab/format-annotation.md b/draft/2020-12/vocab/format-annotation.md new file mode 100644 index 00000000..ff0e1aa8 --- /dev/null +++ b/draft/2020-12/vocab/format-annotation.md @@ -0,0 +1,4 @@ +--- +redirect_to: /draft/2020-12/json-schema-validation.html#rfc.section.7 +title: A Vocabulary for Semantic Content with "format" as annotations +--- diff --git a/draft/2020-12/vocab/format-assertion.md b/draft/2020-12/vocab/format-assertion.md new file mode 100644 index 00000000..fe9640eb --- /dev/null +++ b/draft/2020-12/vocab/format-assertion.md @@ -0,0 +1,4 @@ +--- +redirect_to: /draft/2020-12/json-schema-validation.html#rfc.section.7 +title: A Vocabulary for Semantic Content with "format" as assertions +--- diff --git a/draft/2020-12/vocab/meta-data.md b/draft/2020-12/vocab/meta-data.md new file mode 100644 index 00000000..0fb58ffa --- /dev/null +++ b/draft/2020-12/vocab/meta-data.md @@ -0,0 +1,4 @@ +--- +redirect_to: /draft/2020-12/json-schema-validation.html#rfc.section.9 +title: A Vocabulary for Basic Meta-Data Annotations +--- diff --git a/draft/2020-12/vocab/unevaluated.md b/draft/2020-12/vocab/unevaluated.md new file mode 100644 index 00000000..0ff02bc1 --- /dev/null +++ b/draft/2020-12/vocab/unevaluated.md @@ -0,0 +1,4 @@ +--- +redirect_to: /draft/2020-12/json-schema-core.html#rfc.section.11 +title: A Vocabulary for Unevaluated Locations +--- diff --git a/draft/2020-12/vocab/validation.md b/draft/2020-12/vocab/validation.md new file mode 100644 index 00000000..e03833e4 --- /dev/null +++ b/draft/2020-12/vocab/validation.md @@ -0,0 +1,4 @@ +--- +redirect_to: /draft/2020-12/json-schema-validation.html#rfc.section.6 +title: A Vocabulary for Structural Validation +--- diff --git a/hyper-schema.md b/hyper-schema.md deleted file mode 100644 index d57e3c3f..00000000 --- a/hyper-schema.md +++ /dev/null @@ -1,3 +0,0 @@ ---- -redirect_to: /draft/2019-09/hyper-schema ---- diff --git a/implementations.md b/implementations.md index 8a3cdf62..f626c71c 100644 --- a/implementations.md +++ b/implementations.md @@ -78,47 +78,6 @@ Benchmarks that compare at least two implementations supporting draft-06+ may be - PHP - [php-json-schema-bench](https://github.com/swaggest/php-json-schema-bench) - comparative benchmark for JSON-schema PHP validators using JSON-Schema Test Suite and z-schema/JSCK (MIT) -Hyper-Schema ---------------------- - - - - - -
      - {% for language in hyper-schema-libraries %} -
    • - {{language.name}} -
        - {% for implementation in language.implementations %} -
      • - {{ implementation.name }} - - {% if implementation.draft %} - draft-0{{ implementation.draft | join: ", -0" }} - {% endif %} - - {{implementation.notes | markdownify | remove: '

        ' | remove: '

        '}} - - {% if implementation.license %} - ({{ implementation.license | join: ", " }}) - {% endif %} - -
      • - {% endfor %} -
      -
    • - {% endfor %} -
    - #### API documentation - JavaScript @@ -306,3 +265,44 @@ Schema Linter - [json-schema-linter](https://www.json-schema-linter.com/) - Lint/validate/parse json-schema itself, and find typos, missing properties, missing required keys, etc. Supports draft 4, 6, and 7. - [Stoplight Spectral](https://stoplight.io/open-source/spectral) - A flexible JSON/YAML linter for creating automated style guides, with baked in support for OpenAPI v2/v3 and JSON Schema. Supports draft 4, 6, and 7. + +Hyper-Schema +--------------------- + + + + + +
      + {% for language in hyper-schema-libraries %} +
    • + {{language.name}} +
        + {% for implementation in language.implementations %} +
      • + {{ implementation.name }} + + {% if implementation.draft %} + draft-0{{ implementation.draft | join: ", -0" }} + {% endif %} + + {{implementation.notes | markdownify | remove: '

        ' | remove: '

        '}} + + {% if implementation.license %} + ({{ implementation.license | join: ", " }}) + {% endif %} + +
      • + {% endfor %} +
      +
    • + {% endfor %} +
    \ No newline at end of file diff --git a/index.md b/index.md index 99bc24ea..4adc7d49 100644 --- a/index.md +++ b/index.md @@ -8,11 +8,9 @@ permalink: / **JSON Schema** is a vocabulary that allows you to **annotate** and **validate** JSON documents. -## Advantages +## Benefits -
    - -### JSON Schema +
    * Describes your existing data format(s). * Provides clear human- and machine- readable documentation. @@ -22,43 +20,56 @@ permalink: /
    -
    +## New to JSON Schema? -### JSON Hyper-Schema +Learning a new specification can be daunting. -* Make any JSON format a hypermedia format with no constraints on document structure -* Allows use of [URI Templates](https://tools.ietf.org/html/rfc6570) with instance data -* Describe client data for use with links using JSON Schema. -* Recognizes collections and collection items. +You should read our [getting started guide](/learn/getting-started-step-by-step)! -
    +You can also see our other [learning resources](/learn). + +### Got questions? + +The JSON Schema team and community are here to help! + +At any point, feel free to join our [Slack server](/slack). + +We also monitor the `jsonschema` tag on StackOverflow. ## Project Status -16 September 2019: Draft 2019-09 (formerly known as draft-08) has been published! +2021-02-01: Draft 2020-12 has been published! -The IETF document IDs are of the form `draft-handrews-*-02`. We are now using dates -for meta-schemas, which are what implementations should use to determine behavior, -so we will usually refer to `2019-09` (without the word "draft") on this web site. +The IETF document IDs are of the form `draft-bhutton-*-00`. + +We are using dates for meta-schemas, which are what implementations should use to determine behavior, +so we will usually refer to `2020-12` (without the word "draft") on this web site. See the [Specification page](specification.html) for details about naming and numbering. + ### The Path to Standardization -The JSON Schema project intends to shepherd all four draft series to RFC status. Currently, we are continuing to improve our self-published Internet-Drafts. The next step will be to get the drafts adopted by an IETF Working Group. We are actively investigating how to accomplish this. +The JSON Schema project intends to shepherd all three draft series to either: RFC status, the equivilent within another standards body, and/or join a foundation and establish self publication rules. -If you have experience with such things and would like to help, please contact us! +
    +Read more + +Currently, we are continuing to improve our self-published Internet-Drafts. We are not activly 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-handrews-json-schema/) -* [JSON Schema Validation](https://datatracker.ietf.org/doc/draft-handrews-json-schema-validation/) -* [JSON Hyper-Schema](https://datatracker.ietf.org/doc/draft-handrews-json-schema-hyperschema/) -* [Relative JSON Pointers](https://datatracker.ietf.org/doc/draft-handrews-relative-json-pointer/) +* [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. The intention, particularly for vocabularies such as validation which have been widely implemented, is to remain as compatible as possible from draft to draft. However, these are still drafts, and given a clear enough need validated with the user community, major changes can occur. +
    + ## Quickstart The JSON document being validated or described we call the *instance*, and the document containing the description is called the *schema*. @@ -77,6 +88,14 @@ You can apply constraints on an instance by adding validation keywords to the sc JSON Schema is hypermedia ready, and ideal for annotating your existing JSON-based HTTP API. JSON Schema documents are identified by URIs, which can be used in HTTP Link headers, and inside JSON Schema documents to allow recursive definitions. +## JSON Hyper-Schema + +JSON Hyper-Schema is on hiatus / not currently maintained as of 2021. + +This allows the team to focus the little time they do donate on JSON Schema core and validation. + +We may revisit JSON Hyper-Schema at a later date. + ## More Interested? Check out: @@ -84,13 +103,13 @@ Interested? Check out: * [Understanding JSON Schema](/understanding-json-schema/) * The [specification](./specification.md) * [Learning resources](./learn/index.md) -* the growing list of [JSON (Hyper-)Schema software](./implementations.md) +* the growing list of [JSON Schema software](./implementations.md) -We encourage updating to the latest specification, as described by the draft-07 meta-schemas. +We encourage updating to the latest specification where possible, which is 2020-12. Questions? Feeling helpful? Get involved on: * [GitHub](http://github.com/json-schema-org/json-schema-spec) * [Google Groups](https://groups.google.com/forum/#!forum/json-schema) -* [Slack](https://join.slack.com/t/json-schema/shared_invite/enQtNjc5NTk0MzkzODg5LTVlZGIxNmVhMGY2MWFlYTdiNDQ5NWFiZGUwOThhNmYxZDE0YzA5YjRiOTA5MGY4ZTZlZGZhZDFmYTY4NWM2N2Y) +* [Slack](/slack) * [Open Collective](https://opencollective.com/json-schema) diff --git a/latest/json-schema-core.md b/latest/json-schema-core.md index 600039c6..921902a6 100644 --- a/latest/json-schema-core.md +++ b/latest/json-schema-core.md @@ -1,5 +1,5 @@ --- -redirect_to: "/draft/2019-09/json-schema-core.html" +redirect_to: "/draft/2020-12/json-schema-core.html" title: "JSON Schema: A Media Type for Describing JSON Documents" --- diff --git a/latest/json-schema-hypermedia.md b/latest/json-schema-hypermedia.md deleted file mode 100644 index 7935b0df..00000000 --- a/latest/json-schema-hypermedia.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -redirect_to: "/draft/2019-09/json-schema-hypermedia.html" -title: "JSON Hyper-Schema: A Vocabulary for Hypermedia Annotation of JSON" ---- diff --git a/latest/json-schema-validation.md b/latest/json-schema-validation.md index 16e6414a..c285f6df 100644 --- a/latest/json-schema-validation.md +++ b/latest/json-schema-validation.md @@ -1,4 +1,4 @@ --- -redirect_to: "/draft/2019-09/json-schema-validation.html" +redirect_to: "/draft/2020-12/json-schema-validation.html" title: "JSON Schema Validation: A Vocabulary for Structural Validation of JSON" --- diff --git a/latest/relative-json-pointer.md b/latest/relative-json-pointer.md index a49854a4..5b5de6c4 100644 --- a/latest/relative-json-pointer.md +++ b/latest/relative-json-pointer.md @@ -1,4 +1,4 @@ --- -redirect_to: "/draft/2019-09/relative-json-pointer.html" +redirect_to: "/draft/2020-12/relative-json-pointer.html" title: "Relative JSON Pointers" --- diff --git a/slack.md b/slack.md new file mode 100644 index 00000000..2dc08825 --- /dev/null +++ b/slack.md @@ -0,0 +1,3 @@ +--- +redirect_to: https://join.slack.com/t/json-schema/shared_invite/enQtNjc5NTk0MzkzODg5LTVlZGIxNmVhMGY2MWFlYTdiNDQ5NWFiZGUwOThhNmYxZDE0YzA5YjRiOTA5MGY4ZTZlZGZhZDFmYTY4NWM2N2Y +--- diff --git a/specification-links.md b/specification-links.md index 7f4253ed..6f3de025 100644 --- a/specification-links.md +++ b/specification-links.md @@ -225,11 +225,11 @@ For links to the somewhat more readably formatted versions on this web site, and draft‑handrews‑relative‑json‑pointer‑02
    - + 2019‑09 - - Draft 8 + + Draft 2019-09 Milestone: @@ -239,14 +239,28 @@ For links to the somewhat more readably formatted versions on this web site, and - (TBD, probably only a subset of the documents) + + draft‑bhutton‑json‑schema‑00 +
    + + draft‑bhutton‑json‑schema‑validation‑00 +
    + + draft‑bhutton‑relative‑json‑pointer‑00 +
    + + + 2020‑12 + + + Draft 2020-12 - bugfixes and/or clarifications, no functional changes -
    Milestone: draft-08-patch-1 +
    + Changes and fixes as a result of discussion with the OpenAPI community. (Includes breaking changes.)
    @@ -258,23 +272,47 @@ For links to the somewhat more readably formatted versions on this web site, and (TBD) - Draft 9 + Draft 2021-NN Milestone: - draft-09 + Draft 2021-NN - + ## Published Drafts +### 2020-12 + +- Specifications + - Core: [draft-bhutton-json-schema-00](https://tools.ietf.org/html/draft-bhutton-json-schema-00) ([changes](https://tools.ietf.org/html/draft-bhutton-json-schema-00#appendix-G)) + - Validation: [draft-bhutton-json-schema-validation-00](https://tools.ietf.org/html/draft-bhutton-json-schema-validation-00) ([changes](https://tools.ietf.org/html/draft-bhutton-json-schema-validation-00#appendix-C)) + - Relative JSON Pointer: [draft-bhutton-relative-json-pointer-00](https://tools.ietf.org/html/draft-bhutton-relative-json-pointer-00) ([changes](https://tools.ietf.org/html/draft-bhutton-relative-json-pointer-00#appendix-A)) +- General use meta-schemas + - [JSON Schema meta-schema](draft/2020-12/schema) +- Individual vocablary meta-schemas + - [Core Vocabulary meta-schema](draft/2020-12/meta/core) + - [Applicator Vocabulary meta-schema](draft/2020-12/meta/applicator) + - [Validation Vocabulary meta-schema](draft/2020-12/meta/validation) + - [Unevaluated Vocabulary meta-schema](draft/2020-12/meta/unevaluated) + - [Format Annotation Vocabulary meta-schema](draft/2020-12/meta/format-annotation) + - [Format Assertion Vocabulary meta-schema](draft/2020-12/meta/format-assertion) + - [Content Vocabulary meta-schema](draft/2020-12/meta/content) + - [Meta-Data Vocabulary meta-schema](draft/2020-12/meta/meta-data) +- Output schemas + - [JSON Schema recommended output schema](draft/2020-12/output/schema) +- Output examples + - [JSON Schema verbose output example](draft/2020-12/output/verbose-example) + ### 2019-09 (formerly known as Draft 8) _**NOTE:** All meta-schema URIs now use `https://`. While currently also available over plain HTTP due to the limitations of GitHub pages and the need to keep prior drafts available over HTTP, only the HTTPS URIs should be used._ +### Draft 2019-09 + - Specifications - Core: [draft-handrews-json-schema-02](https://tools.ietf.org/html/draft-handrews-json-schema-02) ([changes](https://tools.ietf.org/html/draft-handrews-json-schema-02#appendix-G)) - Validation: [draft-handrews-json-schema-validation-02](https://tools.ietf.org/html/draft-handrews-json-schema-validation-02) ([changes](https://tools.ietf.org/html/draft-handrews-json-schema-validation-02#appendix-C)) diff --git a/specification.md b/specification.md index 7edd5d0c..ef7b156f 100644 --- a/specification.md +++ b/specification.md @@ -5,60 +5,61 @@ permalink: /specification.html title: Specification --- -The current version is *2019-09*! +The current version is *2020-12*! +The previous version was 2019-09. Specification documents ----------------------- -See also the [release notes / change log](draft/2019-09/release-notes.html). +See also the release notes / change log (Work in progress). -The specification is split into three parts, Core, Validation, and Hyper-Schema, along with a related specification, Relative JSON Pointers: +The specification is split into two parts, Core and Validation. We also publish +the Relative JSON Pointers spec although it's not currently used by Core or +Validation in any significant way. |--------------------------------------------------------------|-------------------------------------------------------| -| [JSON Schema Core](draft/2019-09/json-schema-core.html) | defines the basic foundation of JSON Schema | -| [JSON Schema Validation](draft/2019-09/json-schema-validation.html) | defines the validation keywords of JSON Schema | -| [JSON Hyper-Schema](draft/2019-09/json-schema-hypermedia.html) | defines the hyper-media keywords of JSON Schema | -| [Relative JSON Pointers](draft/2019-09/relative-json-pointer.html) | extends the JSON Pointer syntax for relative pointers | +| [JSON Schema Core](draft/2020-12/json-schema-core.html) | defines the basic foundation of JSON Schema | +| [JSON Schema Validation](draft/2020-12/json-schema-validation.html) | defines the validation keywords of JSON Schema | +| [Relative JSON Pointers](draft/2020-12/relative-json-pointer.html) | extends the JSON Pointer syntax for relative pointers | They are also available on the IETF main site: -* [draft-handrews-json-schema-02 (core)](https://tools.ietf.org/html/draft-handrews-json-schema-02) -* [draft-handrews-json-schema-validation-02](https://tools.ietf.org/html/draft-handrews-json-schema-validation-02) -* [draft-handrews-json-schema-hyperschema-02](https://tools.ietf.org/html/draft-handrews-json-schema-hyperschema-02) -* [draft-handrews-relative-json-pointer-02](https://tools.ietf.org/html/draft-handrews-relative-json-pointer-02) +* [draft-bhutton-json-schema-00 (core)](https://tools.ietf.org/html/draft-bhutton-json-schema-00) +* [draft-bhutton-json-schema-validation-00](https://tools.ietf.org/html/draft-bhutton-json-schema-validation-00) +* [draft-bhutton-relative-json-pointer-00](https://tools.ietf.org/html/draft-bhutton-relative-json-pointer-00) Meta-schemas ------------ -The meta-schemas are schemas against which other schemas can be validated. They are self-descriptive: the JSON Schema meta-schema validates itself, while the JSON Hyper-Schema meta-schema both validates itself and defines its own "self" link. +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 **2019-09**. For an explanation of the change to date-based identifiers, see the [Specification Links](specification-links.html) page. +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. _If you are accessing these JSON document links **from a web browser**, you will need to **save the file** then open it as a JSON document. This is due to limitations with GitHub Pages._ -## General-purpose meta-schemas +## General-purpose meta-schema -These serve the same function as the analogous meta-schemas from past drafts, although note that the core and validation schema is no longer self-contained. +Please note, additional vocabulary specific schema files are needed to fully construct and use the Core/Validation Dialect meta-schema. |--------------------------------------------------------------|------------------------------------------------------------| -| [Core/Validation meta-schema](draft/2019-09/schema) | Used for schemas written for pure validation. | -| [Hyper meta-schema](draft/2019-09/hyper-schema) | Used for schemas written for validation and hyper-linking. | +| [Core/Validation Dialect meta-schema](draft/2020-12/schema) | Used for schemas written for pure validation. | +| [Recommended Output meta-schema](draft/2020-12/output/schema)| Recommended output structure of the application process. | ## Single-vocabulary meta-schemas These are relevant primarily to people who want to write their own meta-schemas that build on specific parts of the existing specification. -- [Core Vocabulary meta-schema](draft/2019-09/meta/core) -- [Applicator Vocabulary meta-schema](draft/2019-09/meta/applicator) -- [Validation Vocabulary meta-schema](draft/2019-09/meta/validation) -- [Format Vocabulary meta-schema](draft/2019-09/meta/format) -- [Content Vocabulary meta-schema](draft/2019-09/meta/content) -- [Meta-Data Vocabulary meta-schema](draft/2019-09/meta/meta-data) -- [Hyper-Schema Vocabulary meta-schema](draft/2019-09/meta/hyper-schema) +- [Core Vocabulary meta-schema](draft/2020-12/meta/core) +- [Applicator Vocabulary meta-schema](draft/2020-12/meta/applicator) +- [Validation Vocabulary meta-schema](draft/2020-12/meta/validation) +- [Unevaluated Vocabulary meta-schema](draft/2020-12/meta/unevaluated) +- [Format Annotation Vocabulary meta-schema](draft/2020-12/meta/format-annotation) +- [Format Assertion Vocabulary meta-schema](draft/2020-12/meta/format-assertion) +- [Content Vocabulary meta-schema](draft/2020-12/meta/content) +- [Meta-Data Vocabulary meta-schema](draft/2020-12/meta/meta-data) ## Output schemas and examples -- [JSON Schema recommended output schema](draft/2019-09/output/schema) -- [JSON Hyper-Schema recommended output schema](draft/2019-09/output/hyper-schema) -- [JSON Schema verbose output example](draft/2019-09/output/verbose-example) +- [JSON Schema recommended output schema](draft/2020-12/output/schema) +- [JSON Schema verbose output example](draft/2020-12/output/verbose-example) Migrating from older drafts ------------- @@ -66,10 +67,12 @@ Migrating from older drafts The release notes discuss the changes impacting users and implementers: - JSON Schema Core and Validation + - 2019-09 to 2020-12 (Work in progress - 2021-02-01) - [Draft-07 to 2019-09](draft/2019-09/release-notes.html) - [Draft-06 to Draft-07](draft-07/json-schema-release-notes.html) - [Draft-04 to Draft-06](draft-06/json-schema-release-notes.html) - JSON Hyper-Schema + - There was no JSON Hyper-Schema draft for 2020-12 releases. - [Draft-07 to 2019-09](draft/2019-09/release-notes.html#hyper-schema-vocabulary) - [Draft-04 to Draft-07](draft-07/json-hyper-schema-release-notes.html) - [Draft-04 to Draft-06](draft-06/json-hyper-schema-release-notes.html) diff --git a/work-in-progress/index.md b/work-in-progress/index.md index 27bf8014..f2cf1e87 100644 --- a/work-in-progress/index.md +++ b/work-in-progress/index.md @@ -7,19 +7,6 @@ permalink: /work-in-progress * TOC {:toc} -Draft 2020-12 is in the final review period. -Publication is scheduled for 2020-12-08. - -At this point, the specification is feature locked, but please do file any issues via Github or reach us immediatly on the JSON Schema Slack. - -Spec preview documents: - -Core: [https://json-schema.org/draft/preview/2020-12-rc-1/jsonschema-core.html](https://json-schema.org/draft/preview/2020-12-rc-1/jsonschema-core.html) - -Validation: [https://json-schema.org/draft/preview/2020-12-rc-1/jsonschema-validation.html](https://json-schema.org/draft/preview/2020-12-rc-1/jsonschema-validation.html) - -Relative JSON Pointer: [https://json-schema.org/draft/preview/2020-12-rc-1/relative-json-pointer.html](https://json-schema.org/draft/preview/2020-12-rc-1/relative-json-pointer.html) - -HyperSchema is not included in this upcoming draft and is on hiatus. +We're working towards draft 2021-NN. See the [GitHub repository](https://github.com/json-schema-org/json-schema-spec) for ongoing spec work.