text:
<!-- ATTENTION! This file is auto-generated. Do not edit this file directly.
Instead, edit `data.yaml` and re-generate this file as per the README's
instructions -->

# Awesome JSON Schema [![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/sindresorhus/awesome)

[<img src="logo.svg" align="right" width="100">](https://json-schema.org)

[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com)
[![Join Slack](https://img.shields.io/badge/Slack-Join%20Slack-blue.svg?style=flat-square)](https://json-schema.slack.com)
[![OpenCollective](https://img.shields.io/opencollective/all/json-schema?label=OpenCollective&style=flat-square)](https://opencollective.com/json-schema)

> 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.

---

**Interested in JSON Schema? Come join us at the official [JSON Schema Office
Hours](https://github.com/json-schema-org/community/discussions/34)!**

---

## Contents

- [Official](#official)
- [Getting Started](#getting-started)
- [Vocabularies](#vocabularies)
- [Registries](#registries)
- [Adoption](#adoption)
- [Articles](#articles)
- [Specifications](#specifications)
- [Books](#books)
- [Courses](#courses)
- [Videos](#videos)
- [Podcasts](#podcasts)
- [Papers](#papers)
- [Tools](#tools)
- [Libraries](#libraries)

## Official

- [GitHub](https://github.com/json-schema-org?utm_source=awesome-jsonschema) - The official GitHub organization of the JSON Schema project.
- [GitHub Discussions](https://github.com/json-schema-org/community/discussions?utm_source=awesome-jsonschema) - The discussions page of JSON Schema.
- [Learn JSON Schema](https://www.learnjsonschema.com?utm_source=awesome-jsonschema) - Reference documentation for JSON Schema.
- [Slack](https://json-schema.org/slack?utm_source=awesome-jsonschema) - The official Slack workspace of JSON Schema.
- [Stack Overflow](https://stackoverflow.com/questions/tagged/jsonschema?utm_source=awesome-jsonschema) - The JSON Schema tag in Stack Overflow.
- [Test Suite](https://github.com/json-schema-org/JSON-Schema-Test-Suite?utm_source=awesome-jsonschema) - The official test suite for JSON Schema implementations.
- [Twitter](https://twitter.com/jsonschema?utm_source=awesome-jsonschema) - The Twitter account of the JSON Schema project.
- [YouTube](https://www.youtube.com/channel/UCrl3fjmHSp6FhJUKcEJhisA?utm_source=awesome-jsonschema) - The JSON Schema official YouTube channel.

## Getting Started

- (2022) [YAML Data Validation](https://infrastructureascode.ch/yaml_validation.html?utm_source=awesome-jsonschema) - A tutorial on validating YAML documents using JSON Schema 2020-12.
- (2022) [Validating POST Data Against JSON Schema](https://blog.begin.com/posts/2022-06-27-validating-post-data-agaist-json-schema?utm_source=awesome-jsonschema) - A tutorial on validating HTTP request data using JSON Schema using the Architect Functional Web Apps (FWAs) framework.
- (2022) [React JSON Schema Form](https://medium.com/javarevisited/react-json-schema-form-cdc8fbb06f8c?utm_source=awesome-jsonschema) - A tutorial on using the React JSON Schema Form project by Mozilla to generate web forms using JSON Schema.
- (2022) [JSON Schema validation for columns](https://sqlfordevs.com/json-schema-validation?utm_source=awesome-jsonschema) - A short tutorial on adding MySQL and PostgreSQL table constraints using JSON Schema.
- (2022) [Easy and Quick Form Generation Using JSON Schema in VueJS](https://www.bacancytechnology.com/blog/form-generation-using-json-schema-in-vuejs?utm_source=awesome-jsonschema) - A tutorial on generating web forms using JSON Schema and VueJS.
- (2022) [Creating a JSON schema](https://publishing-project.rivendellweb.net/creating-a-json-schema/?utm_source=awesome-jsonschema) - A tutorial on creating JSON Schema 2020-12 definitions for a fictitious interviewing platform.
- (2021) [Understanding JSON Schema](https://json-schema.org/understanding-json-schema/?utm_source=awesome-jsonschema) - An in-depth guide to JSON Schema.
- (2021) [JSON Schema: Getting Started Step-By-Step](https://json-schema.org/learn/getting-started-step-by-step.html?utm_source=awesome-jsonschema) - A comprehensive introduction to JSON Schema.
- (2021) [Introduction to JSON Schema in Java](https://www.baeldung.com/introduction-to-json-schema-in-java?utm_source=awesome-jsonschema) - A short introduction to validating JSON documents with JSON Schema in Java.
- (2020) [Validating and documenting JSON with JSON Schema](https://www.mscharhag.com/api-design/json-schema?utm_source=awesome-jsonschema) - An introduction to JSON Schema by example by showing an annotated JSON Schema that validates an example document.
- (2020) [JSON Schema Tutorial](https://www.w3resource.com/JSON/JSON-Schema.php?utm_source=awesome-jsonschema) - A tutorial of JSON Schema that discusses validation, documentation and hyperlinking.
- (2020) [How to Integrate "React JSON Schema Form" into a Redux and Typescript Project](https://www.xtivia.com/blog/how-to-integrate-react-json-schema-form-into-a-redux-and-typescript-project/?utm_source=awesome-jsonschema) - Adding a form using "React JSON Schema Form" and integrating it with Redux and Typescript.
- (2020) [An introduction to JSON Schema](https://medium.com/swlh/an-introduction-to-json-schema-8eaea643fcda?utm_source=awesome-jsonschema) - An introduction to JSON Schema covering its history, common keywords and how to use the AJV validator.
- (2019) [REST API Tutorial: JSON Schema](https://restfulapi.net/json-schema/?utm_source=awesome-jsonschema) - An short introduction to JSON Schema validation.
- (2019) [PHP With MySQL](https://elephantdolphin.blogspot.com/2019/07/json-schema-validation-with-mysql-8017.html?utm_source=awesome-jsonschema) - A practical tutorial on expressing JSON Schema table constraints on MySQL.
- (2017) [Getting started with JSON Hyper-Schema](https://apisyouwonthate.com/blog/getting-started-with-json-hyper-schema?utm_source=awesome-jsonschema) - An introduction to the Hyper-Schema JSON Schema vocabulary.
- (2013) [TutorialsPoint: JSON Schema](https://www.tutorialspoint.com/json/json_schema.htm?utm_source=awesome-jsonschema) - A short introduction to JSON Schema Draft4 validation.

## Vocabularies

- [Accessing Data Stored in JSON](https://json-everything.net/json-schema/#a-vocabulary-for-accessing-data-stored-in-json?utm_source=awesome-jsonschema) - 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](https://json-schema.org/draft/2019-09/vocab/hyper-schema?utm_source=awesome-jsonschema) - 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](https://json-schema.org/draft/2020-12/vocab/applicator?utm_source=awesome-jsonschema) - Applicator keywords that are recommended for use as the basis of other vocabularies.
- [JSON Schema 2020-12 Content](https://json-schema.org/draft/2020-12/vocab/content?utm_source=awesome-jsonschema) - Annotations keywords that indicate that an instance contains non-JSON data encoded in a JSON string.
- [JSON Schema 2020-12 Core](https://json-schema.org/draft/2020-12/vocab/core?utm_source=awesome-jsonschema) - 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](https://json-schema.org/draft/2020-12/vocab/format-annotation?utm_source=awesome-jsonschema) - 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](https://json-schema.org/draft/2020-12/vocab/format-assertion?utm_source=awesome-jsonschema) - 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](https://json-schema.org/draft/2020-12/vocab/meta-data?utm_source=awesome-jsonschema) - These general-purpose annotation keywords provide commonly used information for documentation and user interface display purposes.
- [JSON Schema 2020-12 Unevaluated](https://json-schema.org/draft/2020-12/vocab/unevaluated?utm_source=awesome-jsonschema) - 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](https://json-schema.org/draft/2020-12/vocab/validation?utm_source=awesome-jsonschema) - 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](https://json-everything.net/json-schema/#a-vocabulary-for-identifying-uniqueness-of-array-items?utm_source=awesome-jsonschema) - 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

- [SchemaStore](https://www.schemastore.org?utm_source=awesome-jsonschema) - 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.
- [Sourcemeta Schemas](https://schemas.sourcemeta.com?utm_source=awesome-jsonschema) - An immutable collection of curated and versioned modern JSON Schema definitions.

## Adoption

*Awesome products and companies that adopted JSON Schema. Did we miss any? [Let
us
know!](https://github.com/jviotti/awesome-jsonschema/issues/new?assignees=&labels=adoption&template=course.md&title=)*

- [Adobe Experience Manager](https://experienceleague.adobe.com/docs/experience-manager-65/forms/adaptive-forms-advanced-authoring/adaptive-form-json-schema-form-model.html?lang=en?utm_source=awesome-jsonschema) - 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](https://aws.amazon.com/about-aws/whats-new/2020/09/amazon-eventbridge-schema-registry-announces-support-for-json-schema/?utm_source=awesome-jsonschema) - 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](https://help.apiary.io/api_101/json-schema/?utm_source=awesome-jsonschema) - Apiary's interactive documentation is able to render JSON Schema documents associated with payloads.
- [Assertible](https://assertible.com/json-schema-validation?utm_source=awesome-jsonschema) - 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](https://docs.axway.com/bundle/APIGateway_762_PolicyDevFilterReference_allOS_en_HTML5/page/Content/PolicyDevTopics/content_schema_json.htm?utm_source=awesome-jsonschema) - 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](https://blog.cloudflare.com/cloudflares-json-powered-documentation-generator/?utm_source=awesome-jsonschema) - The Cloudflare makes use of JSON Schema and Hyper Schema to keep track of their API endpoints.
- [Cloudflare Terraform](https://www.infoq.com/news/2021/04/cloudflare-terraform/?utm_source=awesome-jsonschema) - 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](https://docs.confluent.io/platform/current/schema-registry/serdes-develop/serdes-json.html?utm_source=awesome-jsonschema) - 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](https://www.contentstack.com/docs/developers/create-content-types/json-schema-for-creating-a-content-type/?utm_source=awesome-jsonschema) - The Contentstack CMS platform supports creating content types using JSON Schema.
- [Decisions](https://documentation.decisions.com/docs/create-types-json-schema?utm_source=awesome-jsonschema) - The Decisions rules-driven business process automation platform support using JSON Schema to generate JSON deserializers.
- [DocSpring](https://docspring.com/docs/api/get_template_schema.html?utm_source=awesome-jsonschema) - The DocSpring service to automatically fill out PDF forms supports generating JSON Schema definitions for user-created templates.
- [Drupal Patternkit](https://www.drupal.org/project/patternkit?utm_source=awesome-jsonschema) - The Drupal Patternkit module uses JSON Schema to define pattern templates.
- [Form.io](https://www.form.io/article/angular-json-schema-form-builder?utm_source=awesome-jsonschema) - The Form.io online web form generator supports generating Angular.js forms using JSON Schema.
- [Genomic Data Commons](https://gdc.cancer.gov/developers/gdc-data-model?utm_source=awesome-jsonschema) - The Genomic Data Commons data model is defined using JSON Schema.
- [Hackolade](https://hackolade.com/help/JSONSchema.html?utm_source=awesome-jsonschema) - The Hackolade data modelling service supports defining entities using JSON Schema.
- [Heroku](https://blog.heroku.com/json_schema_for_heroku_platform_api?utm_source=awesome-jsonschema) - Heroku makes use of JSON Schema to publish machine-readable schema definitions for their public APIs.
- [Human Cell Atlas](https://data.humancellatlas.org/metadata/structure?utm_source=awesome-jsonschema) - The open data generated by the Human Cell Atlas describes metadata structure using JSON Schema.
- [IBM App Connect](https://www.ibm.com/docs/en/app-connect/11.0.0?topic=schema-json-requirements-message-maps?utm_source=awesome-jsonschema) - The Graphical Data Mapping editor can be used to create and transform JSON messages with the data model defined from a JSON schema.
- [Informatica](https://docs.informatica.com/data-integration/b2b-data-transformation/10-2-2/user-guide/wizard-input-and-output-formats/json/sample-json-schema.html?utm_source=awesome-jsonschema) - The Informatica data management platform supports creating auto-generated data processor transformations using JSON Schema.
- [JSON BinPack](https://www.jsonbinpack.org?utm_source=awesome-jsonschema) - JSON BinPack uses JSON Schema to perform space-efficient JSON binary serialization.
- [JSON:API](https://github.com/json-api/json-api/blob/a0296352b6eb57a4ea3eb08a1332e311f78adafa/schema?utm_source=awesome-jsonschema) - The JSON:API 1.0 and later specifications for building APIs in JSON use JSON Schema to define JSON:API responses.
- [JamF](https://docs.jamf.com/technical-papers/jamf-pro/json-schema/10.26.0/Understanding_the_Structure_of_a_JSON_Schema_Manifest.html?utm_source=awesome-jsonschema) - The JamF Apple enterprise management service supports creating app manifests using JSON Schema.
- [JetBrains](https://www.jetbrains.com/help/objc/json.html?utm_source=awesome-jsonschema) - The suite of JetBrains programming editors supports JSON code-completion based on JSON Schema.
- [KrakenD](https://www.krakend.io/docs/endpoints/json-schema/?utm_source=awesome-jsonschema) - 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](https://docs.lightblue.io/standards/json_schema.html?utm_source=awesome-jsonschema) - The Lightblue document based data access layer framework uses JSON Schema to define certain file resources in the project.
- [Linux](https://www.kernel.org/doc/html/latest/devicetree/bindings/writing-schema.html?utm_source=awesome-jsonschema) - The Linux kernel uses JSON Schema to define Devicetree bindings.
- [Manfred](https://www.youtube.com/watch?v=KB2DkeQo8d8?utm_source=awesome-jsonschema) - Manfred uses JSON Schema to define their APIs and their open CV format.
- [Microsoft](https://github.com/microsoft/json-schemas?utm_source=awesome-jsonschema) - A collection of JSON Schema definitions used by products and services at Microsoft.
- [MongoDB](https://docs.mongodb.com/manual/reference/operator/query/jsonSchema/?utm_source=awesome-jsonschema) - MongoDB 3.6 and later support JSON Schema for querying data and defining collection constraints.
- [Mozilla Data Pipeline](https://docs.telemetry.mozilla.org/concepts/pipeline/schemas.html?utm_source=awesome-jsonschema) - Mozilla Data Pipeline uses JSON Schema to define telemetry data ingested from Mozilla products and logs from various services.
- [MuleSoft](https://docs.mulesoft.com/json-module/2.1/json-schema-validation?utm_source=awesome-jsonschema) - The MuleSoft integration framework supports validating a JSON document against a JSON Schema.
- [MySQL](https://dev.mysql.com/doc/refman/8.0/en/json-validation-functions.html?utm_source=awesome-jsonschema) - MySQL 8.0.17 and later support table constraints to validate a JSON document against a JSON Schema.
- [Nakadi](https://nakadi.io?utm_source=awesome-jsonschema) - The Nakadi open-source distributed event bus supports defining event types with JSON Schema.
- [National Cancer Institute](https://github.com/NCI-GDC/gdcdictionary/tree/develop/gdcdictionary/schemas?utm_source=awesome-jsonschema) - The National Cancer Institute uses JSON Schema to model entities for their Genomic Data Commons collection.
- [NinJS](https://www.iptc.org/std/ninjs/userguide/?utm_source=awesome-jsonschema) - NinJS standardises the representation of news content in JSON and maintains a JSON Schema document to help validate NinJS implementations.
- [Open Policy Agent (OPA)](https://blog.openpolicyagent.org/enhanced-type-checking-for-opa-with-json-schema-annotations-826acb0f575?utm_source=awesome-jsonschema) - The OPA policy-based control platform 0.27.0 and newer support statically type-checking Rego policy code using JSON Schema.
- [Ory Kratos](https://www.ory.sh/kratos/docs/reference/json-schema-json-paths/?utm_source=awesome-jsonschema) - The Ory Kratos identity & user management product relies on JSON Schema from configuration validation, documentation generation for defining identity schemas.
- [Postman](https://learning.postman.com/docs/writing-scripts/script-references/test-examples/?utm_source=awesome-jsonschema) - The Postman API platform supports running JSON Schema validation in API tests.
- [RDA DMP Common Standard for machine-actionable Data Management Plans](https://github.com/RDA-DMP-Common/RDA-DMP-Common-Standard?utm_source=awesome-jsonschema) - The RDA DMP Common Standards Working Group maintains JSON Schemas to validate maDMP JSON documents.
- [RESTHeart](https://restheart.org/docs/json-schema-validation/?utm_source=awesome-jsonschema) - 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](https://remote.com/blog/how-remote-builds-onboarding-for-60-countries?utm_source=awesome-jsonschema) - Remote uses JSON Schema to perform form generation and data validation in their frontend and backend systems.
- [Retool](https://docs.retool.com/docs/working-with-json-schema-form?utm_source=awesome-jsonschema) - The Retool no-code platform supports generating web forms using JSON Schema.
- [Serverless](https://www.serverless.com/framework/docs/configuration-validation/?utm_source=awesome-jsonschema) - The Serverless framework validates service configuration files using JSON Schema.
- [Smart Data Models](https://github.com/smart-data-models?utm_source=awesome-jsonschema) - The Smart Data Models GitHub organization makes use of JSON Schema to describe harmonized Data Models for different Smart Domains.
- [Snowplow](https://docs.snowplowanalytics.com/docs/understanding-tracking-design/understanding-schemas-and-validation/?utm_source=awesome-jsonschema) - The Snowplow analytics platform support using JSON Schema to define the structure of the data to collect.
- [SpreadJS](https://www.grapecity.com/spreadjs/docs/v13/online/jsonschema.html?utm_source=awesome-jsonschema) - The SpreadJS JavaScript spreadsheet library uses JSON Schema to describe the SpreadJS JSON data format.
- [TILT (machine-readable privacy policies)](https://github.com/Transparency-Information-Language/schema?utm_source=awesome-jsonschema) - 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](https://github.com/usnistgov/OSCAL/tree/main/json?utm_source=awesome-jsonschema) - The National Institute of Standards and Technology uses JSON Schema Draft 7 to model Open Security Controls Assessment Language (OSCAL) JSON documents.
- [Walmart eCommerce](https://developer.walmart.com/documentation/item-object-v4-0/?utm_source=awesome-jsonschema) - Walmart publishes JSON Schema documents for certain resources that developers can make use of when integratting with the Walmart eCommerce platform.
- [Wordpress](https://make.wordpress.org/themes/2021/11/30/theme-json-schema/?utm_source=awesome-jsonschema) - Wordpress maintains official JSON Schema documents to help with building block based themes.
- [Zapier](https://github.com/zapier/zapier-platform/tree/master/packages/schema?utm_source=awesome-jsonschema) - Zapier maintains a large set of JSON Schema definitions that define its platform.
- [Zuplo](https://zuplo.com/json-schema/lp-a?utm_source=awesome-jsonschema) - The Zuplo API gateway provides JSON Schema validation and supports generating API documentation out of OpenAPI specifications.
- [nf-core](https://nf-co.re/tools/#pipeline-schema?utm_source=awesome-jsonschema) - The nf-core Nextflow analysis pipelines collection uses JSON Schema to define the parameters used by Nextflow workflows.

## Articles

- (2023) [LLMs for Schema Augmentation](https://michael.mior.ca/blog/llms-for-schema-augmentation/?utm_source=awesome-jsonschema) - Large language models can be exploited to automatically augment JSON Schemas with useful information..
- (2022) [What is "Modern" JSON Schema?](https://modern-json-schema.com/what-is-modern-json-schema?utm_source=awesome-jsonschema) - How "modern" JSON Schema, meaning 2019-09, 2020-12, and later, can solve far more problems than "classical" JSON Schema (draft-07 and earlier).
- (2022) [Using Dynamic References to Support Generic Types](https://json-schema.org/blog/posts/dynamicref-and-generics?utm_source=awesome-jsonschema) - Representing generic types from strongly-typed programming languages with JSON Schema.
- (2022) [JSON Schema is a constraint system](https://modern-json-schema.com/json-schema-is-a-constraint-system?utm_source=awesome-jsonschema) - Or: Why object-oriented programming is a mis-matched mental model for JSON Schema.
- (2022) [Forming new relationships: Contributing to Open source](https://www.crossref.org/blog/forming-new-relationships-contributing-to-open-source/?utm_source=awesome-jsonschema) - A description of adopting and extending JSON Forms, a JSON Schema based form rendering library, to support VueJS and Vuetify..
- (2022) [Docs! Docs! Docs!](https://brandur.org/nanoglyphs/031-api-docs?utm_source=awesome-jsonschema) - An overview of API documentation generation using Hyper Schema and OpenAPI.
- (2021) [Understanding JSON Schema compatibility](https://yokota.blog/2021/03/29/understanding-json-schema-compatibility/?utm_source=awesome-jsonschema) - A study of open, closed, and partially-open content models when evolving schemas in a backward, forward, or fully compatible manners.
- (2021) [Understanding API Complexity Through Schema Entropy](https://smizell.com/posts/2021/05/understanding-api-complexity-through-schema-entropy/?utm_source=awesome-jsonschema) - A look at API complexity by analyzing entropy of JSON Schema documents.
- (2021) [Robustness, Tolerance, and JSON Schema](https://smizell.com/posts/2021/07/robustness-tolerance-and-json-schema/?utm_source=awesome-jsonschema) - Applying the Robustness Principle and increasing schema entropy when making changes to an API.
- (2021) [Modeling a file system with JSON Schema](https://json-schema.org/learn/file-system.html?utm_source=awesome-jsonschema) - This example shows a possible JSON Schema representation of file system mount points as represented in an /etc/fstab file.
- (2021) [JSON Schema bundling finally formalised](https://json-schema.org/blog/posts/bundling-json-schema-compound-documents?utm_source=awesome-jsonschema) - A close look at bundling and de-referencing JSON Schema documents.
- (2020) [Using the JSON Schema standard for scientific applications?](https://cerfacs.fr/coop/json-schema-for-sci-apps?utm_source=awesome-jsonschema) - A discussion on how to use JSON Schema to validate input, add precise documentation, auto-fill missing parts, and create graphical user interfaces in the context of scientific applications.
- (2020) [Project Cambria: Translate your data with lenses](https://www.inkandswitch.com/cambria/?utm_source=awesome-jsonschema) - A proposal for an isolated software layer that translates data between JSON Schema definitions on demand. Translation logic is defined by composing bidirectional lenses, a kind of data transformation that can run both forward and backward.
- (2020) [JSON Schema, Schema.org, JSON-LD: What's the Difference?](https://dashjoin.medium.com/json-schema-schema-org-json-ld-whats-the-difference-e30d7315686a?utm_source=awesome-jsonschema) - An overview of the difference between JSON Schema and JSON-LD, their relationship and the role of Schema.org.
- (2020) [Building a No-Code JSON Schema Form Builder with ReactJS](https://www.ginkgobioworks.com/2020/10/08/building-a-no-code-json-schema-form-builder/?utm_source=awesome-jsonschema) - An update on the additional features implemented in the react-json-schema-form-builder open-source JSON Schema form builder project.
- (2020) [Azure Pipelines autocomplete in PyCharm, IntelliJ, WebStorm, CLion, and Rider](https://tonybaloney.github.io/posts/azure-pipelines-autocomplete-in-pycharm.html?utm_source=awesome-jsonschema) - Setting up PyCharm, IntelliJ, WebStorm, CLion and Rider to have auto-complete, syntax highlighting and validation support of Azure Pipelines workflows.
- (2019) [Saved by the Schema: Using JSON Schema to Document, Test, and Debug APIs](https://blog.heroku.com/json-schema-document-debug-apis?utm_source=awesome-jsonschema) - Learn how Heroku uses JSON Schema to test and document their Platform API, and how it helped them uncover an unexpected bug, rooted in the way the Oj gem parses Big Decimals.
- (2018) [JSON Schema Validator, Generator & Editor Guide](https://stoplight.io/json-guide/?utm_source=awesome-jsonschema) - How the JSON and JSON Schema standards are defined and how to put them to use in your code and in your APIs.
- (2018) [JSON Schema Validation & Expressive Query Syntax in MongoDB 3.6](https://www.sitepoint.com/json-schema-validation-expressive-query-syntax-in-mongodb-3-6/?utm_source=awesome-jsonschema) - An in-depth discussion about using JSON Schema to define collection validation on MongoDB.
- (2018) [Definitions for filtering properties in JSON schema](https://gist.github.com/LucianBuzzo/5ff9106ce3ae12fb58e4def572b9344d?utm_source=awesome-jsonschema) - An introduction to the problem of using JSON Schema for data filtering and querying purposes.
- (2014) [Introducing SchemaVer for semantic versioning of schemas](https://snowplowanalytics.com/blog/2014/05/13/introducing-schemaver-for-semantic-versioning-of-schemas/#feedback?utm_source=awesome-jsonschema) - A proposal for a versioning convention for JSON Schema definitions based on SemVer.

## Specifications

- (2021) [AsyncAPI](https://www.asyncapi.com/docs/specifications/v2.1.0?utm_source=awesome-jsonschema) - 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](https://www.w3.org/2019/wot/json-schema?utm_source=awesome-jsonschema) - 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](https://swagger.io/specification/?utm_source=awesome-jsonschema) - The OpenAPI specification embeds and extends JSON Schema for defining API request and responses.
- (2021) [RAML](https://raml.org?utm_source=awesome-jsonschema) - The RAML specification supports modeling API data using JSON Schema.
- (2020) [JSON Schema Core 2020-12](https://json-schema.org/draft/2020-12/json-schema-core.html?utm_source=awesome-jsonschema) - 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](https://json-schema.org/draft/2020-12/json-schema-validation.html?utm_source=awesome-jsonschema) - 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](https://json-schema.org/draft/2020-12/relative-json-pointer.html?utm_source=awesome-jsonschema) - 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](https://www.w3.org/WoT/?utm_source=awesome-jsonschema) - 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](https://datatracker.ietf.org/doc/html/draft-handrews-json-schema-hyperschema-02?utm_source=awesome-jsonschema) - 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

- (2021) [API by Design](https://smizell.gumroad.com/l/apibydesign?utm_source=awesome-jsonschema) - Introduces an approach to measure API complexity by analyzing entropy in JSON Schema definitions.
- (2017) [JSON at Work](https://www.oreilly.com/library/view/json-at-work/9781491982389/?utm_source=awesome-jsonschema) - A comprehensive overview of the JSON ecosystem, including JSON Schema.
- (2014) [Using JSON Schema](https://books.apple.com/us/book/using-json-schema/id903248630?utm_source=awesome-jsonschema) - Learn and Apply JSON Schema by Example, with JavaScript (Node.js) and Python Programs.

## Courses

- (2017) [JSON Schema - Crash Course for Beginners](https://www.udemy.com/course/json-schema-crash-course-for-beginners/?utm_source=awesome-jsonschema) - Learn JSON & JSON Schema in a Quick 30-40 minutes & use it for the rest of your life for complex projects.
- (2017) [Processing and Interchanging JSON Data](https://www.linkedin.com/learning/processing-and-interchanging-json-data?utm_source=awesome-jsonschema) - An in-depth guide to working with JSON and the JSON ecosystem including using JSON Schema for validation purposes.

## Videos

- (2022) [JSON Schema in Production: #3 Mads Kristensen at Microsoft](https://www.youtube.com/watch?v=-yYTxLZZk58?utm_source=awesome-jsonschema) - Mads shares the story of bringing JSON Schema support into Visual Studio back in version 2013, the first editor supporting JSON Schema. What's called .Net Core today needed tooling for their "project.json" file, similar to a "package.json" file. JSON Schema ended up playing a key role in the autocompletion and validation infastructure ontop of a basic JSON editor.
- (2022) [JSON Schema in Production - #6 Suresh Srinivas at OpenMetadata](https://www.youtube.com/watch?v=ZrVTZwmTR3k?utm_source=awesome-jsonschema) - We talk to Suresh Srinivas, Co-Founder at Collate, building OpenMetadata. (Previously engineering leadership at Uber and Founder of Hortonworks.).
- (2022) [JSON Schema in Production - #5 Jens Neuse at Wundergraph](https://www.youtube.com/watch?v=_TCU6da0GA8?utm_source=awesome-jsonschema) - Jens Neuse, Founder of Wundergraph shares how Wundergraph compiles GraphQL definitions into JSON RPC and create JSON Schema definitions for each JSON RPC endpoint. Input data is validated using JSON Schema at the middleware-level before executing the corresponding GraphQL query.
- (2022) [JSON Schema in Production - #4 David Brownman at Zapier](https://www.youtube.com/watch?v=yDL98sd4KVE?utm_source=awesome-jsonschema) - David shares the story of using JSON Schema at Zapier to validate and document their intergration payloads, enabling a better developer experience for their 4000+ intergration partners..
- (2022) [JSON Schema in Production - #2 Kin Lane at F5](https://www.youtube.com/watch?v=pibZF049zqE?utm_source=awesome-jsonschema) - Kin shares the challenges of building a company wide index of data structures (or Schema Registry), aiming to help understand previous, and avoid future, unexpected breaking changes that really impact customers.
- (2022) [JSON Schema in Production - #1 Chuck Reeves at Zones](https://www.youtube.com/watch?v=fkziMQD7pqQ?utm_source=awesome-jsonschema) - Ben talks to Chuck Reeves, previously at Zones, about how they used JSON Schema to validate data and keep it in a consistent format across their application. Chuck shares how using a public API gateway to validate incoming data saved developers time and compute effort, making sure only valid data was passed downstream to serverless functions or other services.
- (2022) [JSON Schema In Production - You Can Use It Today - Ben Hutton, Postman](https://www.youtube.com/watch?v=48QgjmwLWh0?utm_source=awesome-jsonschema) - Hear the about the journey of organizations that use JSON Schema in production today, and learn about how JSON Schema continues to deliver value.
- (2021) [So you think you understand JSON Schema? - Ben Hutton](https://www.youtube.com/watch?v=vMG0NCDifI0?utm_source=awesome-jsonschema) - In this session you'll learn some key fundamentals, intracacies that even catch out the experienced, and how to develop your own interoperable JSON Schema Vocabulary.
- (2021) [Maintaining JSON Schemas at Scale - Jason Desrosiers](https://www.youtube.com/watch?v=GjJpRsVffg0?utm_source=awesome-jsonschema) - In this talk, we will cover the keywords, concepts, and patterns for maintaining large schemas or large collections of schemas. We'll tackle problems like how to breakdown and organize schemas, how to bundle schemas, how to make large schemas efficient, how to get better error messages from large schemas, and more.
- (2021) [JSON Schema Validation in Postman](https://www.youtube.com/watch?v=8BfshV5n6ac?utm_source=awesome-jsonschema) - An tutorial of performing JSON Schema validation in Postman in API tests.
- (2021) [Configuring Umbraco on .NET Core - JSON Schema](https://www.youtube.com/watch?v=rpUg-oySw8g?utm_source=awesome-jsonschema) - Configuring Umbraco on .NET Core with JSON Schema-powered autocompletions for appsettings.json using SchemaStore.
- (2021) [API Storytelling with Ben Hutton](https://www.youtube.com/watch?v=4xbA82lo_lc?utm_source=awesome-jsonschema) - This episode we sit down with Ben Hutton, the lead behind the JSON Schema community to talk about vocabularies and other ways we validate and annotate how we tell stories we tell in the API space.
- (2020) [What is JSON Schema](https://www.youtube.com/watch?v=kK-_gL7Vsc0?utm_source=awesome-jsonschema) - A basic introduction to JSON Schema showing how to auto-generate JSON Schema document from an existing JSON document.
- (2019) [What is a JSON Schema? Generate, Modify, and Understand a JSON Schema: Example](https://www.youtube.com/watch?v=hGXxXyJmaUo?utm_source=awesome-jsonschema) - An in-depth introduction to JSON Schema including auto-generating JSON Schema documents using QuickType.io.
- (2019) [JSON Schema Validation: How to Validate JSON Schema with Postman?](https://www.youtube.com/watch?v=X072eKtOIio?utm_source=awesome-jsonschema) - An introduction to JSON Schema and how to use it in Postman.
- (2017) [JSON Schema - the Good, the Bad and the Ugly](https://vimeo.com/222489288?utm_source=awesome-jsonschema) - With JSON Schema you are required to define your data and the available tooling to do so is not really great (yet). This presentation provides you with criteria to judge whether JSON Schema could be beneficial for your project or is just too much overhead.

## Podcasts

- (2021) [API Lifecycles, Specifications, and Standards with Kin Lane](https://www.infoq.com/podcasts/api-lifecycles-specifications-standards/?utm_source=awesome-jsonschema) - 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

- (2023) [JSONoid: Monoid-based Enrichment for Configurable and Scalable Data-Driven Schema Discovery](https://arxiv.org/abs/2307.03113?utm_source=awesome-jsonschema) - Meaningful schema information for semi-structured data..
- (2023) [JSONoid: Distributed JSON Schema Discovery](https://github.com/dataunitylab/jsonoid-discovery?utm_source=awesome-jsonschema) - A tool for distributed JSON schema discovery including many properties of the data..
- (2023) [Comprehending Semantic Types in JSON Data with Graph Neural Networks](https://arxiv.org/abs/2307.12807?utm_source=awesome-jsonschema) - Graph neural networks for semantic type detection in JSON..
- (2022) [Witness Generation for JSON Schema](https://arxiv.org/abs/2202.12849?utm_source=awesome-jsonschema) - 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](https://arxiv.org/abs/2211.08891?utm_source=awesome-jsonschema) - 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](http://bilioso.isti.cnr.it/sebd2022/preprint/SEBD_2022_Camera-ready_PDF_8.pdf?utm_source=awesome-jsonschema) - 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](https://www.jviotti.com/assets/dissertation.pdf?utm_source=awesome-jsonschema) - 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](https://link.springer.com/chapter/10.1007/978-3-031-07969-6_3?utm_source=awesome-jsonschema) - 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](https://dl.acm.org/doi/10.1145/3442188.3445925?utm_source=awesome-jsonschema) - 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](https://arxiv.org/abs/2104.14828?utm_source=awesome-jsonschema) - 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](https://arxiv.org/abs/2111.10398?utm_source=awesome-jsonschema) - Efficient dependency mining algorithms for non-relational data..
- (2021) [Enhancing JSON Schema Discovery by Uncovering Hidden Data](https://ceur-ws.org/Vol-2971/paper11.pdf?utm_source=awesome-jsonschema) - Enhancing discovered JSON Schemas by disambiguating data and metadata..
- (2021) [Deriving Semantics-Aware Fuzzers from Web API Schemas](https://arxiv.org/abs/2112.10328?utm_source=awesome-jsonschema) - Discusses JSON Schema canonicalization and JSON Schema instance derivation in the context of property-based testing of APIs.
- (2020) [Type Safety with JSON Subschema](https://arxiv.org/abs/1911.12651?utm_source=awesome-jsonschema) - 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](https://link.springer.com/chapter/10.1007/978-3-030-65847-2_16?utm_source=awesome-jsonschema) - 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](https://link.springer.com/chapter/10.1007/978-3-030-65847-2_20?utm_source=awesome-jsonschema) - 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?](https://link.springer.com/chapter/10.1007/978-3-030-34146-6_9?utm_source=awesome-jsonschema) - 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](https://ieeexplore.ieee.org/abstract/document/9000020?utm_source=awesome-jsonschema) - 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](https://ieeexplore.ieee.org/abstract/document/8424731?utm_source=awesome-jsonschema) - 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](https://hal.archives-ouvertes.fr/hal-01491765?utm_source=awesome-jsonschema) - 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](https://link.springer.com/chapter/10.1007/978-3-319-61482-3_16?utm_source=awesome-jsonschema) - 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](https://dl.acm.org/doi/abs/10.1002/spe.2466?utm_source=awesome-jsonschema) - 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](https://link.springer.com/chapter/10.1007/978-3-319-44406-2_13?utm_source=awesome-jsonschema) - 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](https://dl.acm.org/doi/abs/10.1145/2872427.2883029?utm_source=awesome-jsonschema) - 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](https://dl.gi.de/handle/20.500.12116/2420?utm_source=awesome-jsonschema) - 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](https://dl.acm.org/doi/abs/10.1145/2633448.2633454?utm_source=awesome-jsonschema) - 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](https://dl.acm.org/doi/abs/10.1145/2187980.2188227?utm_source=awesome-jsonschema) - 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](https://typedwebhook.tools?utm_source=awesome-jsonschema) - An online webhook testing tool that is able to generate JSON Schema definitions out of incoming data.
- [QuickType.io](https://app.quicktype.io?utm_source=awesome-jsonschema) - An online JSON Schema code-generation utility with diverse programming language support.
- [JSONschema.Net](https://www.jsonschema.net?utm_source=awesome-jsonschema) - An online tool that generates JSON schema from JSON documents.
- [JSONSchema.dev](https://jsonschema.dev?utm_source=awesome-jsonschema) - An online JSON Schema validator created by the JSON Schema specification lead.
- [JSONBuddy](https://www.json-buddy.com?utm_source=awesome-jsonschema) - A JSON editor and validator desktop application for Windows.
- [JSON Schema Viewer](http://jlblcc.github.io/json-schema-viewer/?utm_source=awesome-jsonschema) - An online tool to visualize JSON Schema definitions.
- [JSON Schema Validator and Generator](https://extendsclass.com/json-schema-validator.html?utm_source=awesome-jsonschema) - An online JSON Schema validator that can generate JSON Schema from JSON documents and generate random JSON documents from JSON Schema.
- [JSON Schema Validator](https://www.jsonschemavalidator.net?utm_source=awesome-jsonschema) - An online JSON Schema validator with support for JSON Schema Draft 3, Draft 4, Draft 6, Draft 7 and Draft 2019-09.
- [Hyperjump JSON Schema Validator](https://json-schema.hyperjump.io?utm_source=awesome-jsonschema) - An online JSON Schema validator that supports Draft 04, 06, 07, 2019-09, and 2020-12.
- [AlterSchema](https://alterschema.sourcemeta.com?utm_source=awesome-jsonschema) - 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](https://github.com/kinlane) for curating the
initial version of this list.


text:
<!-- ATTENTION! This file is auto-generated. Do not edit this file directly.
Instead, edit `data.yaml` and re-generate this file as per the README's
instructions -->

# Awesome JSON Schema [![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/sindresorhus/awesome)

[<img src="logo.svg" align="right" width="100">](https://json-schema.org)

[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com)
[![Join Slack](https://img.shields.io/badge/Slack-Join%20Slack-blue.svg?style=flat-square)](https://json-schema.slack.com)
[![OpenCollective](https://img.shields.io/opencollective/all/json-schema?label=OpenCollective&style=flat-square)](https://opencollective.com/json-schema)

> 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.

---

**Interested in JSON Schema? Come join us at the official [JSON Schema Office
Hours](https://github.com/json-schema-org/community/discussions/34)!**

---

## Contents

- [Official](#official)
- [Getting Started](#getting-started)
- [Vocabularies](#vocabularies)
- [Registries](#registries)
- [Adoption](#adoption)
- [Articles](#articles)
- [Specifications](#specifications)
- [Books](#books)
- [Courses](#courses)
- [Videos](#videos)
- [Podcasts](#podcasts)
- [Papers](#papers)
- [Tools](#tools)
- [Libraries](#libraries)

## Official

{{#each (sortBy data "title")}}
{{#compare type "==" "official"}}
- [{{title}}]({{{url}}}?utm_source=awesome-jsonschema) - {{summary}}.
{{/compare}}
{{/each}}

## Getting Started

{{#each (reverseSortBy data "year")}}
{{#compare type "==" "tutorial"}}
- ({{this.year}}) [{{title}}]({{{url}}}?utm_source=awesome-jsonschema) - {{summary}}.
{{/compare}}
{{/each}}

## Vocabularies

{{#each (sortBy data "title")}}
{{#compare type "==" "vocabulary"}}
- [{{title}}]({{{url}}}?utm_source=awesome-jsonschema) - {{summary}}.
{{/compare}}
{{/each}}

## Registries

{{#each (sortBy data "title")}}
{{#compare type "==" "registry"}}
- [{{title}}]({{{url}}}?utm_source=awesome-jsonschema) - {{summary}}.
{{/compare}}
{{/each}}

## Adoption

*Awesome products and companies that adopted JSON Schema. Did we miss any? [Let
us
know!](https://github.com/jviotti/awesome-jsonschema/issues/new?assignees=&labels=adoption&template=course.md&title=)*

{{#each (sortBy data "title")}}
{{#compare type "==" "adoption"}}
- [{{title}}]({{{url}}}?utm_source=awesome-jsonschema) - {{summary}}.
{{/compare}}
{{/each}}

## Articles

{{#each (reverseSortBy data "year")}}
{{#compare type "==" "article"}}
- ({{this.year}}) [{{title}}]({{{url}}}?utm_source=awesome-jsonschema) - {{summary}}.
{{/compare}}
{{/each}}

## Specifications

{{#each (reverseSortBy data "year")}}
{{#compare type "==" "spec"}}
- ({{this.year}}) [{{title}}]({{{url}}}?utm_source=awesome-jsonschema) - {{summary}}.
{{/compare}}
{{/each}}

## Books

{{#each (reverseSortBy data "year")}}
{{#compare type "==" "book"}}
- ({{this.year}}) [{{title}}]({{{url}}}?utm_source=awesome-jsonschema) - {{summary}}.
{{/compare}}
{{/each}}

## Courses

{{#each (reverseSortBy data "year")}}
{{#compare type "==" "course"}}
- ({{this.year}}) [{{title}}]({{{url}}}?utm_source=awesome-jsonschema) - {{summary}}.
{{/compare}}
{{/each}}

## Videos

{{#each (reverseSortBy data "year")}}
{{#compare type "==" "video"}}
- ({{this.year}}) [{{title}}]({{{url}}}?utm_source=awesome-jsonschema) - {{summary}}.
{{/compare}}
{{/each}}

## Podcasts

{{#each (reverseSortBy data "year")}}
{{#compare type "==" "podcast"}}
- ({{this.year}}) [{{title}}]({{{url}}}?utm_source=awesome-jsonschema) - {{summary}}.
{{/compare}}
{{/each}}

## Papers

{{#each (reverseSortBy data "year")}}
{{#compare type "==" "paper"}}
- ({{this.year}}) [{{title}}]({{{url}}}?utm_source=awesome-jsonschema) - {{summary}}.
{{/compare}}
{{/each}}

## Tools

{{#each (sortBy data "subtype")}}
{{#compare type "==" "tool"}}
- [{{title}}]({{{url}}}?utm_source=awesome-jsonschema) - {{summary}}.
{{/compare}}
{{/each}}

## Libraries

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

---

> Special thanks to [@kinlane](https://github.com/kinlane) for curating the
initial version of this list.

repo_name: sourcemeta/awesome-jsonschema

repo_language: Handlebars

mime_type: text/plain


text:
#!/bin/sh

set -o errexit
set -o nounset

STATUS="$(git status -s)"

if [ -n "$STATUS" ]
then
  echo "These unstaged changes should not exist:" 1>&2
  echo "$STATUS" 1>&2
  git diff
  echo "Did you ran 'npm start' and committed back the results?" 1>&2
  exit 1
fi


text:
---
name: Article
about: Add an awesome article about JSON Schema to the list
title: ''
labels: article
assignees: ''
---

### URL

### Year

### Summary


text:
---
name: Paper
about: Add an awesome paper that mentions JSON Schema to the list
title: ''
labels: paper
assignees: ''
---

### URL

### Year

### Summary


text:
---
name: Link
about: Add an awesome link about JSON Schema to the list
title: ''
labels: link
assignees: ''
---

### URL

### Summary


text:
---
name: Library
about: Add an awesome library that implements JSON Schema to the list
title: ''
labels: library
assignees: ''
---

### URL

### Summary


text:
---
name: Book
about: Add an awesome book about JSON Schema to the list
title: ''
labels: book
assignees: ''
---

### URL

### Year

### Summary


text:
---
name: Specification
about: Add an awesome specification that uses JSON Schema to the list
title: ''
labels: specification
assignees: ''
---

### URL

### Year

### Summary


text:
---
name: Vocabulary
about: Add an awesome JSON Schema vocabulary to the list
title: ''
labels: vocabulary
assignees: ''
---

### URL

### Summary


text:
---
name: Adoption
about: Add an awesome company or product that uses JSON Schema to the list
title: ''
labels: adoption
assignees: ''
---

### URL

### Summary


text:
name: Test
on: pull_request
jobs:
  pr:
    runs-on: ubuntu-20.04
    steps:
      - name: Check out repository code
        uses: actions/checkout@v2
      - uses: actions/setup-node@v2
        with:
          node-version: '14'
      - run: npm ci
      - run: npm run lint
      - run: npm test
      - run: npm start
      - name: Check that there are no uncommitted changes
        run: ./.github/no-staged-uncommitted-files.sh


text:
# 微博境外势力

使用您的规则代理工具，在微博上成为境外势力。

> 此项目目前支持：
 * [Clash for Windows](#ClashForWindows)
 * [Quantumult X、Shadowrocket、Surge](#Surge)
 * [v2ray 系、SagerNet、Matsuri](#v2ray)
 * 欢迎 Pull Request 添加更多规则工具

---

## 前情提要

[IP属地功能升级公告 — @微博管理员](https://weibo.com/1934183965/LqvYeCdBu) （[文字版本](./misc/IP%E5%B1%9E%E5%9C%B0%E5%8A%9F%E8%83%BD%E5%8D%87%E7%BA%A7%E5%85%AC%E5%91%8A.md)）

---

###  Clash for Windows

请确保您的 Clash For Windows 版本高于 0.11.10。可到 [Clash for Windows 发布页面](https://github.com/Fndroid/clash_for_windows_pkg/releases) 更新。

前往 `Settings → Profiles`，点击 Parsers 的 Edit 按钮。

![](https://i.ibb.co/mytXpCZ/image.png)

在文本编辑器中，覆盖为以下内容 **（您需要将下方的「代理」文本替换成您配置文件的代理选项，如：`🚀 节点选择`、`🇭🇰 香港节点` 等）**：

```yaml
parsers:
  - reg: ^.*$ # 或使用 - url: https://example.com/profile.yaml 指定订阅
    yaml:
      prepend-rules: # 规则由上往下遍历，如上面规则已经命中，则不再往下处理
        - DOMAIN-SUFFIX,weibo.com,代理
        - DOMAIN-SUFFIX,weibo.cn,代理
        - DOMAIN-SUFFIX,weico.cc,代理 # Weico 客户端
```

包括 `IP-CIDR` 的规则在此：[weibo_clash.yaml](./modules/weibo_clash.yaml)

保存并关闭您的文本编辑器。然后在 Profiles 中，重新刷新您的订阅。规则会自动应用到更新后的订阅。

如果您正在使用其它的配置 Parser，您也可以将以上三个规则添加到 `prepend-rules` 的最顶端。

###  Quantumult X/Surge/Shadowrocket

在 Quantumult X、Shadowrocket 或 Surge 客户端中，导入并启用以下模块。

`https://raw.githubusercontent.com/foreign-shili/weibo-foreign-power/main/modules/weibo_quanx_srocket_surge.conf`

或是手动创建新模块，拷贝以下文件的内容，然后粘贴到新模块中：

[weibo_quanx_srocket_surge.conf](./modules/weibo_quanx_srocket_surge.conf)

如果遇到 Shadowrocket 中，此模块不起作用，请在模块的末尾添加：

```
DOMAIN-SUFFIX,cn,DIRECT
```

来修复问题（原因可能是因为在访问微博域名，处理规则时，配置文件中内置的 `DOMAIN-SUFFIX,cn,DIRECT` 被提前命中）。

###  v2ray 系、SagerNet、Matsuri

请确保您的客户端拥有最新的 v2ray 路由规则（`geoip.dat`、`geosite.dat`）。推荐从 [Loyalsoldier/v2ray-rules-dat](https://github.com/Loyalsoldier/v2ray-rules-dat) 更新您的路由规则数据库。

#### 懒人方式：

在相关客户端的规则设定中，将 `geosite:sina` 放置在需要代理规则的最顶端。这样做是最简单的，但可能会导致 sinaimg.cn（目前访问不影响地域显示）等图片、视频资源通过代理加载，造成流量浪费、加载缓慢等问题。

以 SagerNet 为例：

[![](https://i.ibb.co/SVn0vmh/Surge-Net-Matsuri.jpg)](https://i.ibb.co/SVn0vmh/Surge-Net-Matsuri.jpg)

#### 勤劳方式：

其实也没有那么勤劳。

在相关代理客户端，规则的 domain 条目中，添加以下条目：

```
domain:weibo.com
domain:weibo.cn
domain:weibo.cc
```

通常这样做就已经足够了。但如果还想更进一步，可以在 IP 条目中，添加以下条目：

```
180.149.138.0/24
36.51.254.0/24
49.7.40.0/24
183.60.93.0/24
49.7.36.0/24
180.149.138.39
39.97.130.0/24
39.97.128.0/24
```

**请务必确保从上至下的顺序中，上面所添加的规则高于类如 `geoip:cn` `geosite:cn` 等直连配置。**

以上配置参考了 [路由配置 · Project V 官方网站](https://www.v2ray.com/chapter_02/03_routing.html)。

## 分享阅读

[原文 @兔老表](https://weibo.com/3314845321/Lqw5ooJS2)

```
正经人谁怕公布IP呢
正经人谁穿成这样上街呢
正经人还怕被举报？
正经人谁看这些书和电影啊
正经人会这么说话吗
正经人会半夜还不回家？
正经人，要不你告诉我什么样才算正经人吧
```

[关于即将上线的显示ip属地功能，你有什么想说的？ - 感恩节快乐的回答 - 知乎](https://www.zhihu.com/question/528609532/answer/2447942947)（作者禁止转载）

repo_name: foreign-shili/weibo-foreign-power

file_name: IP属地功能升级公告.md


text:
parsers:
  - reg: ^.*$ # 或使用 - url: https://example.com/profile.yaml 指定订阅
    yaml:
      prepend-rules: # 规则由上往下遍历，如上面规则已经命中，则不再往下处理
        # Domain rules
        - DOMAIN-SUFFIX,weibo.com,PROXY
        - DOMAIN-SUFFIX,weibo.cn,PROXY
        - DOMAIN-SUFFIX,weico.cc,PROXY
        # IP rules

        # weibo.com
        - IP-CIDR,180.149.138.0/24,PROXY
        # weibo.cn, api.weibo.cn (The important one!)
        - IP-CIDR,36.51.254.0/24,PROXY
        - IP-CIDR,49.7.40.0/24,PROXY
        - IP-CIDR,183.60.93.0/24,PROXY
        # dp.im.weibo.cn, *.biz.weibo.com
        - IP-CIDR,49.7.36.0/24,PROXY
        # api.uve.weibo.com (Other *.uve.weibo.com are CNAME'd to here)
        - IP-CIDR,180.149.138.39/32,PROXY
        # dns.weibo.com (uses AliDNS for Business service)
        - IP-CIDR,39.97.130.0/24,PROXY
        - IP-CIDR,39.97.128.0/24,PROXY

        # sinaimg.cn does not affect region display results,
        # so no need to be paranoid (for now).

file_name: IP属地功能升级公告.md


text:
#!name=微博 Ruleset
#!desc=境外势力 but for privacy.

[Rule]
# Domain rules
DOMAIN-SUFFIX,weibo.com,PROXY
DOMAIN-SUFFIX,weibo.cn,PROXY
DOMAIN-SUFFIX,weico.cc,PROXY

# IP rules

# weibo.com
IP-CIDR,180.149.138.0/24,PROXY
# weibo.cn, api.weibo.cn (The important one!)
IP-CIDR,36.51.254.0/24,PROXY
IP-CIDR,49.7.40.0/24,PROXY
IP-CIDR,183.60.93.0/24,PROXY
# dp.im.weibo.cn, *.biz.weibo.com
IP-CIDR,49.7.36.0/24,PROXY
# api.uve.weibo.com (Other *.uve.weibo.com are CNAME'd to here)
IP-CIDR,180.149.138.39/32,PROXY
# dns.weibo.com (uses AliDNS for Business service)
IP-CIDR,39.97.130.0/24,PROXY
IP-CIDR,39.97.128.0/24,PROXY

# sinaimg.cn does not affect region display results,
# so no need to be paranoid (for now).

file_name: IP属地功能升级公告.md


text:
[原文](https://weibo.com/1934183965/LqvYeCdBu)

# IP属地功能升级公告

微博一直致力于维护健康有序的讨论氛围，保障用户第一时间获取真实有效信息的权益。为减少冒充热点事件当事人、恶意造谣、蹭流量等不良行为，确保传播内容的真实、透明，站方于今年3月上线展示用户“IP属地”功能。

为进一步保障用户权益、提升用户体验，站方将在此前基础上于4月28日进行产品升级和新功能上线，具体如下：

    一、全量开放评论展示发评IP属地小尾巴功能（示意图附后）；
    二、上线“个人主页一级页面展示IP属地”功能（示意图附后）。

### FAQ

> Q1: 评论区IP属地显示可以关闭吗？

A1:该功能旨在更透明地向广大用户呈现真实情况，无法由用户主动开启或关闭。

> Q2: 个人主页IP属地根据什么显示？

A2:根据最近您发博、发评、投票的IP属地判定所属地区。

> Q3: IP属地显示规则是什么？

A3:显示规则为国内显示到省份/地区，国外显示到国家。

> Q4:为什么定位不准？

A4:站方只展示对应IP属地位置，并不获取其他信息，定位根据运营商IP信息解析，如有问题可咨询对应运营商。

file_name: IP属地功能升级公告.md


text:
from datetime import datetime, timedelta
import os
from pathlib import Path
import json
import random

from num2words import num2words
from github import Github
from github.Repository import Repository
from jinja2 import FileSystemLoader, Environment

g = Github(os.environ["GITHUB_TOKEN"])

def generate_random_modifiers(username: str, visited: datetime) -> dict[str, str]:
    random.seed(username)
    return {
        "weather": random.choice(
            json.load(Path("data/weather_conditions.json").open())["conditions"]
        ),
        "material": random.choice(
            json.load(Path("data/natural-materials.json").open())["natural materials"]
        ),
        "flower": random.choice(json.load(Path("data/flowers.json").open())["flowers"]),
        "stone": random.choice(
            json.load(Path("data/decorative-stones.json").open())["decorative stones"]
        ),
        "metal": random.choice(
            json.load(Path("data/layperson-metals.json").open())["layperson metals"]
        ),
        "home": random.choice(
            json.load(Path("data/natural-places.json").open())["natural places"]
        ),
        "occupation": random.choice(
            json.load(Path("data/occupations.json").open())["occupations"]
        ),
        "trail_type": random.choice(["flower", "metal"]),
        "visited": visited,
    }

def create_visitors(repo: Repository) -> list[dict[str, str]]:
    visitors: list[dict[str, str]] = []

    for visitor in repo.get_stargazers_with_dates():
        visitors.append(
            generate_random_modifiers(visitor.user.login, visitor.starred_at.date())
        )

    return visitors

def main(repo_name=str, mock_users=0):
    repo = g.get_repo(repo_name)

    visitors: list[dict[str, str]] = []

    for i in range(0, mock_users):
        # Group mock user in groups of 2
        date = datetime.today() + timedelta(days=i if i % 2 == 0 else i - 1)
        visitors.append(generate_random_modifiers(str(random.randint(0, 1000)), date.date()))

    visitors = visitors + create_visitors(repo)

    you = generate_random_modifiers(repo.owner.login, repo.created_at.date())

    stars = len(visitors)

    loader = FileSystemLoader(".")
    env = Environment(
        loader=loader, extensions=["jinja2_humanize_extension.HumanizeExtension"]
    )
    def numword(number: int):
        return num2words(number)

    env.filters["numword"] = numword

    template = env.get_template("index.jinja")
    Path("index.html").write_text(
        template.render(
            {
                "visitors": visitors,
                "repo": repo,
                "you": you,
                "stars": stars,
            }
        )
    )

if __name__ == "__main__":
    import argparse

    parser = argparse.ArgumentParser()
    parser.add_argument(
        "--repo",
        default="lizadaly/there-are-stars",
    )
    parser.add_argument(
        "--mock-users",
        default=0,
        type=int,
        help="Generate a test run with N numbers of mock users",
    )
    args = parser.parse_args()
    main(repo_name=args.repo, mock_users=args.mock_users)

repo_name: lizadaly/there-are-stars

repo_language: Jinja


text:
<!DOCTYPE html>

<meta property="og:description" content="There are stars: A generative story told through collaboration" />
<meta property="og:type" content="website" />
<meta name="author" content="Liza Daly" />
<meta property="og:title" content="There are stars" />

    <title>There {{ "is" if stars == 1 else "are" }} {{ stars|numword }} star{{ "" if stars == 1 else "s" }}</title>

There {{ "is" if stars == 1 else "are" }} {{ stars|numword }} star{{ "" if stars == 1 else "s" }}

            This collaborative story began {{ repo.created_at | humanize_naturalday }}. How to participate.

Prologue

                You started this journey over {{ repo.created_at | humanize_naturaldelta }} ago.
               You left from your {{ you.home.place }}. It was a {{ you.weather }} day.

                To help others follow you, you lay behind you a winding path of {{ you.stone }}
                cobblestones until your pockets were empty of stones.

            {% set ns = namespace(path=you.stone, star_count=0) %}

            {% for days, groups in visitors|groupby('visited')%}

Chapter {{ loop.index }}
{{ days.day }} {{ days.strftime('%B') }}

            {% for visitor in groups %}

                    {{ visitor.home.preposition | capitalize }} {{ visitor.home.place }} along the {{ ["way", "route", "path", "road"]|random }}, a{% if visitor.occupation.startswith(('a', 'o', 'i', 'e', 'u'))%}n{% endif %}

                    {{ visitor.occupation }}

                    {% if ns.star_count > 0 %}
                        observed {{ ns.star_count|numword }} new star{{ "" if ns.star_count == 1 else "s"}} in the sky
                    {% else %}
                        felt a stirring
                    {% endif %}

                    and decided to follow the {{ ns.path }} path.
                    They set out on a {{ visitor.weather }} {{ ["day", "morning", "afternoon", "evening"]|random }}.

                {% if loop.last %}

                    After a time, the {{ visitor.occupation }} noticed that the path
                    had become {{ ["thin", "trampled", "faded", "muddied"]|random }} and hard to follow. They started a new trail with {% if visitor.trail_type == "flower" %}
                        delicate plantings of {{ visitor.flower }} flowers
                        {% set ns.path = visitor.flower %}
                    {% elif visitor.trail_type == "metal" %}
                        a shiny line of {{ visitor.metal }} coins
                        {% set ns.path = visitor.metal %}
                    {% endif %}

                    until their pockets were empty of
                    {% if visitor.trail_type == "flower" %}
                        seeds.
                    {% elif visitor.trail_type == "metal" %}
                        metal.
                    {% endif %}

                {% endif %}

                {% set ns.star_count = ns.star_count + 1 %}
            {% endfor %}

        {% endfor %}

Epilogue

 After a long journey, {% if stars > 1 %}your friends{% else %} you {% endif %} arrived at your sanctuary by the sea.
            {% if stars > 1 %}
                This is how there came to be {{ stars|numword }} new star{{ "" if stars == 1 else "s" }} in the sky.
            {% else %}
                Perhaps the next time others will follow.
            {% endif %}

    About this story


text:
[tool.poetry]
name = "ther-are-stars"
version = "0.1.0"
description = ""
authors = ["Liza Daly <lizadaly@gmail.com>"]
readme = "README.md"

[tool.poetry.dependencies]
python = "^3.10"
pygithub = "^1.57"
jinja2 = "^3.1.2"
mypy = "^0.991"
jinja2-humanize-extension = "^0.2.2"
num2words = "^0.5.12"

[tool.poetry.group.dev.dependencies]
black = {version = "^22.10.0", allow-prereleases = true}

[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"


text:
# There are stars: A story

A collaborative narrative told through Github and automation. An entry in [National Novel Generation Month 2022](https://github.com/NaNoGenMo/2022), which has now ended.

The story: https://lizadaly.github.io/there-are-stars/
## How to participate

Every time someone stars this repository, a new character joins the story. The story
is regenerated every 10 minutes.

The story code will use a hash of the username who starred the repository to generate a consistent random seed so each time the story re-generates, the characters and their attributes
remain the same. The story does not otherwise use any information about users
who interact with the repository.

If you have starred the repository and you un-star it, the character representing you
will disappear the next time the story is regenerated.


text:
# Generate the story text and then publish it to Github Pages
name: Publish the story

on:
  # Trigger on push to main or every N minutes
  push:
    branches: [ "main" ]
  schedule:
    - cron: "*/10 * * * *"

  # Or manually
  workflow_dispatch:

# Allow one concurrent deployment
concurrency:
  group: "pages"
  cancel-in-progress: true

jobs:

  # Render the story and upload it as an artifact
  tell:
    runs-on: ubuntu-latest
    permissions:
      contents: read
    steps:
      - uses: actions/checkout@v3
      - name: Install poetry
        run: pipx install poetry
      - uses: actions/setup-python@v4
        with:
          python-version: '3.10'
          cache: 'poetry'
      - run: poetry install
      - shell: bash
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        run: poetry run python app.py

      - uses: actions/upload-artifact@v3
        with:
          name: story
          path: ./index.html

  publish:
    needs: tell
    environment:
      name: github-pages
      url: ${{ steps.deployment.outputs.page_url }}

    runs-on: ubuntu-latest

    # Permissions required for Github Pages in forks
    permissions:
      contents: read
      pages: write
      id-token: write
    steps:
      - name: Setup Pages
        uses: actions/configure-pages@v2
      - uses: actions/download-artifact@v3
        with:
          name: story
      - name: Upload artifact
        uses: actions/upload-pages-artifact@v1
        with:
          # Upload entire repository
          path: '.'
      - name: Deploy to GitHub Pages
        id: deployment
        uses: actions/deploy-pages@v1


text: Data files pulled from https://github.com/dariusk/corpora


text:
<!DOCTYPE html>

<meta charset="utf-8">
<title>Bandersnatch</title>

		<video id="video" loop autoplay src="Black.Mirror.Bandersnatch.2018.720p.WEB-DL.x264.DUAL.mkv">
		<track default kind="captions" srclang="en" src="Black.Mirror.Bandersnatch.2018.720p.WEB-DL.x264.DUAL.en.vtt"/>
		</video>

repo_name: joric/bandersnatch

repo_language: HTML


text:
# bandersnatch

![](https://i.imgur.com/vvdxUvy.jpg)

## Setup

You have to download two json files -
[bandersnatch.json](https://gist.github.com/jonluca/860f3f445e7d84054822276fd058301a)
and
[SegmentMap.json](https://github.com/jolbol1/Bandersnatch/blob/master/SegmentMap.json),
add first lines
(`bandersnatch=` and `SegmentMap=` accordingly), save them as *.js (html can't access json content without a server) then open html file in the browser (everything should be in the same folder).

If you're experiencing problems with local setup I recommend hosted version (just open the page and drag video file there):
* [Hosted version by mehotkhan (Bandersnatch Interactive Player)](https://mehotkhan.github.io/BandersnatchInteractive/)

## Controls

* F - Toggle fullscreen
* R - Restart video
* → - Jump to the next segment (or to the next interaction zone)
* ← - Jump to the previous segment
* Space - Toggle play and pause

## References

* [Reddit: GitHub - joric/bandersnatch: Black Mirror: Bandersnatch (interactive version)](https://redd.it/adnn2h)
* [Reddit: How to go to ANY scene in the movie! (bandersnatch.json)](https://www.reddit.com/r/Bandersnatch/comments/aatkkp/how_to_go_to_any_scene_in_the_movie/)
* [Reddit: Pearl Ritman's Advanced Evaluation (also: Netflix Interactive Video Moments revealed!)](https://www.reddit.com/r/Bandersnatch/comments/aaqt1y/pearl_ritmans_advanced_evaluation_also_netflix/)
* [Reddit: Full Segment Map, Showing IDs, Choices, Start Times and Default Choices (SegmentMap.json)](https://www.reddit.com/r/Bandersnatch/comments/abnwmx/full_segment_map_showing_ids_choices_start_times/)
* [Jon Engelsman: Through the Looking-Glass at Netflix (segmentGroups explained)](http://engelsjk.com/2018/12/30/Through-the-Looking-Glass-at-Netflix/)


text:
# Contribution Guidelines

Please note that this project is released with a [Contributor Code of Conduct](CODE-OF-CONDUCT.md). By participating in this project you agree to abide by its terms.

## Table of Contents

- [Adding to This List](#adding-to-this-list)
- [Updating Your Pull Request](#updating-your-pull-request)

## Adding to This List

Please ensure your pull request adheres to the following guidelines:

* Search open and closed PR's to avoid duplicate suggestions.
* Specify why the presentation is a must-watch, e.g., what did you learn from it, how will this be of value to developers?
* Use the following format: <pre>`[**Talk Title**](link): Presenter, Event` `Duration`</pre>
    - For multiple presenters use a serial comma as appropriate, e.g., Marcia, Jan, and Cindy.
    - Don't use an ampersand with the serial comma, e.g., Greg, Peter, & Bobby.
    - If the presentation is a screencast or playlist use `(screencast)` or `(playlist)` in lieu of `Event`.
    - The duration should be surrounded by backticks (`), e.g., `28:30`.
* Use the correct title of the presentation (don't rely on the title uploaded to YouTube, Vimeo, et al.).
* Use [title-case](https://titlecaseconverter.com/).
* Add suggestions to the end of the appropriate year block; if re-ordering is needed the project maintainer will make a final determination.

Thank you for your suggestions!

## Updating Your Pull Request

Sometimes a maintainer will ask you to edit your pull request before it's included. This is normally due to spelling errors or because your PR didn't match the above guidlines guidelines. [This write-up](https://github.com/RichardLitt/knowledge/blob/master/github/amending-a-commit-guide.md) covers the different ways you can change a pull request

repo_name: AllThingsSmitty/must-watch-css


text:
# Contributor Code of Conduct

As contributors and maintainers of this project, and in the interest of fostering an open and welcoming community, we pledge to respect all people who contribute through reporting issues, posting feature requests, updating documentation, submitting pull requests or patches, and other activities.

We are committed to making participation in this project a harassment-free experience for everyone, regardless of level of experience, gender, gender identity and expression, sexual orientation, disability, personal appearance, body size, race, ethnicity, age, religion, or nationality.

Examples of unacceptable behavior by participants include:

* The use of sexualized language or imagery
* Personal attacks
* Trolling or insulting/derogatory comments
* Public or private harassment
* Publishing other's private information, such as physical or electronic addresses, without explicit permission
* Other unethical or unprofessional conduct

Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.

By adopting this Code of Conduct, project maintainers commit themselves to fairly and consistently applying these principles to every aspect of managing this project. Project maintainers who do not follow or enforce the Code of Conduct may be permanently removed from the project team.

This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community.

Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting a project maintainer at mjsmithme@gmail.com. All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. Maintainers are obligated to maintain confidentiality with regard to the reporter of an incident.

This Code of Conduct is adapted from the [Contributor Covenant](http://contributor-covenant.org), version 1.3.0, available at [http://contributor-covenant.org/version/1/3/0/](http://contributor-covenant.org/version/1/3/0/).


text:
# Must-Watch CSS [![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/sindresorhus/awesome)

This is a collection of well-received talks about CSS covering topics such as CSS Grid, flexbox, custom variables, performance, frameworks, Sass, tooling, and more.

> **Like JavaScript? Check out [Must-Watch JavaScript](https://github.com/AllThingsSmitty/must-watch-javascript)!** For other great lists check out [@sindresorhus](https://github.com/sindresorhus/)'s curated list of [awesome lists](https://github.com/sindresorhus/awesome/).

* [Contribution Guidelines](CONTRIBUTING.md)

### 2022
1. [**CSS Variable Secrets**](https://www.youtube.com/watch?v=ZuZizqDF4q8): Lea Verou, CSS Day `59:06`
1. [**Oh Snap!**](https://www.youtube.com/watch?v=34zcWFLCDIc): Adam Argyle, CSS Day `49:46`

### 2020
1. [**10 Modern Layouts in 1 Line of CSS**](https://www.youtube.com/watch?v=qm0IfG1GyZU): Una Kravets, (Google Chrome Developers YouTube Channel) `21:38`

### 2019

1. [**CSS Algorithms**](https://www.youtube.com/watch?v=dxY5CdZNzsk): Lara Schenck, Strange Loop Conference `36:18`
1. [**Build a Classic Layout FAST in CSS Grid**](https://www.youtube.com/watch?v=KOvGeFUHAC0): Miriam Suzanne, (Mozilla Developer YouTube Channel) `8:29`
1. [**CSS Animation - Beyond Transitions**](https://www.youtube.com/watch?v=TYlA-eolzLs): Steven Roberts, CSSConf Budapest `28:01`
1. [**Using Devtools to Understand Modern CSS Layouts**](https://www.youtube.com/watch?v=ZRtzk0371tk): Chen Hui Jing, CSSConf EU `32:39`
1. [**Hello Subgrid!**](https://www.youtube.com/watch?v=vxOj7CaWiPU): Rachel Andrew, CSSConf EU `32:56`

### 2018

1. [**Resilient CSS: How to Write CSS That Works in Every Browser, Even the Old Ones**](https://hacks.mozilla.org/2018/03/how-to-write-css-that-works-in-every-browser-even-the-old-ones/): Jen Simmons (Layout Land playlist) `55:04`
1. [**Creative Text Effects with CSS**](https://www.youtube.com/watch?v=9EU7urOl1LE): Mandy Michael, Talk.CSS `40:46`
1. [**Learn CSS Grid**](https://www.youtube.com/watch?v=DCZdCKjnBCs&list=PLUS3uVC08ZaqVEGFkl_dS_3FUzILkOIzA): Wes Bos, Laracon `44:59`

### 2017

1. [**CSS Grid Layout**](https://www.youtube.com/watch?v=N5Lt1SLqBmQ&list=PLUS3uVC08ZaqVEGFkl_dS_3FUzILkOIzA): Rachel Andrew, Frontend NE `59:14`
1. [**The Power of CSS**](https://www.youtube.com/watch?v=IRI1H5tyEAo&list=PLUS3uVC08ZaqVEGFkl_dS_3FUzILkOIzA): Una Kravets, Front-Trends `30:57`
1. [**CSS and the First Meaningful Paint**](https://www.youtube.com/watch?v=4pQ2byAoIX0&list=PLUS3uVC08ZaqVEGFkl_dS_3FUzILkOIzA): Patrick Hamann, CSSConf EU `37:56`
1. [**CSS Grid in Production**](https://www.youtube.com/watch?v=_BCiiE31D5M&list=PLUS3uVC08ZaqVEGFkl_dS_3FUzILkOIzA): Benjamin De Cock, dotCSS `16:05`

### 2016

1. [**CSS in 2016 and Beyond**](https://www.youtube.com/watch?v=9AG35HCBpo4&list=PLUS3uVC08ZaqVEGFkl_dS_3FUzILkOIzA): Christian Vuerings, SFHTML5 `17:15`
1. [**Laying out the Future with Grid and Flexbox**](https://www.youtube.com/watch?v=ibeF6rbzD70&list=PLUS3uVC08ZaqVEGFkl_dS_3FUzILkOIzA): Rachel Andrew, View Source Conference `25:45`
1. [**Reactive Animations with CSS Variables**](https://www.youtube.com/watch?v=lTCukb6Zn3g&list=PLUS3uVC08ZaqVEGFkl_dS_3FUzILkOIzA): David Khourshid, JSConf Iceland `31:02`
1. [**Practical Blend Modes in CSS**](https://vimeo.com/184235576): Una Kravets, SmashingConf Freiburg `47:04`
1. [**Real Art Direction on the Web**](https://www.youtube.com/watch?v=5Z7lSSMwRgo&list=PLUS3uVC08ZaqVEGFkl_dS_3FUzILkOIzA): Jen Simmons, View Source Conference `31:41`
1. [**You Might Not Need a CSS Framework**](https://www.youtube.com/watch?v=5FdHqVDlXu0&list=PLUS3uVC08ZaqVEGFkl_dS_3FUzILkOIzA): Belen Albeza, View Source Conference `22:46`
1. [**The Dark Side of Polyfilling CSS**](https://www.youtube.com/watch?v=ZskP7cvj3WA&list=PLUS3uVC08ZaqVEGFkl_dS_3FUzILkOIzA): Philip Walton, dotCSS `22:57`

### 2015
1. [**mdo-ular CSS**](http://jqueryuk.com/2015/videos.php?s=mdo-ular-css): Mark Otto, jQuery UK `30:06`
1. [**PostCSS: The Future After Sass and LESS**](https://www.youtube.com/watch?v=1yUFTrAxTzg&list=PLUS3uVC08ZaqVEGFkl_dS_3FUzILkOIzA): Andrey Sitnik, CSSConf US `29:09`
1. [**Your Very Own Component Library**](https://www.youtube.com/watch?v=zSYo7m5kGHQ&list=PLUS3uVC08ZaqVEGFkl_dS_3FUzILkOIzA): Alex Sexton, JSConf AR `20:03`
1. [**Let's Move**](https://www.youtube.com/watch?v=J6wUmQDQBkw&list=PLUS3uVC08ZaqVEGFkl_dS_3FUzILkOIzA): Benjamin De Cock, CSSConf AU `24:52`
1. [**Motion Design with CSS**](https://www.youtube.com/watch?v=TjsXqt-UxLo&list=PLUS3uVC08ZaqVEGFkl_dS_3FUzILkOIzA): Val Head, OpenVis Conf `29:39`
1. [**Cascading Shit Show**](https://www.youtube.com/watch?v=iniwPUEbPUM&list=PLUS3uVC08ZaqVEGFkl_dS_3FUzILkOIzA): Jacob Thornton, Code Genius `42:07`
1. [**Inline Styles Are About to Kill CSS**](https://www.youtube.com/watch?v=NoaxsCi13yQ&list=PLUS3uVC08ZaqVEGFkl_dS_3FUzILkOIzA): Colin Megill, CSSConf US `36:11`
1. [**Let's Talk About Our CSS**](https://www.youtube.com/watch?v=NHpSmJrEvRQ&list=PLUS3uVC08ZaqVEGFkl_dS_3FUzILkOIzA): Michelle Bu, TXJS `18:11`
1. [**CSS for Software Engineers for CSS Developers**](https://vimeo.com/140641366): Harry Roberts, SmashingConf Freiburg `51:14`
1. [**Photoshop Is Dead!: Editing Images in CSS**](https://www.youtube.com/watch?v=LY65F2e4B5w&list=PLUS3uVC08ZaqVEGFkl_dS_3FUzILkOIzA): Una Kravets, CSSConf EU `28:42`
1. [**Enhancing Responsiveness With Flexbox**](https://www.youtube.com/watch?v=_98SE8WUvLk&index=10&list=PL37ZVnwpeshHoV6GgvG9WWAP6rjnEdAs9): Zoe M. Gillenwater, CSSConf EU `37:13`
1. [**Move Slow and Fix Things**](https://www.youtube.com/watch?v=zmjfh099zYg&list=PLUS3uVC08ZaqVEGFkl_dS_3FUzILkOIzA): Daniel Eden, dotCSS `15:06`

### 2014

1. [**What Is a CSS Framework Anyway?**](https://vimeo.com/95734680): Harry Roberts, Industry Conf `48:48`
1. [**CSS Is a Mess**](https://vimeo.com/99877232): Jonathan Snook, Beyond Tellerand `53:49`
1. [**10 Commandments for Efficient CSS Architecture**](https://www.youtube.com/watch?v=FYcu-wWrNqo&list=PLUS3uVC08ZaqVEGFkl_dS_3FUzILkOIzA): Kushagra Gour, CSSConf Asia `35:55`
1. [**Slaying the Dragon: How to Refactor CSS for Maintainability**](https://vimeo.com/100501790): Alicia Liu, Front-Trends `33:21`
1. [**CSS in Your Pocket - Mobile CSS Tips from the Trenches**](https://www.youtube.com/watch?v=vBHt61yDO9U&list=PLUS3uVC08ZaqVEGFkl_dS_3FUzILkOIzA): Angelina Fabbro, CSSConf US `34:19`
1. [**Styling and Animating Scalable Vector Graphics with CSS**](https://www.youtube.com/watch?v=lf7L8X6ZBu8&list=PLUS3uVC08ZaqVEGFkl_dS_3FUzILkOIzA): Sara Soueidan, CSSConf EU `29:16`
1. [**Play Nice With CSS Tools and Methodologies**](https://www.youtube.com/watch?v=-bZSTMLqf8Q&list=PLUS3uVC08ZaqVEGFkl_dS_3FUzILkOIzA): Brad Westfall, HTML5DevConf `42:47`
1. [**Build Scalable, Automated CSS**](https://www.youtube.com/watch?v=Tk_0qYEFtAY&list=PLUS3uVC08ZaqVEGFkl_dS_3FUzILkOIzA): Christian Lilley, CSSConf Asia `48:47`
1. [**CSS and the Critical Path**](https://www.youtube.com/watch?v=_0Fk85to6hA&list=PLUS3uVC08ZaqVEGFkl_dS_3FUzILkOIzA): Patrick Hamann, CSSConf EU `33:42`
1. [**All the Right Moves: How to Put Your UI in Motion**](http://new.livestream.com/accounts/6779986/events/2928486/videos/51426837): Val Head, Multi-Mania `45:49`
1. [**Present and Future of CSS Layout**](https://vimeo.com/98746172): Tab Atkins, CSS Day `49:31`
1. [**Thinking Beyond "Scalable CSS"**](https://www.youtube.com/watch?v=L8w3v9m6G04&list=PLUS3uVC08ZaqVEGFkl_dS_3FUzILkOIzA): Nicolas Gallagher, dotCSS `28:46`
1. [**Web Components & the Future of CSS**](https://www.youtube.com/watch?v=QHxrr6Q82yI&list=PLUS3uVC08ZaqVEGFkl_dS_3FUzILkOIzA): Philip Walton, SFHTML5 `40:02`
1. [**CSS Performance Tooling**](https://www.youtube.com/watch?v=FEs2jgZBaQA&list=PLUS3uVC08ZaqVEGFkl_dS_3FUzILkOIzA): Addy Osmani, CSSConf EU `46:27`
1. [**3.14 Things I Didn’t Know About CSS**](https://vimeo.com/100264064): Mathias Bynens, CSS Day `45:35`
1. [**Effortless Style**](http://vimeo.com/101718785): Heydon Pickering, CSS Day `49:51`

### 2013

1. [**When Bootstrap Attacks**](https://www.youtube.com/watch?v=xbpnqbM6cRk&list=PLUS3uVC08ZaqVEGFkl_dS_3FUzILkOIzA): Pamela Fox, CSSConf US `28:48`
1. [**CSS in the 4th Dimension**](https://www.youtube.com/watch?v=NTJUFQmHbvc&list=PLUS3uVC08ZaqVEGFkl_dS_3FUzILkOIzA): Lea Verou, JSConf Asia `44:49`
1. [**Automated CSS Testing**](https://www.youtube.com/watch?v=2PU6JX4S7zI&list=PLUS3uVC08ZaqVEGFkl_dS_3FUzILkOIzA): Jakob Mattsson, JSConf Asia `42:07`
1. [**CSSConf EU Keynote**](https://www.youtube.com/watch?v=ue-Z_HxS3cc&list=PLUS3uVC08ZaqVEGFkl_dS_3FUzILkOIzA): Nicole Sullivan, CSSConf EU `20:57`
1. [**CSS Application Architecture**](https://vimeo.com/74359951): Nicolas Gallagher, SmashingConf Freiburg `38:36`
1. [**Realigning & Refactoring UI**](https://www.youtube.com/watch?v=I82ytAWxzrI&list=PLUS3uVC08ZaqVEGFkl_dS_3FUzILkOIzA): Jina Bolton, SassConf `48:08`
1. [**Normalizing Designs for Better Quality CSS**](https://www.youtube.com/watch?v=ldx4ZFxMEeo&list=PLUS3uVC08ZaqVEGFkl_dS_3FUzILkOIzA): Harry Roberts, CSSConf EU `43:40`
1. [**Automating the Removal of Unused CSS**](https://www.youtube.com/watch?v=833xr1MyE30&list=PLUS3uVC08ZaqVEGFkl_dS_3FUzILkOIzA): Addy Osmani, Velocity Europe Conference `5:57`
1. [**The Humble Border-Radius**](https://www.youtube.com/watch?v=2iFw2GCOPj0&list=PLUS3uVC08ZaqVEGFkl_dS_3FUzILkOIzA): Lea Verou, Future of Web Design `37:07`
1. [**Sass and OOCSS Sitting in a Tree K-I-S-S-I-N-G**](https://vimeo.com/66039168): Nicole Sullivan, TXJS `27:50`
1. [**Architecting Scalable CSS**](https://vimeo.com/70041549): Harry Roberts, Beyond Tellerand `41:57`
1. [**More CSS Secrets: Another 10 Things You May Not Know about CSS**](https://www.youtube.com/watch?v=3ikye7Qc7Ak&list=PLUS3uVC08ZaqVEGFkl_dS_3FUzILkOIzA): Lea Verou, W3Conf `60:39`

### 2012

1. [**Open Source Tools and Libraries for Designers**](https://www.youtube.com/watch?v=hFdbE6T9QGc&list=PLUS3uVC08ZaqVEGFkl_dS_3FUzILkOIzA): Julie Ann Horvath, HTML5DevConf `29:39`
1. [**GitHub's CSS Performance**](https://vimeo.com/54990931): Jon Rohan, CSS Dev Conf `40:50`

### 2010

1. [**Handcrafted CSS**](https://vimeo.com/17091905): Dan Cederholm, Build Conference `44:29`
1. [**The Top 5 Mistakes of Massive CSS**](https://www.youtube.com/watch?v=j6sAm7CLoCQ): Nicole Sullivan, Build Conference `37:53`


text:
# Project-wide Gradle settings.
# IDE (e.g. Android Studio) users:
# Gradle settings configured through the IDE *will override*
# any settings specified in this file.
# For more details on how to configure your build environment visit
# http://www.gradle.org/docs/current/userguide/build_environment.html
# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8
# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
# org.gradle.parallel=true
# AndroidX package structure to make it clearer which packages are bundled with the
# Android operating system, and which are packaged with your app"s APK
# https://developer.android.com/topic/libraries/support-library/androidx-rn
android.useAndroidX=true

repo_name: DrKLO/TelegramStickersImport

repo_language: Java


text:
@if "%DEBUG%" == "" @echo off
@rem ##########################################################################
@rem
@rem  Gradle startup script for Windows
@rem
@rem ##########################################################################

@rem Set local scope for the variables with windows NT shell
if "%OS%"=="Windows_NT" setlocal

set DIRNAME=%~dp0
if "%DIRNAME%" == "" set DIRNAME=.
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%

@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
set DEFAULT_JVM_OPTS=

@rem Find java.exe
if defined JAVA_HOME goto findJavaFromJavaHome

set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1
if "%ERRORLEVEL%" == "0" goto init

echo.
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.

goto fail

:findJavaFromJavaHome
set JAVA_HOME=%JAVA_HOME:"=%
set JAVA_EXE=%JAVA_HOME%/bin/java.exe

if exist "%JAVA_EXE%" goto init

echo.
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.

goto fail

:init
@rem Get command-line arguments, handling Windows variants

if not "%OS%" == "Windows_NT" goto win9xME_args

:win9xME_args
@rem Slurp the command line arguments.
set CMD_LINE_ARGS=
set _SKIP=2

:win9xME_args_slurp
if "x%~1" == "x" goto execute

set CMD_LINE_ARGS=%*

:execute
@rem Setup the command line

set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar

@rem Execute Gradle
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%

:end
@rem End local scope for the variables with windows NT shell
if "%ERRORLEVEL%"=="0" goto mainEnd

:fail
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
rem the _cmd.exe /c_ return code!
if  not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
exit /b 1

:mainEnd
if "%OS%"=="Windows_NT" endlocal

:omega