Skip to main content

client-side and server-side support for the OpenAPI Specification v3

Project description

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 and OpenAPI v3.1 and OpenAPI v3.2 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

Integrations compatibility matrix

Supported Integrations and it's versions:

Integration Version(s) Level
AIOHTTP versions 3.8+ and 3.11+ tracks Low-level request and response classes
Django versions 4, 5, and 6 Middleware, decorator and low level
Falcon version 4 Middleware and low-level classes
FastAPI versions 0.11x, 0.12x, and 0.13x Middleware (low-level via Starlette integration)
Flask versions 2 and 3 View decorator, class-based view, and low-level classes
Requests default dependency set Low-level request, webhook request, and response classes
Starlette versions 0.4x, 0.5x, and 1.x Middleware and low-level classes
Werkzeug default dependency set Low-level request and response classes

Installation

Recommended way (via pip):

pip install openapi-core

Alternatively you can download the code and install from the repository:

pip install -e git+https://github.com/python-openapi/openapi-core.git#egg=openapi_core

First steps

First, create your OpenAPI object.

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.

# raises an error if the request is invalid
result = openapi.unmarshal_request(request)

Retrieve validated and unmarshalled request data.

# 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 to find officially supported implementations.

For more details read about the Unmarshalling process.

If you just want to validate your request/response data without unmarshalling, read about Validation instead.

Related projects

  • openapi-spec-validator : A Python library that validates OpenAPI Specs against the OpenAPI 2.0 (aka Swagger), OpenAPI 3.0, OpenAPI 3.1, and OpenAPI 3.2 specification. The validator aims to check for full compliance with the Specification.
  • openapi-schema-validator : A Python library that validates schema against the OpenAPI Schema Specification v3.0, v3.1, and v3.2.
  • bottle-openapi-3 : OpenAPI 3.0 Support for the Bottle Web Framework
  • pyramid_openapi3 : Pyramid addon for OpenAPI3 validation of requests and responses.
  • tornado-openapi3 : Tornado OpenAPI 3 request and response validation library.

License

The project is under the terms of the BSD 3-Clause License.

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

openapi_core-0.23.1.tar.gz (124.3 kB view details)

Uploaded Source

Built Distribution

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

openapi_core-0.23.1-py3-none-any.whl (115.2 kB view details)

Uploaded Python 3

File details

Details for the file openapi_core-0.23.1.tar.gz.

File metadata

  • Download URL: openapi_core-0.23.1.tar.gz
  • Upload date:
  • Size: 124.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for openapi_core-0.23.1.tar.gz
Algorithm Hash digest
SHA256 8021c9cf5fbb356ea5694c233fbfba0dc7ec595dfbdc1d2b295ac13f3de4fdad
MD5 79d1e517c42d27b9ddac4180f2e02afd
BLAKE2b-256 4707ad02621876c983308abe7bc9604b4d0141fde97fb49fb252ed9af5ad0090

See more details on using hashes here.

Provenance

The following attestation bundles were made for openapi_core-0.23.1.tar.gz:

Publisher: python-publish.yml on python-openapi/openapi-core

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file openapi_core-0.23.1-py3-none-any.whl.

File metadata

  • Download URL: openapi_core-0.23.1-py3-none-any.whl
  • Upload date:
  • Size: 115.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for openapi_core-0.23.1-py3-none-any.whl
Algorithm Hash digest
SHA256 40eda0b6e4c2aa0d0e4fb864e1f461b68bb59c5c41fe154c03fda49bf41d2dc9
MD5 8c0cfeb0c271d0f78af1152507fda19f
BLAKE2b-256 dca17c6ef56641a2c326a211ca7709197b2b9bd91fe02931460faa51d4a8bda1

See more details on using hashes here.

Provenance

The following attestation bundles were made for openapi_core-0.23.1-py3-none-any.whl:

Publisher: python-publish.yml on python-openapi/openapi-core

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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