Metadata-Version: 2.3 Name: openapi-core Version: 0.19.5 Summary: client-side and server-side support for the OpenAPI Specification v3 License: BSD-3-Clause Keywords: openapi,swagger,schema Author: Artur Maciag Author-email: maciag.artur@gmail.com Requires-Python: >=3.8.0,<4.0.0 Classifier: Development Status :: 4 - Beta Classifier: Intended Audience :: Developers Classifier: License :: OSI Approved :: BSD License Classifier: Operating System :: OS Independent Classifier: Programming Language :: Python :: 3 Classifier: Programming Language :: Python :: 3.8 Classifier: Programming Language :: Python :: 3.9 Classifier: Programming Language :: Python :: 3.10 Classifier: Programming Language :: Python :: 3.11 Classifier: Programming Language :: Python :: 3.12 Classifier: Programming Language :: Python :: 3.13 Classifier: Topic :: Software Development :: Libraries Classifier: Topic :: Software Development :: Libraries :: Python Modules Classifier: Typing :: Typed Provides-Extra: aiohttp Provides-Extra: django Provides-Extra: falcon Provides-Extra: fastapi Provides-Extra: flask Provides-Extra: requests Provides-Extra: starlette Requires-Dist: aiohttp (>=3.0) ; extra == "aiohttp" Requires-Dist: aioitertools (>=0.11,<0.13) ; extra == "starlette" Requires-Dist: django (>=3.0) ; extra == "django" Requires-Dist: falcon (>=3.0) ; extra == "falcon" Requires-Dist: fastapi (>=0.111,<0.116) ; extra == "fastapi" Requires-Dist: flask ; extra == "flask" Requires-Dist: isodate Requires-Dist: jsonschema (>=4.18.0,<5.0.0) Requires-Dist: jsonschema-path (>=0.3.1,<0.4.0) Requires-Dist: more-itertools Requires-Dist: multidict (>=6.0.4,<7.0.0) ; extra == "aiohttp" Requires-Dist: openapi-schema-validator (>=0.6.0,<0.7.0) Requires-Dist: openapi-spec-validator (>=0.7.1,<0.8.0) Requires-Dist: parse Requires-Dist: requests ; extra == "requests" Requires-Dist: starlette (>=0.26.1,<0.45.0) ; extra == "starlette" Requires-Dist: typing-extensions (>=4.8.0,<5.0.0) Requires-Dist: werkzeug (<3.1.2) Project-URL: Documentation, https://openapi-core.readthedocs.io Project-URL: Repository, https://github.com/python-openapi/openapi-core Description-Content-Type: text/markdown # openapi-core Package version Continuous Integration Tests coverage Python versions Package format Development status ## About Openapi-core is a Python library that provides client-side and server-side support for the [OpenAPI v3.0](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.3.md) and [OpenAPI v3.1](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md) specifications. ## Key features - **Validation** and **unmarshalling** of request and response data (including webhooks) - **Integration** with popular libraries (Requests, Werkzeug) and frameworks (Django, Falcon, Flask, Starlette) - Customization with media type **deserializers** and format **unmarshallers** - **Security** data providers (API keys, Cookie, Basic, and Bearer HTTP authentications) ## Documentation Check documentation to see more details about the features. All documentation is in the "docs" directory and online at [openapi-core.readthedocs.io](https://openapi-core.readthedocs.io) ## Installation Recommended way (via pip): ``` console pip install openapi-core ``` Alternatively you can download the code and install from the repository: ``` console pip install -e git+https://github.com/python-openapi/openapi-core.git#egg=openapi_core ``` ## First steps First, create your OpenAPI object. ``` python from openapi_core import OpenAPI openapi = OpenAPI.from_file_path('openapi.json') ``` Now you can use it to validate and unmarshal against requests and/or responses. ``` python # raises an error if the request is invalid result = openapi.unmarshal_request(request) ``` Retrieve validated and unmarshalled request data. ``` python # get parameters path_params = result.parameters.path query_params = result.parameters.query cookies_params = result.parameters.cookies headers_params = result.parameters.headers # get body body = result.body # get security data security = result.security ``` The request object should implement the OpenAPI Request protocol. Check [Integrations](https://openapi-core.readthedocs.io/en/latest/integrations.html) to find officially supported implementations. For more details read about the [Unmarshalling](https://openapi-core.readthedocs.io/en/latest/unmarshalling.html) process. If you just want to validate your request/response data without unmarshalling, read about [Validation](https://openapi-core.readthedocs.io/en/latest/validation.html) instead. ## Related projects - [openapi-spec-validator](https://github.com/python-openapi/openapi-spec-validator) : A Python library that validates OpenAPI Specs against the OpenAPI 2.0 (aka Swagger), OpenAPI 3.0, and OpenAPI 3.1 specification. The validator aims to check for full compliance with the Specification. - [openapi-schema-validator](https://github.com/python-openapi/openapi-schema-validator) : A Python library that validates schema against the OpenAPI Schema Specification v3.0 and OpenAPI Schema Specification v3.1. - [bottle-openapi-3](https://github.com/cope-systems/bottle-openapi-3) : OpenAPI 3.0 Support for the Bottle Web Framework - [pyramid_openapi3](https://github.com/niteoweb/pyramid_openapi3) : Pyramid addon for OpenAPI3 validation of requests and responses. - [tornado-openapi3](https://github.com/correl/tornado-openapi3) : Tornado OpenAPI 3 request and response validation library. ## License The project is under the terms of the BSD 3-Clause License.