diff options
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | python-openapi2jsonschema.spec | 409 | ||||
-rw-r--r-- | sources | 1 |
3 files changed, 411 insertions, 0 deletions
@@ -0,0 +1 @@ +/openapi2jsonschema-0.9.1.tar.gz diff --git a/python-openapi2jsonschema.spec b/python-openapi2jsonschema.spec new file mode 100644 index 0000000..e64c073 --- /dev/null +++ b/python-openapi2jsonschema.spec @@ -0,0 +1,409 @@ +%global _empty_manifest_terminate_build 0 +Name: python-openapi2jsonschema +Version: 0.9.1 +Release: 1 +Summary: A utility to extract JSON Schema from a valid OpenAPI specification +License: Apache-2.0 +URL: https://github.com/garethr/openapi2jsonschema +Source0: https://mirrors.nju.edu.cn/pypi/web/packages/60/e9/ab7d0ee2f18ac7c5bd3c7108785b13366fe62929312e9464afe44746c049/openapi2jsonschema-0.9.1.tar.gz +BuildArch: noarch + +Requires: python3-jsonref +Requires: python3-pyyaml +Requires: python3-click +Requires: python3-colorama + +%description +# openapi2jsonschema + +A utility to extract [JSON Schema](http://json-schema.org/) from a +valid [OpenAPI](https://www.openapis.org/) 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: + +```bash +#!/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](https://github.com/garethr/kubernetes-json-schema). + + + + + +%package -n python3-openapi2jsonschema +Summary: A utility to extract JSON Schema from a valid OpenAPI specification +Provides: python-openapi2jsonschema +BuildRequires: python3-devel +BuildRequires: python3-setuptools +BuildRequires: python3-pip +%description -n python3-openapi2jsonschema +# openapi2jsonschema + +A utility to extract [JSON Schema](http://json-schema.org/) from a +valid [OpenAPI](https://www.openapis.org/) 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: + +```bash +#!/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](https://github.com/garethr/kubernetes-json-schema). + + + + + +%package help +Summary: Development documents and examples for openapi2jsonschema +Provides: python3-openapi2jsonschema-doc +%description help +# openapi2jsonschema + +A utility to extract [JSON Schema](http://json-schema.org/) from a +valid [OpenAPI](https://www.openapis.org/) 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: + +```bash +#!/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](https://github.com/garethr/kubernetes-json-schema). + + + + + +%prep +%autosetup -n openapi2jsonschema-0.9.1 + +%build +%py3_build + +%install +%py3_install +install -d -m755 %{buildroot}/%{_pkgdocdir} +if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi +if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi +if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi +if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi +pushd %{buildroot} +if [ -d usr/lib ]; then + find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/lib64 ]; then + find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/bin ]; then + find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst +fi +if [ -d usr/sbin ]; then + find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst +fi +touch doclist.lst +if [ -d usr/share/man ]; then + find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst +fi +popd +mv %{buildroot}/filelist.lst . +mv %{buildroot}/doclist.lst . + +%files -n python3-openapi2jsonschema -f filelist.lst +%dir %{python3_sitelib}/* + +%files help -f doclist.lst +%{_docdir}/* + +%changelog +* Fri May 05 2023 Python_Bot <Python_Bot@openeuler.org> - 0.9.1-1 +- Package Spec generated @@ -0,0 +1 @@ +64ac3dc59f474ca850c272f56b00c10c openapi2jsonschema-0.9.1.tar.gz |