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
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 shown below:
#!/bin/bash -xe
# This script uses openapi2jsonschema to generate a set of JSON schemas
for
# the specified Kubernetes versions in three different flavours:
#
# X.Y.Z - URL referenced based on the specified GitHub repository
# X.Y.Z-standalone - de-referenced schemas, more useful as standalone
documents
# X.Y.Z-local - relative references, useful to avoid the network
dependency
REPO="garethr/kubernetes=json-schema"
declare -a arr=(1.6.6
1.6.5
1.6.4
1.6.3
1.6.2
1.6.1
1.6.0
1.5.6
1.5.4
1.5.3
1.5.2
1.5.1
1.5.0
)
for version in "${arr[@]}"
do
schema=https://raw.githubusercontent.com/kubernetes/kubernetes/v${version}/api/openapi-spec/swagger.json
prefix=https://raw.githubusercontent.com/${REPO}/master/v${version}/_definitions.json
openapi2jsonschema -o "${version}-standalone" --stand-alone "${schema}"
openapi2jsonschema -o "${version}-local" "${schema}"
openapi2jsonschema -o "${version}"" --prefix "${prefix}" "${schema}"
done
The output from running this script can be seen in the accompanying garethr/kubernetes-json-schema.
Metadata
Release files for openapi2jsonschema 0.9.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| openapi2jsonschema-0.9.1.tar.gz | 7.1 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| openapi2jsonschema-0.9.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 15.4 kB
Release files / openapi2jsonschema-0.9.1.tar.gz
| Download URL | openapi2jsonschema-0.9.1.tar.gz |
|---|---|
| Size | 7.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
49df4851b56ec4fdd14878a92d48f266dde4d8b76e41fdfe36565a35cc1f3811
|
|
BLAKE2b-256 checksum How to use checksums |
60e9ab7d0ee2f18ac7c5bd3c7108785b13366fe62929312e9464afe44746c049
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/0.12.16 CPython/3.7.4 Darwin/18.7.0
|
Release files / openapi2jsonschema-0.9.1-py3-none-any.whl
| Download URL | openapi2jsonschema-0.9.1-py3-none-any.whl |
|---|---|
| Size | 8.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ee70245ce1af71d0d34f7fc5a349fccfe1a9ac50b44002e8bbfa8890e8c7e9ed
|
|
BLAKE2b-256 checksum How to use checksums |
292bed3e4960b16bbdc4a360518de8f46b223632a0e783f626042418e2cce223
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/0.12.16 CPython/3.7.4 Darwin/18.7.0
|
Security for openapi2jsonschema 0.9.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.