Metadata-Version: 2.1
Name: Flask-OASSchema
Version: 0.9.10
Summary: Flask extension for validating JSON requests
Home-page: https://github.com/IlyaSukhanov/flask-oasschema
Author: Ilya Sukhanov
Author-email: ilya@sukhanov.net
License: MIT
Platform: any
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Web Environment
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Dist: Flask (>=0.9)
Requires-Dist: jsonschema (>=1.1.0)
Requires-Dist: future (>=0.16.0)
Provides-Extra: testing
Requires-Dist: flake8 ; extra == 'testing'
Requires-Dist: pytest ; extra == 'testing'
Requires-Dist: pyflakes ; extra == 'testing'
Requires-Dist: pytest-cov ; extra == 'testing'
Requires-Dist: coverage ; extra == 'testing'

Flask-OASSchema
================

JSON request validation for Flask applications using a JSON Schema specified in a `OpenAPI Specification <https://github.com/OAI/OpenAPI-Specification>`_ (also know as OAS and Swagger).

Validating schema of passed object provides a level of confidence of correctness of data directly proportional to schema strictness. With a good schema, it maybe be possible to use JSON-dict like object as first order models without having to convert them into trusted python objects. Reducing amount of code that needs to be maintained.

The `tests <test.py>`_ provide a succinct example of usage as well as an example `OAS schema file <schemas/oas.json>`_. But at high level usage looks as follows::


    from flask import Flask
    from flask_oasschema import OASSchema, validate_request

    # Configure application
    app = Flask(__name__)

    # Specify path to the OAS schema file, in this case schemas/oas.json of
    # project firectory
    app.config['OAS_FILE'] = os.path.join(
        app.root_path,
        'schemas',
        'oas.json'
    )

    # Initialize validator
    jsonschema = OASSchema(app)

    # Decorate endpoint with @validate_request()
    @app.route('/books/<isbn>', methods=['POST'])
    @validate_request()
    def books(isbn):
        return 'success'

Installation
------------

This library is available through `PyPI <https://pypi.python.org/pypi>`_ as `Flask-OASSchema <https://pypi.python.org/pypi/Flask-OASSchema/0.9.1>`_ and as such can be installed with::

    pip install Flask-OASSchema


Credit
------

This project is a fork of `Matt Wright's <https://github.com/mattupstate>`_ project `Flask-JsonSchema <https://github.com/mattupstate/flask-jsonschema>`_ and thus borrows ideas and code. Difference being that Flask-OASSchema works only with OAS (Swagger) style schema spec as opposed to raw json-schema. This allows Flask-OASSchema to locate schema corresponding to endpoint and method without explicit per endpoint configuration.

Authors:
`Dan Baumann <https://github.com/dbaumann>`_
`Thanavath Jaroenvanit <https://github.com/Thanavath>`_


