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. By default, OpenAPI spec version is detected:

from json import load
from openapi_core import Spec

with open('openapi.json', 'r') as spec_file:
   spec_dict = load(spec_file)

spec = Spec.create(spec_dict)

Request

Now you can use it to validate against requests

from openapi_core.validation.request import openapi_request_validator

result = openapi_request_validator.validate(spec, request)

# raise errors if request invalid
result.raise_for_errors()

# get list of errors
errors = result.errors

and unmarshal 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

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

Response

You can also validate against responses

from openapi_core.validation.response import openapi_response_validator

result = openapi_response_validator.validate(spec, request, response)

# raise errors if response invalid
result.raise_for_errors()

# get list of errors
errors = result.errors

and unmarshal response data from validation result

# get headers
validated_headers = result.headers

# get data
validated_data = result.data

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

In order to explicitly validate a:

  • OpenAPI 3.0 spec, import openapi_v30_request_validator or openapi_v30_response_validator

  • OpenAPI 3.1 spec, import openapi_v31_request_validator or openapi_v31_response_validator

from openapi_core.validation.response import openapi_v31_response_validator

result = openapi_v31_response_validator.validate(spec, request, response)

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

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.16.3.tar.gz (35.2 kB view details)

Uploaded Source

Built Distribution

openapi_core-0.16.3-py3-none-any.whl (68.3 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: openapi_core-0.16.3.tar.gz
  • Upload date:
  • Size: 35.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.3.1 CPython/3.11.1 Linux/5.15.0-1024-azure

File hashes

Hashes for openapi_core-0.16.3.tar.gz
Algorithm Hash digest
SHA256 688e6a7234fcc5d08e2c2756b2e148983203aaf34ea82fe530e5498737bc2927
MD5 0d04df9ae0e6d6a6226b5a5fa660d6ad
BLAKE2b-256 9e4e1b1376124720d9bc0a9694b4e73b73ed5ee5fc0cc5901b1d2da5758ebc1c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: openapi_core-0.16.3-py3-none-any.whl
  • Upload date:
  • Size: 68.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.3.1 CPython/3.11.1 Linux/5.15.0-1024-azure

File hashes

Hashes for openapi_core-0.16.3-py3-none-any.whl
Algorithm Hash digest
SHA256 669dd9c90a0cdde60e339cd6fc93e5832aa87683e6702c29b5f119ce34fb2c59
MD5 62be9a716dcf12770d3a303599589633
BLAKE2b-256 c6c1fed24fb47e933cd0881be3e1cbb6d8728f490281a5dc74804b65103245d2

See more details on using hashes here.

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