Skip to main content

A utility to extract JSON Schema from a valid OpenAPI specification

Project description

openapi2jsonschema2

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

Forked and updated from openapi2jsonschema. The original project does not appear to be maintained. All credit to the original authors.

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

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

pip install openapi2jsonschema2

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 openapi2jsonschema2 tool at a URL containing a JSON (or YAML) OpenAPI definition like so:

openapi2jsonschema2 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:

$ openapi2jsonschema2 --help
Usage: openapi2jsonschema2 [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 use-case 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

openapi2jsonschema2-1.1.35.tar.gz (8.2 kB view details)

Uploaded Source

Built Distribution

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

openapi2jsonschema2-1.1.35-py3-none-any.whl (10.3 kB view details)

Uploaded Python 3

File details

Details for the file openapi2jsonschema2-1.1.35.tar.gz.

File metadata

  • Download URL: openapi2jsonschema2-1.1.35.tar.gz
  • Upload date:
  • Size: 8.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.2.1 CPython/3.14.2 Linux/5.15.0-1098-azure

File hashes

Hashes for openapi2jsonschema2-1.1.35.tar.gz
Algorithm Hash digest
SHA256 9350c3bb9c8334145aa2a3408f24f86123489312d99b73435bc8c75a3315b63b
MD5 970eb4adbff93f5bbb200dbfbf1713f3
BLAKE2b-256 d69e5eb65b5f10560a68656727d65c9a8cef3ee09aaefa1f3b98a0c873fb5f3a

See more details on using hashes here.

File details

Details for the file openapi2jsonschema2-1.1.35-py3-none-any.whl.

File metadata

  • Download URL: openapi2jsonschema2-1.1.35-py3-none-any.whl
  • Upload date:
  • Size: 10.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.2.1 CPython/3.14.2 Linux/5.15.0-1098-azure

File hashes

Hashes for openapi2jsonschema2-1.1.35-py3-none-any.whl
Algorithm Hash digest
SHA256 662d4801cd7b17c182b045e85ae3495121c2564750ee04def91c0dba5e1f3218
MD5 09af4bebd6973f313aa5b3ebf23fb85e
BLAKE2b-256 9e12da09bdb01ff8526958a31032a753bc9522c363ed7063d1a3457c9188ff8e

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