Skip to content

A curated list of awesome JSON Schema resources, tutorials, tools, and more

License

Notifications You must be signed in to change notification settings

sourcemeta/awesome-jsonschema

Repository files navigation

Awesome JSON Schema Awesome

PRs Welcome Join Slack OpenCollective

A curated list of awesome JSON Schema resources, tutorials, tools, and more.

JSON Schema is a JSON-based format to annotate and validate JSON documents with a vibrant community. JSON Schema is defined by a set of IETF specifications and it is the industry-standard for defining the structure and meaning of JSON documents.


Would you like to promote your company or product here? Sponsor us on GitHub


Tip

Do you want to level up your JSON Schema skills? Check out learnjsonschema.com, our growing JSON Schema documentation website, and our O'Reilly book Unifying Business, Data, and Code: Designing Data Products with JSON Schema.

Contents

Official

  • GitHub - The official GitHub organization of the JSON Schema project.
  • GitHub Discussions - The discussions page of JSON Schema.
  • Slack - The official Slack workspace of JSON Schema.
  • Stack Overflow - The JSON Schema tag in Stack Overflow.
  • Test Suite - The official test suite for JSON Schema implementations.
  • Twitter - The Twitter account of the JSON Schema project.
  • YouTube - The JSON Schema official YouTube channel.

Getting Started

Vocabularies

  • Accessing Data Stored in JSON - A vocabulary defining keywords that can be used to reference values stored in the instance data, the schema data and external JSON data where the dereferenced values serve as input for keywords in a derived subschema.
  • Hyper-Schema 2019-09 - Keywords to annotate JSON documents with hyperlinks. These hyperlinks include attributes describing how to manipulate and interact with remote resources through hypermedia environments such as HTTP, as well as determining whether the link is usable based on the instance value.
  • JSON Schema 2020-12 Applicator - Applicator keywords that are recommended for use as the basis of other vocabularies.
  • JSON Schema 2020-12 Content - Annotations keywords that indicate that an instance contains non-JSON data encoded in a JSON string.
  • JSON Schema 2020-12 Core - Keywords that are either required in order to process any schema or meta-schema, including those split across multiple documents, or exist to reserve keywords for purposes that require guaranteed interoperability.
  • JSON Schema 2020-12 Format Annotation - An annotation keyword defined to allow schema authors to convey semantic information for a fixed subset of values which are accurately described by authoritative resources.
  • JSON Schema 2020-12 Format Assertion - An assertion keyword defined to allow schema authors to convey semantic information for a fixed subset of values which are accurately described by authoritative resources.
  • JSON Schema 2020-12 Meta-Data - These general-purpose annotation keywords provide commonly used information for documentation and user interface display purposes.
  • JSON Schema 2020-12 Unevaluated - Keywords that enable schema authors to apply subschemas to array items or object properties that have not been successfully evaluated against any dynamic-scope subschema of any adjacent keywords.
  • JSON Schema 2020-12 Validation - Validation keywords in a schema impose requirements for successful validation of an instance. These keywords are all assertions without any annotation behavior.
  • Uniqueness of Array Items - A vocabulary defining keywords that can be used to validate that arrary instances contain unique values as determined by one or more given paths within each item.

Registries

  • AsyncAPI Schemas - This repository contains all the JSON Schema documents for validating AsyncAPI documents.
  • Conda Schemas - Conda file formats and schemas.
  • Intelligence.AI Schemas - A schema registry by Intelligence.AI.
  • KrakenD Schemas - This repository contains the source code used to publish KrakenD's configuration schemas.
  • OCSF Schemas - This repository defines the Open Cybersecurity Schema Framework (OCSF) schema. OCSF is a framework for creating schemas and it also delivers a cybersecurity event schema built with the framework.
  • SchemaStore - The largest collection of independent JSON schemas in the world meant as a universal JSON schema store, where schemas for popular JSON documents can be found.

Adoption

Awesome products and companies that adopted JSON Schema. Did we miss any? Let us know!

  • Adobe Experience Manager - The Adobe Experience Manager content management solution for building websites, mobile apps and forms supports creating adaptative forms using JSON Schema.
  • Amazon EventBridge Schema Registry - Amazon EventBridge Schema Registry has support for JSON Schema, allowing customers to validate, annotate, and manipulate JSON documents conforming to JSON Schema Draft 4 specification.
  • Apiary - Apiary's interactive documentation is able to render JSON Schema documents associated with payloads.
  • Assertible - Assertible provides a free-to-use API to validate a JSON document against a JSON Schema and a service to test and monitor web services using JSON Schema.
  • Axway API Gateway - The API Gateway can check that JavaScript Object Notation (JSON) messages conform to the format expected by a web service by validating requests against a specified JSON schema.
  • Cloudflare - The Cloudflare makes use of JSON Schema and Hyper Schema to keep track of their API endpoints.
  • Cloudflare Terraform - The Cloudflare Terraform provider comes with a tool to generate Terraform configuration from existing Cloudflare resources that uses JSON Schema to map data between both technologies.
  • Confluent Schema Registry - JSON Schema can be configured with the Apache Kafka Java client and console tools to fail if the payload is not valid for the given schema.
  • Contentstack - The Contentstack CMS platform supports creating content types using JSON Schema.
  • Decisions - The Decisions rules-driven business process automation platform support using JSON Schema to generate JSON deserializers.
  • DocSpring - The DocSpring service to automatically fill out PDF forms supports generating JSON Schema definitions for user-created templates.
  • Drupal Patternkit - The Drupal Patternkit module uses JSON Schema to define pattern templates.
  • Form.io - The Form.io online web form generator supports generating Angular.js forms using JSON Schema.
  • Genomic Data Commons - The Genomic Data Commons data model is defined using JSON Schema.
  • Hackolade - The Hackolade data modelling service supports defining entities using JSON Schema.
  • Heroku - Heroku makes use of JSON Schema to publish machine-readable schema definitions for their public APIs.
  • Human Cell Atlas - The open data generated by the Human Cell Atlas describes metadata structure using JSON Schema.
  • IBM App Connect - The Graphical Data Mapping editor can be used to create and transform JSON messages with the data model defined from a JSON schema.
  • Informatica - The Informatica data management platform supports creating auto-generated data processor transformations using JSON Schema.
  • JSON BinPack - JSON BinPack uses JSON Schema to perform space-efficient JSON binary serialization.
  • JSON:API - The JSON:API 1.0 and later specifications for building APIs in JSON use JSON Schema to define JSON:API responses.
  • JamF - The JamF Apple enterprise management service supports creating app manifests using JSON Schema.
  • JetBrains - The suite of JetBrains programming editors supports JSON code-completion based on JSON Schema.
  • KrakenD - KrakenD endpoints receiving a JSON object in its body can apply automatic validations using the JSON Schema vocabulary before the content passes to the backends.
  • Lightblue.io - The Lightblue document based data access layer framework uses JSON Schema to define certain file resources in the project.
  • Linux - The Linux kernel uses JSON Schema to define Devicetree bindings.
  • Manfred - Manfred uses JSON Schema to define their APIs and their open CV format.
  • Microsoft - A collection of JSON Schema definitions used by products and services at Microsoft.
  • MongoDB - MongoDB 3.6 and later support JSON Schema for querying data and defining collection constraints.
  • Mozilla Data Pipeline - Mozilla Data Pipeline uses JSON Schema to define telemetry data ingested from Mozilla products and logs from various services.
  • MuleSoft - The MuleSoft integration framework supports validating a JSON document against a JSON Schema.
  • MySQL - MySQL 8.0.17 and later support table constraints to validate a JSON document against a JSON Schema.
  • Nakadi - The Nakadi open-source distributed event bus supports defining event types with JSON Schema.
  • National Cancer Institute - The National Cancer Institute uses JSON Schema to model entities for their Genomic Data Commons collection.
  • NinJS - NinJS standardises the representation of news content in JSON and maintains a JSON Schema document to help validate NinJS implementations.
  • Open Policy Agent (OPA) - The OPA policy-based control platform 0.27.0 and newer support statically type-checking Rego policy code using JSON Schema.
  • Ory Kratos - The Ory Kratos identity & user management product relies on JSON Schema from configuration validation, documentation generation for defining identity schemas.
  • Postman - The Postman API platform supports running JSON Schema validation in API tests.
  • RDA DMP Common Standard for machine-actionable Data Management Plans - The RDA DMP Common Standards Working Group maintains JSON Schemas to validate maDMP JSON documents.
  • RESTHeart - RESTHeart supports MongoDB schema validation to enforce a format to documents: rules-based validation from MongoDB 3.2 and Json Schema validation from MongoDB 3.6.
  • Remote - Remote uses JSON Schema to perform form generation and data validation in their frontend and backend systems.
  • Retool - The Retool no-code platform supports generating web forms using JSON Schema.
  • Serverless - The Serverless framework validates service configuration files using JSON Schema.
  • Smart Data Models - The Smart Data Models GitHub organization makes use of JSON Schema to describe harmonized Data Models for different Smart Domains.
  • Snowplow - The Snowplow analytics platform support using JSON Schema to define the structure of the data to collect.
  • SpreadJS - The SpreadJS JavaScript spreadsheet library uses JSON Schema to describe the SpreadJS JSON data format.
  • TILT (machine-readable privacy policies) - TILT is a transparency information language and toolkit powered by JSON Schema explicitly designed to represent and process transparency information in line with the requirements of the EU General Data Protection Regulation and allowing for a more automated and adaptive use of such information than established, legalese data protection policies do.
  • U.S. Department of Commerce - The National Institute of Standards and Technology uses JSON Schema Draft 7 to model Open Security Controls Assessment Language (OSCAL) JSON documents.
  • Walmart eCommerce - Walmart publishes JSON Schema documents for certain resources that developers can make use of when integratting with the Walmart eCommerce platform.
  • Wordpress - Wordpress maintains official JSON Schema documents to help with building block based themes.
  • Zapier - Zapier maintains a large set of JSON Schema definitions that define its platform.
  • Zuplo - The Zuplo API gateway provides JSON Schema validation and supports generating API documentation out of OpenAPI specifications.
  • nf-core - The nf-core Nextflow analysis pipelines collection uses JSON Schema to define the parameters used by Nextflow workflows.

Articles

Specifications

  • (2021) AsyncAPI - AsyncAPI is an open source initiative that seeks to improve the current state of Event-Driven Architectures (EDA). The AsyncAPI specification supports data modeling using JSON Schema.
  • (2021) JSON Schema in RDF - This document introduces an RDF vocabulary for JSON schema definitions. This vocabulary provides a stable namespace IRI for JSON schema keywords, as well as simple axioms, defined against schema.org's meta-model. Various examples on how to use the vocabulary are also introduced, e.g. to annotate schemas with JSON-LD metadata or to embed schema annotations inside RDF graphs.
  • (2021) OpenAPI - The OpenAPI specification embeds and extends JSON Schema for defining API request and responses.
  • (2021) RAML - The RAML specification supports modeling API data using JSON Schema.
  • (2020) JSON Schema Core 2020-12 - 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.
  • (2020) JSON Schema Validation 2020-12 - 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.
  • (2020) Relative JSON Pointers - JSON Pointer is a syntax for specifying locations in a JSON document, starting from the document root. This document defines an extension to the JSON Pointer syntax, allowing relative locations from within the document.
  • (2020) W3C Web of Things - The Web of Things (WoT) seeks to counter the fragmentation of the IoT by using and extending existing, standardized Web technologies. WoT models data using JSON Schema.
  • (2019) JSON Hyper-Schema - JSON Schema is a JSON-based format for describing JSON data using various vocabularies. This document specifies a vocabulary for annotating JSON documents with hyperlinks. These hyperlinks include attributes describing how to manipulate and interact with remote resources through hypermedia environments such as HTTP, as well as determining whether the link is usable based on the instance value.

Books

  • (2024) Unifying Business, Data, and Code: Designing Data Products with JSON Schema - Covers topics such as writing your own JSON Schema vocabularies, understanding JSON Schema annotations, and hosting your own JSON Schema registries. More importantly, our book teaches you a methodology for effective data management.
  • (2021) API by Design - Introduces an approach to measure API complexity by analyzing entropy in JSON Schema definitions.
  • (2017) JSON at Work - A comprehensive overview of the JSON ecosystem, including JSON Schema.
  • (2014) Using JSON Schema - Learn and Apply JSON Schema by Example, with JavaScript (Node.js) and Python Programs.

Courses

Videos

Podcasts

  • (2021) API Lifecycles, Specifications, and Standards with Kin Lane - Thomas Betts talks with Kin Lane about managing your API lifecycle using standards and specifications, including OpenAPI, AsyncAPI, and JSON Schema. These specifications and the tooling based on them can help reduce communication problems, by creating documentation, generating code, and automating testing.

Papers

  • (2024) Validation of Modern JSON Schema: Formalization and Complexity - In this paper, we give the first formal description of Modern JSON Schema, which we consider a central contribution of the work that we present here. We then prove that its data validation problem is PSPACE-complete. We prove that the origin of the problem lies in dynamic references, and not in annotation-dependent validation. We study the schema and data complexities, showing that the problem is PSPACE-complete with respect to the schema size even with a fixed instance, but is in PTIME when the schema is fixed and only the instance size is allowed to vary. Finally, we run experiments that show that there are families of schemas where the difference in asymptotic complexity between dynamic and static references is extremely visible, even with small schemas..
  • (2023) JSONoid: Monoid-based Enrichment for Configurable and Scalable Data-Driven Schema Discovery - Meaningful schema information for semi-structured data.
  • (2023) JSONoid: Distributed JSON Schema Discovery - A tool for distributed JSON schema discovery including many properties of the data.
  • (2023) Comprehending Semantic Types in JSON Data with Graph Neural Networks - Graph neural networks for semantic type detection in JSON.
  • (2023) An Analysis of Defects in Public JSON Schemas - Analysis of common defects found in publicly available schemas leading to recommend changes to the spec.
  • (2022) Witness Generation for JSON Schema - JSON Schema is an important, evolving standard schema language for families of JSON documents. It is based on a complex combination of structural and Boolean assertions, and features negation and recursion. The static analysis of JSON Schema documents comprises practically relevant problems, including schema satisfiability, inclusion, and equivalence. These three problems can be reduced to witness generation: given a schema, generate an element of the schema, if it exists, and report failure otherwise.
  • (2022) Validating Streaming JSON Documents with Learned VPAs - This paper presents a new streaming algorithm to validate JSON documents against a set of constraints given as a JSON schema. It proves that there always exists a visibly pushdown automaton (VPA) that accepts the same set of JSON documents as a JSON schema.
  • (2022) The Usage of Negation in Real-World JSON Schema Documents - Many software tools, but also formal frameworks for working with JSON Schema, do not fully support negation. This motivates us to study whether negation is actually used in practice, for which aims, and whether it could, in principle, be replaced by simpler operators. We have collected a large corpus of 80k open source JSON Schema documents. We perform a systematic analysis, quantify usage patterns of negation, and also qualitatively analyze schemas. We show that negation is indeed used, albeit infrequently, following a stable set of patterns.
  • (2022) JSON BinPack: A space-efficient schema-driven and schema-less binary serialization specification based on JSON Schema - A survey and benchmark of JSON-compatible binary serialization specifications followed by the introduction of JSON BinPack, a novel protocol-independent schema-driven and schema-less binary serialization specification that is strictly-compatible with JSON and takes advantage of JSON Schema formal definitions to produce bit-strings that are space-efficient in comparison to every considered alternative serialization specification.
  • (2022) Implicit JSON Schema Versioning Triggered by Temporal Updates to JSON-Based Big Data in the τJSchema Framework - This paper proposes an approach for handling implicit schema changes triggered by temporal updates of JSON-based Big Data. More precisely, when a user specifies a temporal JSON update operation that modifies a snapshot JSON component assigning a valid-time timestamp to its new value, the execution of such an operation requires the JSON component to become temporal, which is for all intents a schema change. Thus, a new version of the τJSchema temporal characteristics document is generated, with the addition of a new valid-time characteristic. New versions of the temporal JSON schema and of the temporal JSON document are also accordingly created.
  • (2021) TILT: A GDPR-Aligned Transparency Information Language and Toolkit for Practical Privacy Engineering - We present TILT, a transparency information language and toolkit explicitly designed to represent and process transparency information in line with the requirements of the GDPR and allowing for a more automated and adaptive use of such information than established, legalese data protection policies do.
  • (2021) Not Elimination and Witness Generation for JSON Schema - In this paper, we present an algebraic characterization of JSON Schema, obtained by adding opportune operators, and by mirroring existing ones. We present then algebra-based approaches for dealing with not-elimination and witness generation problems, which play a central role as they lead to solutions for the other mentioned complex problems.
  • (2021) Fast Discovery of Nested Dependencies on JSON Data - Efficient dependency mining algorithms for non-relational data.
  • (2021) Enhancing JSON Schema Discovery by Uncovering Hidden Data - Enhancing discovered JSON Schemas by disambiguating data and metadata.
  • (2021) Deriving Semantics-Aware Fuzzers from Web API Schemas - Discusses JSON Schema canonicalization and JSON Schema instance derivation in the context of property-based testing of APIs.
  • (2020) Type Safety with JSON Subschema - Deciding whether one schema is a subschema of another is non-trivial because of the richness of the JSON Schema specification language. Given a pair of schemas, our approach first canonicalizes and simplifies both schemas, then decides the subschema question on the canonical forms, dispatching simpler subschema queries to type-specific checkers.
  • (2020) JSON Schema Inference Approaches - In the context of document NoSQL databases, namely those assuming the JSON data format, this paper focuses on several representatives of the existing inference approaches and provide their thorough comparison.
  • (2020) Challenges in Checking JSON Schema Containment over Evolving Real-World Schemas - This paper presents the results of an empirical study of the first generation of tools for checking JSON Schema containment which is applied to a diverse collection of over 230 real-world schemas and their altogether 1k historic versions.
  • (2019) What Are Real JSON Schemas Like? - A first empirical analysis of a curated collection of real-world JSON Schemas. Knowing what real JSON Schemas are like (to borrow from a title of a related study on DTDs) helps practitioners and researchers in making realistic assumptions when building tools for JSON Schema processing.
  • (2018) Top-Down Model-Driven Engineering of Web Services from Extended OpenAPI Models - Shows how OpenAPI can be extended to add implementation details inside models. These extensions link services to assemblies of components that describe computations. Hence a top-down development process that keeps model and implementation aligned.
  • (2018) An Approach for Schema Extraction of JSON and Extended JSON Document Collections - This paper presents an approach that extracts a schema from a JSON or Extended JSON document collection stored in a NoSQL document-oriented database or other document repository. Aggregation operations are considered in order to obtain a schema for each distinct structure in the collection, and a hierarchical data structure is proposed to group these schemas in order to generate a global schema in JSON Schema format.
  • (2017) Schema Inference for Massive JSON Datasets - Recent years have seen the widespread use of JSON as a data format to represent massive data collections. JSON data collections are usually schemaless. While this ensures several advantages, the absence of schema information has important negative consequences: the correctness of complex queries and programs cannot be statically checked, users cannot rely on schema information to quickly figure out structural properties that could speed up the formulation of correct queries, and many schema-based optimizations are not possible. In this paper we deal with the problem of inferring a schema from massive JSON data sets.
  • (2017) Example-Driven Web API Specification Discovery - In this paper we present an example-driven discovery process that generates model-based OpenAPI specifications for REST Web APIs by using API call examples. A tool implementing our approach and a community-driven repository for the discovered APIs are also presented.
  • (2017) Definition of REST web services with JSON schema - The aim of this article is to demonstrate how JSON Schema, and particularly the JSON Hyper Schema extension, is suitable to describe JSON-based web services that follow the REST architectural pattern.
  • (2016) τJSchema: A Framework for Managing Temporal JSON-Based NoSQL Databases - This paper proposes a framework called Temporal JSON Schema (τJSchema), inspired by the τXSchema framework defined for XML data. τJSchema allows defining a temporal JSON schema from a conventional JSON schema and a set of temporal logical and physical characteristics. Our framework guarantees logical and physical data independence for temporal schemas and provides a low-impact solution since it requires neither modifications of existing JSON documents, nor extensions to the JSON format, the JSON Schema language, and all related tools and languages.
  • (2016) Foundations of JSON Schema - In this paper we provide the first formal definition of syntax and semantics for JSON Schema and use it to show that implementing this layer on top of JSON is feasible in practice.
  • (2015) Schema extraction and structural outlier detection for JSON-based nosql data stores - Rather than designing the schema up front, extracting a schema in hindsight can be seen as a reverse-engineering step. Based on the extracted schema information, we propose set of similarity measures that capture the degree of heterogeneity of JSON data and which reveal structural outliers in the data.
  • (2014) Jsongen: a quickcheck based library for testing JSON web services - This article describes a systematic approach to testing behavioural aspects of Web Services that communicate using the JSON data format. To generate random JSON data for populating tests we have developed a new library, jsongen, which given a characterisation of the JSON data as a JSON schema, (i) automatically derives a QuickCheck generator which can generate an infinite number of JSON values that validate against the schema, and (ii) provides a generic QuickCheck state machine which is capable of following the (hyper)links documented in the JSON schema, to automatically explore the web service.
  • (2012) User profile integration made easy: model-driven extraction and transformation of social network schemas - This paper presents, firstly, a semi-automatic approach to extract schema information from instance data. Secondly, transformations of the derived schemas to different technical spaces are utilized, thereby allowing, amongst other benefits, the application of established integration tools and methods. Finally, as a case study, schemas are derived for Facebook, Google+, and LinkedIn.

Tools

  • TypedWebhook.tools - An online webhook testing tool that is able to generate JSON Schema definitions out of incoming data.
  • QuickType.io - An online JSON Schema code-generation utility with diverse programming language support.
  • JSONschema.Net - An online tool that generates JSON schema from JSON documents.
  • JSONSchema.dev - An online JSON Schema validator created by the JSON Schema specification lead.
  • JSONBuddy - A JSON editor and validator desktop application for Windows.
  • JSON Schema Viewer - An online tool to visualize JSON Schema definitions.
  • JSON Schema Validator and Generator - An online JSON Schema validator that can generate JSON Schema from JSON documents and generate random JSON documents from JSON Schema.
  • JSON Schema Validator - An online JSON Schema validator with support for JSON Schema Draft 3, Draft 4, Draft 6, Draft 7 and Draft 2019-09.
  • JSON Schema CLI - The CLI for working with JSON Schema. Covers formatting, linting, testing, bundling, and more for both local development and CI/CD pipelines.
  • Hyperjump JSON Schema Validator - An online JSON Schema validator that supports Draft 04, 06, 07, 2019-09, and 2020-12.
  • AlterSchema - Convert a JSON Schema definition between specification versions.

Libraries

The JSON Schema website includes an extensive list of implementations and related libraries: https://json-schema.org/implementations.html.


Special thanks to @kinlane for curating the initial version of this list.