The JSON Schema specification
JSON Schema is a vocabulary that allows you to validate, annotate, and
manipulate JSON documents.
This repository contains the sources for the work in progress of the next
set of JSON Schema IETF Internet Draft (I-D) documents. For the latest released
I-Ds, please see the
Specification page on the website.
Reviews, comments and suggestions are most welcome!
Please read our guidelines for contributing.
For the current status of issues and pull requests, please see the following
labels
Labels are assigned based on
Sensible Github Labels.
To build all the spec files to HTML from the Markdown sources, run npm run build -- specs
. You can also build each individually with npm run build -- specs/filename.md
(Example: npm run build -- specs/jsonschema-core.md
). You
can also use wildcards to build multiple specs at the same time: npm run build -- specs/jsonschema-*.md
. The HTML files will be available in the web
folder.
The spec is built using Remark, a markdown engine with
good support for plugins and lots of existing plugins we can use. Remark also
has a language server and
a VSCode extension we can use to
get linting an link checking while developing the spec.
The following is a not-necessarily-complete list of configured plugins and the
features they make available to you.
{#my-anchor}
syntax to add an id
to an element so it can be%appendix%
prefix on headings that should be numbered as an#section-2-13
#appendix-a
## Foo {#foo}
## Bar
This is covered in {{foo}} // --> Renders to "This is covered in [Section 2.3](#foo)"
- Link text will use "Section" or "Appendix" as needed
\`\`\`jsonschema "My Fun Title"
{ "type": "string" }
\`\`\`
jsonschema
and json
have special stylingMy "quoted" title
, you would need to be"My \\\\"quoted\\\\" title"
.warning
, note
, and experimental
.::: {type} {title}
{content}
:::
To build components that are being maintained as IETF Internet-Drafts, run
make
. The Makefile will create the necessary Python venv for you as part of
the regular make target.
make clean
will remove all output including the venv. To clean just the spec
output and keep the venv, use make spec-clean
.
If you want to run xml2rfc
manually after running make for the first time, you
will need to activate the virtual environment: source .venv/bin/activate
.
The version of “xml2rfc” that this project uses is updated by modifying
requirements.in
and running pip-compile requirements.in
.
Descriptions of the xml2rfc, I-D documents, and RFC processes:
Conformance tests for JSON Schema and its vocabularies may be found
in their own repository.
The JSON Schema web site is at http://json-schema.org/
The source for the website is maintained in a separate repository.
This project exists thanks to all the people who contribute. [Contribute].
Become a financial contributor and help us sustain our community. [Contribute]
Here are our top sponsors. You could be next! [Become a sponsor]
The contents of this repository are licensed under either the BSD
3-clause license or the Academic Free License v3.0.