All Projects → cloudflare → Json Schema Tools

cloudflare / Json Schema Tools

Licence: bsd-3-clause
Packages for working with JSON Schema and JSON Hyper-Schema

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to Json Schema Tools

Restclient
🦄 Simple HTTP and REST client for Unity based on Promises, also supports Callbacks! 🎮
Stars: ✭ 675 (+190.95%)
Mutual labels:  rest-api, rest, rest-client
Vscode Restclient
REST Client Extension for Visual Studio Code
Stars: ✭ 3,289 (+1317.67%)
Mutual labels:  rest-api, rest, rest-client
Github3.py
Hi, I'm a library for interacting with GItHub's REST API in a convenient and ergonomic way. I work on Python 3.6+.
Stars: ✭ 1,029 (+343.53%)
Mutual labels:  rest-api, rest, rest-client
Udash Core
Scala framework for building beautiful and maintainable web applications.
Stars: ✭ 405 (+74.57%)
Mutual labels:  rest-api, rest, rest-client
Ngx Restangular
Restangular for Angular 2 and higher versions
Stars: ✭ 787 (+239.22%)
Mutual labels:  rest-api, rest, rest-client
Farwest
Framework for building RESTful HATEOAS-driven applications.
Stars: ✭ 18 (-92.24%)
Mutual labels:  rest-api, rest, rest-client
Openapi Generator
OpenAPI Generator allows generation of API client libraries (SDK generation), server stubs, documentation and configuration automatically given an OpenAPI Spec (v2, v3)
Stars: ✭ 10,634 (+4483.62%)
Mutual labels:  rest-api, rest, rest-client
Lumen Microservice
Lumen on Docker - Skeleton project with Nginx, MySQL & PHP 7 | Aws ECS, Google Kubernates, Azure Container Engine
Stars: ✭ 183 (-21.12%)
Mutual labels:  rest-api, rest
Apicheck
The DevSecOps toolset for REST APIs
Stars: ✭ 184 (-20.69%)
Mutual labels:  rest-api, rest
Drf Yasg
Automated generation of real Swagger/OpenAPI 2.0 schemas from Django REST Framework code.
Stars: ✭ 2,523 (+987.5%)
Mutual labels:  rest-api, rest
Ngx Resource
Resource (REST) Client for Angular 2
Stars: ✭ 201 (-13.36%)
Mutual labels:  rest-api, rest
Graphql2rest
GraphQL to REST converter: automatically generate a RESTful API from your existing GraphQL API
Stars: ✭ 181 (-21.98%)
Mutual labels:  rest-api, rest
Fshttp
A lightweight F# HTTP library.
Stars: ✭ 181 (-21.98%)
Mutual labels:  rest, rest-client
Swagger Codegen
swagger-codegen contains a template-driven engine to generate documentation, API clients and server stubs in different languages by parsing your OpenAPI / Swagger definition.
Stars: ✭ 13,859 (+5873.71%)
Mutual labels:  rest-api, rest
Storefront Api
Storefront GraphQL API Gateway. Modular architecture. ElasticSearch included. Works great with Magento1, Magento2, Spree, OpenCart, Pimcore and custom backends
Stars: ✭ 180 (-22.41%)
Mutual labels:  rest-api, rest
Jikan Rest
The REST API for Jikan
Stars: ✭ 200 (-13.79%)
Mutual labels:  rest-api, rest
Proteus
Lean, mean, and incredibly fast JVM framework for web and microservice development.
Stars: ✭ 178 (-23.28%)
Mutual labels:  rest-api, rest
Swagger Js
Javascript library to connect to swagger-enabled APIs via browser or nodejs
Stars: ✭ 2,319 (+899.57%)
Mutual labels:  rest-api, rest
Awot
Arduino web server library.
Stars: ✭ 200 (-13.79%)
Mutual labels:  rest-api, rest
Stampede
🦕 Deno REST framework/eco-system
Stars: ✭ 205 (-11.64%)
Mutual labels:  rest-api, rest

JSON Schema Tools

This is a monorepo of packages for working with JSON Schema and JSON Hyper-Schema, built using Lerna and Yarn Workspaces.

The repo includes everything from generic utilities to small applications built on these and other packages.

The packages are intended for general use, so while they may support some Cloudflare extensions to JSON Schema, they should all be usable with schemas that rely only on the standard keywords and features.

Note that these packages have not yet reached a stable interface

Interfaces will change and packages will be refactored until each package reaches a 1.0 status. This will likely occur once JSON Schema draft-08, which will have some very significant new features, is finalized. In particular, the concept of a Schema Vocabulary appears in several locations but is neither well nor consistently managed in the current code. Draft-08 will formalize that concept.

If you are interested in building on these packages, please file an issue indicating what you need to use and we will work to ensure reasonable levels of support as we finalize the interfaces.

The packages

Packages fall into a few categories. Currently, the packages in this repository focus on static manipulation and processing of schemas, in particular for generating API documentation. The following diagram gives an overview of how this and potentially other kinds of static processing work:

A possible json-schema-tools data flow for static schema processing would likely involve the walker and transform packages, which can produce schemas suitable for use in applications such as the Doca API documentation system.

Additional packages will likely add runtime functionality, including automated API testing support based on JSON Hyper-Schema.

@cloudflare/json-schema-walker

json-schema-walker is the most fundamental static schema processing package: it is aware of subschema applicators and uses that knowledge to walk over a schema and make callbacks before and/or after visiting any subschemas.

Most schema transformations work by changing a schema object after its subschemas have been visited, so that all transformations are guaranteed to have already been applied to any subschemas.

There are variants for visiting all schemas including the root, as well as for only visiting subschemas.

@cloudflare/json-schema-transform

json-schema-transform is a collection of utility functions, most of which are either callbacks intended for use with json-schema -walker, or make use of json-schema-walker internally. This package will eventually include transforms for converting one draft to another.

Among other things, this makes replacements for the internals of the deprecated json-schema-example-loader package available outside of Webpack. See json-schema-apidoc-loader for use with Webpack.

@cloudflare/json-hyper-schema

json-hyper-schema is an implementation of the JSON Hyper-Schema specification, supporting both static (currently) and dynamic (in the future) use of Hyper-Schemas. Eventually, we hope to build a fully-featured hyperclient based on this package.

Currently, this just includes some utilities for looking up link description objects and resolving URI Templates from an instance. Some of these utilities are replacements for internals of the deprecated json-schema-example-loader.

@cloudflare/json-schema-test

This package has not yet been created.

Applies schema validation to API requests and responses. This will primarily leverage JSON Hyper-Schema but other utilities such as a Jest matcher for regular schema validation will be included.

Applications and application support

Currently, the only application provided is an API documentation system known as "Doca". This is a refactored and re-designed version of our existing Doca suite

@cloudflare/doca

Scaffolding system to generate API documentation apps.

Replaces the existing doca package, which is now deprecated.

@cloudflare/doca-default-theme

The default UI for documentation apps scaffolded by @cloudflare/doca.

Will eventually fully replace doca-bootstrap-theme, but currently this is a bare-bones display of the processed JSON Schemas. It is provided mainly for debugging purposes and as a starting point for 3rd-party UI themes.

@cloudflare/json-schema-ref-loader

Webpack loader that uses json-schema-transform and other packages to load schemas written in JSON, JSON5, YAML, or JavaScript formats and dereference all $ref occurrences. All referenced schemas are added as dependencies.

Currently this loader can only be used with schemas that do not have any cyclic references as dereferencing is the only option for loading.

Replaces json-schema-loader

@cloudflare/json-schema-apidoc-loader

Webpack loader that uses json-schema-transform and other packages to convert de-referenced (no $refs) into a form suitable for generating documentation, including examples.

Replaces json-schema-example-loader

Installation

Installing and using a single package

Find the package in the workspaces/ directory and open its README.md for documentation.

Installing the monorepo

Please use recent versions of lerna (2+), node (6+) and yarn (v1+). Simply clone the repository and run lerna bootstrap, which will use yarn. A known good version of yarn is included in the scripts directory and configured in this repository's .yarnrc.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].