summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--python-openapi2jsonschema.spec409
-rw-r--r--sources1
3 files changed, 411 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index e69de29..34521cb 100644
--- a/.gitignore
+++ b/.gitignore
@@ -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
diff --git a/sources b/sources
new file mode 100644
index 0000000..dee6d83
--- /dev/null
+++ b/sources
@@ -0,0 +1 @@
+64ac3dc59f474ca850c272f56b00c10c openapi2jsonschema-0.9.1.tar.gz