Skip to main content
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 Specification v3.0.0.

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:

from openapi_core import create_spec

spec = create_spec(spec_dict)

Now you can use it to validate requests

from openapi_core.shortcuts import RequestValidator

validator = RequestValidator(spec)
result = validator.validate(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 dictionary with path, query, cookies and headers parameters
validated_params = result.parameters

# get body
validated_body = result.body

or use shortcuts for simple validation

from openapi_core import validate_parameters, validate_body

validated_params = validate_parameters(spec, request)
validated_body = validate_body(spec, request)

Request object should implement BaseOpenAPIRequest interface. You can use FlaskOpenAPIRequest a Flask/Werkzeug request wrapper implementation:

from openapi_core.shortcuts import RequestValidator
from openapi_core.wrappers.flask import FlaskOpenAPIRequest

openapi_request = FlaskOpenAPIRequest(flask_request)
validator = RequestValidator(spec)
result = validator.validate(openapi_request)

or specify request wrapper class for shortcuts

from openapi_core import validate_parameters, validate_body

validated_params = validate_parameters(
    spec, request, wrapper_class=FlaskOpenAPIRequest)
validated_body = validate_body(
    spec, request, wrapper_class=FlaskOpenAPIRequest)

You can also validate responses

from openapi_core.shortcuts import ResponseValidator

validator = ResponseValidator(spec)
result = validator.validate(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

or use shortcuts for simple validation

from openapi_core import validate_data

validated_data = validate_data(spec, request, response)

Response object should implement BaseOpenAPIResponse interface. You can use FlaskOpenAPIResponse a Flask/Werkzeug response wrapper implementation:

from openapi_core.shortcuts import ResponseValidator
from openapi_core.wrappers.flask import FlaskOpenAPIResponse

openapi_response = FlaskOpenAPIResponse(flask_response)
validator = ResponseValidator(spec)
result = validator.validate(openapi_request, openapi_response)

or specify response wrapper class for shortcuts

from openapi_core import validate_parameters, validate_body

validated_data = validate_data(
    spec, request, response, response_wrapper_class=FlaskOpenAPIResponse)

Download files

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

Source Distribution

fixed-openapi-core-0.12.0.tar.gz (23.7 kB view details)

Uploaded Source

File details

Details for the file fixed-openapi-core-0.12.0.tar.gz.

File metadata

  • Download URL: fixed-openapi-core-0.12.0.tar.gz
  • Upload date:
  • Size: 23.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: Python-urllib/3.6

File hashes

Hashes for fixed-openapi-core-0.12.0.tar.gz
Algorithm Hash digest
SHA256 327312423484b7c310b64da74778d3002cb5571d901de128b1965c1cd3c57b7a
MD5 68d3d1b791495949c2d0e7b359dbdb9f
BLAKE2b-256 55d2fdfaede58a3fd328eb4eb04dc4331ec717224c0c08248f899d5ea0d0f918

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.12.0 This release

1 file

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page