Skip to main content

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

Project description

https://img.shields.io/pypi/v/openapi-core.svg https://travis-ci.org/p1c2u/openapi-core.svg?branch=master https://img.shields.io/codecov/c/github/p1c2u/openapi-core/master.svg?style=flat https://img.shields.io/pypi/pyversions/openapi-core.svg https://img.shields.io/pypi/format/openapi-core.svg https://img.shields.io/pypi/status/openapi-core.svg

About

Openapi-core is a Python library that adds client-side and server-side support for the OpenAPI v3.0 and OpenAPI v3.1 specification.

Key features

  • Validation of requests and responses

  • Schema casting and unmarshalling

  • Media type and parameters deserialization

  • Security providers (API keys, Cookie, Basic and Bearer HTTP authentications)

  • Custom deserializers and formats

  • Integration with libraries and frameworks

Documentation

Check documentation to see more details about the features. All documentation is in the “docs” directory and online at openapi-core.readthedocs.io

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/p1c2u/openapi-core.git#egg=openapi_core

Usage

Firstly create your specification object.

from openapi_core import Spec

spec = Spec.from_file_path('openapi.json')

Now you can use it to validate against requests and/or responses.

Request

Use validate_request function to validate request against a given spec.

from openapi_core import validate_request

# raise error if request is invalid
result = validate_request(request, spec=spec)

Request object should implement OpenAPI Request protocol (See Integrations).

(For OpenAPI v3.1) Use the same function to validate webhook request against a given spec.

# raise error if request is invalid
result = validate_request(webhook_request, spec=spec)

Webhook request object should implement OpenAPI WebhookRequest protocol (See Integrations).

Retrieve request data from validation result

# get parameters object with path, query, cookies and headers parameters
validated_params = result.parameters
# or specific parameters
validated_path_params = result.parameters.path

# get body
validated_body = result.body

# get security data
validated_security = result.security

Response

Use validate_response function to validate response against a given spec.

from openapi_core import validate_response

# raise error if response is invalid
result = validate_response(request, response, spec=spec)

Response object should implement OpenAPI Response protocol (See Integrations).

(For OpenAPI v3.1) Use the same function to validate response from webhook request against a given spec.

# raise error if request is invalid
result = validate_response(webhook_request, response, spec=spec)

Retrieve response data from validation result

# get headers
validated_headers = result.headers

# get data
validated_data = result.data

In order to explicitly validate a:

  • OpenAPI 3.0 spec, import V30RequestValidator or V30ResponseValidator

  • OpenAPI 3.1 spec, import V31RequestValidator or V31ResponseValidator or V31WebhookRequestValidator or V31WebhookResponseValidator

from openapi_core import V31ResponseValidator

result = validate_response(request, response, spec=spec, cls=V31ResponseValidator)

You can also explicitly import V3RequestValidator or V3ResponseValidator which is a shortcut to the latest v3 release.

Project details


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.17.0a1.tar.gz (39.8 kB view hashes)

Uploaded Source

Built Distribution

openapi_core-0.17.0a1-py3-none-any.whl (73.4 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page