Skip to main content

A utility to extract JSON Schema from a valid OpenAPI specification

Project description

This is a fork of openapi2jsonschema that can be installed for modern Python. It still exposes the same interface, and the executable is still called openapi2jsonschema.


openapi2jsonschema

A utility to extract JSON Schema from a valid OpenAPI specification.

Why

OpenAPI contains a list of type definitions using a superset of JSON Schema. These are used internally by various OpenAPI compatible tools. I found myself however wanting to use those schemas separately, outside existing OpenAPI tooling. Generating separate schemas for types defined in OpenAPI allows for all sorts of indepent tooling to be build which can be easily maintained, because the canonical definition is shared.

Installation

openapi2jsonschema is implemented in Python. Assuming you have a Python intepreter and pip installed you should be able to install with:

pip install openapi2jsonschema-ng

This has not yet been widely tested and is currently in a works on my machine state.

Usage

The simplest usage is to point the openapi2jsonschema tool at a URL containing a JSON (or YAML) OpenAPI definition like so:

openapi2jsonschema https://raw.githubusercontent.com/kubernetes/kubernetes/master/api/openapi-spec/swagger.json

This will generate a set of schemas in a schemas directory. The tool provides a number of options to modify the output:

$ openapi2jsonschema --help
Usage: openapi2jsonschema [OPTIONS] SCHEMA

  Converts a valid OpenAPI specification into a set of JSON Schema files

Options:
  -o, --output PATH  Directory to store schema files
  -p, --prefix TEXT  Prefix for JSON references (only for OpenAPI versions
                     before 3.0)
  --stand-alone      Whether or not to de-reference JSON schemas
  --kubernetes       Enable Kubernetes specific processors
  --strict           Prohibits properties not in the schema
                     (additionalProperties: false)
  --help             Show this message and exit.

Example

My specific usecase was being able to validate a Kubernetes configuration file without a Kubernetes client like kubectl and without the server. For that I have a bash script, available here.

The output from running this script can be seen in the accompanying instrumenta/kubernetes-json-schema.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

openapi2jsonschema_ng-0.9.0.tar.gz (5.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

openapi2jsonschema_ng-0.9.0-py3-none-any.whl (8.1 kB view details)

Uploaded Python 3

File details

Details for the file openapi2jsonschema_ng-0.9.0.tar.gz.

File metadata

  • Download URL: openapi2jsonschema_ng-0.9.0.tar.gz
  • Upload date:
  • Size: 5.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.6.1 CPython/3.10.12 Linux/6.2.0-10022-tuxedo

File hashes

Hashes for openapi2jsonschema_ng-0.9.0.tar.gz
Algorithm Hash digest
SHA256 adfa05ca96fb62ee9335d2a668644a2d9c9d9722cb4ccdad4f31b077e089fe7f
MD5 2b3b139c2a889208f7ef12ae1c8458b7
BLAKE2b-256 80815802c989a00031c9912062bcbaa696826a2be366cfe4d5f16b9542b67e99

See more details on using hashes here.

File details

Details for the file openapi2jsonschema_ng-0.9.0-py3-none-any.whl.

File metadata

File hashes

Hashes for openapi2jsonschema_ng-0.9.0-py3-none-any.whl
Algorithm Hash digest
SHA256 566925f0146330f7682519c3830bfeccfc4f550a0233938156ae2b0a68131a56
MD5 aa133bea76af1b90f3327a1c12e6ccce
BLAKE2b-256 fc112a87ac20359853893f73e3c5025ce314860c5d01014fb1e062a832a80e34

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page