==============
Flask RestPlus
==============
.. image:: https://secure.travis-ci.org/noirbizarre/flask-restplus.svg?tag=0.13.0
:target: https://travis-ci.org/noirbizarre/flask-restplus?tag=0.13.0
:alt: Build status
.. image:: https://coveralls.io/repos/noirbizarre/flask-restplus/badge.svg?tag=0.13.0
:target: https://coveralls.io/r/noirbizarre/flask-restplus?tag=0.13.0
:alt: Code coverage
.. image:: https://readthedocs.org/projects/flask-restplus/badge/?version=0.13.0
:target: https://flask-restplus.readthedocs.io/en/0.13.0/
:alt: Documentation status
.. image:: https://img.shields.io/pypi/l/flask-restplus.svg
:target: https://pypi.org/project/flask-restplus
:alt: License
.. image:: https://img.shields.io/pypi/pyversions/flask-restplus.svg
:target: https://pypi.org/project/flask-restplus
:alt: Supported Python versions
.. image:: https://badges.gitter.im/Join%20Chat.svg
:alt: Join the chat at https://gitter.im/noirbizarre/flask-restplus
:target: https://gitter.im/noirbizarre/flask-restplus?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge
Flask-RESTPlus is an extension for `Flask`_ that adds support for quickly building REST APIs.
Flask-RESTPlus encourages best practices with minimal setup.
If you are familiar with Flask, Flask-RESTPlus should be easy to pick up.
It provides a coherent collection of decorators and tools to describe your API
and expose its documentation properly using `Swagger`_.
Compatibility
=============
Flask-RestPlus requires Python 2.7 or 3.4+.
Installation
============
You can install Flask-Restplus with pip:
.. code-block:: console
$ pip install flask-restplus
or with easy_install:
.. code-block:: console
$ easy_install flask-restplus
Quick start
===========
With Flask-Restplus, you only import the api instance to route and document your endpoints.
.. code-block:: python
from flask import Flask
from flask_restplus import Api, Resource, fields
app = Flask(__name__)
api = Api(app, version='1.0', title='TodoMVC API',
description='A simple TodoMVC API',
)
ns = api.namespace('todos', description='TODO operations')
todo = api.model('Todo', {
'id': fields.Integer(readOnly=True, description='The task unique identifier'),
'task': fields.String(required=True, description='The task details')
})
class TodoDAO(object):
def __init__(self):
self.counter = 0
self.todos = []
def get(self, id):
for todo in self.todos:
if todo['id'] == id:
return todo
api.abort(404, "Todo {} doesn't exist".format(id))
def create(self, data):
todo = data
todo['id'] = self.counter = self.counter + 1
self.todos.append(todo)
return todo
def update(self, id, data):
todo = self.get(id)
todo.update(data)
return todo
def delete(self, id):
todo = self.get(id)
self.todos.remove(todo)
DAO = TodoDAO()
DAO.create({'task': 'Build an API'})
DAO.create({'task': '?????'})
DAO.create({'task': 'profit!'})
@ns.route('/')
class TodoList(Resource):
'''Shows a list of all todos, and lets you POST to add new tasks'''
@ns.doc('list_todos')
@ns.marshal_list_with(todo)
def get(self):
'''List all tasks'''
return DAO.todos
@ns.doc('create_todo')
@ns.expect(todo)
@ns.marshal_with(todo, code=201)
def post(self):
'''Create a new task'''
return DAO.create(api.payload), 201
@ns.route('/<int:id>')
@ns.response(404, 'Todo not found')
@ns.param('id', 'The task identifier')
class Todo(Resource):
'''Show a single todo item and lets you delete them'''
@ns.doc('get_todo')
@ns.marshal_with(todo)
def get(self, id):
'''Fetch a given resource'''
return DAO.get(id)
@ns.doc('delete_todo')
@ns.response(204, 'Todo deleted')
def delete(self, id):
'''Delete a task given its identifier'''
DAO.delete(id)
return '', 204
@ns.expect(todo)
@ns.marshal_with(todo)
def put(self, id):
'''Update a task given its identifier'''
return DAO.update(id, api.payload)
if __name__ == '__main__':
app.run(debug=True)
Contributors
============
Flask-RESTPlus is brought to you by @noirbizarre. Since early 2019 @SteadBytes,
@a-luna, @j5awry, @ziirish volunteered to help @noirbizarre keep the project up
and running.
Of course everyone is welcome to contribute and we will be happy to review your
PR's or answer to your issues.
Documentation
=============
The documentation is hosted `on Read the Docs <http://flask-restplus.readthedocs.io/en/latest/>`_
.. _Flask: http://flask.pocoo.org/
.. _Swagger: http://swagger.io/
Contribution
============
Want to contribute! That's awesome! Check out `CONTRIBUTING.rst! <https://github.com/noirbizarre/flask-restplus/blob/master/CONTRIBUTING.rst>`_
Changelog
=========
0.13.0 (2019-08-12)
-------------------
- Add new `Wildcard` fields (`#255 <https://github.com/noirbizarre/flask-restplus/pull/255>`_)
- Fix ABC deprecation warnings (`#580 <https://github.com/noirbizarre/flask-restplus/pull/580>`_)
- Fix `@api.expect(..., validate=False)` decorators for an ``Api`` where `validate=True` is set on the constructor (`#609 <https://github.com/noirbizarre/flask-restplus/issues/609>`_, `#610 <https://github.com/noirbizarre/flask-restplus/pull/610>`_)
- Ensure `basePath` is always a path
- Hide Namespaces with all hidden Resources from Swagger documentation
- Per route Swagger documentation for multiple routes on a ``Resource``
0.12.1 (2018-09-28)
-------------------
- Fix missing changelog inprevious release
- Ensure definitions with both `$ref` and description (or other property) output is valid (using `allOf`)
- Added initial specifications schemas and validation support
- Ensure empty enums are not serialized (to have a valid specification)
0.12.0 (2018-09-27)
-------------------
- Fix Namespace decorators (`#475 <https://github.com/noirbizarre/flask-restplus/issues/475>`_)
- Do not serialize empty tags descriptions
- Ensure `consumes` is properly set when using form parameters on classes
- Ensure parameters are not duplicated (`#164 <https://github.com/noirbizarre/flask-restplus/issues/164>`_, `#196 <https://github.com/noirbizarre/flask-restplus/issues/196>`_, `#234 <https://github.com/noirbizarre/flask-restplus/issues/234>`_)
- Publish sources distribution (`#500 <https://github.com/noirbizarre/flask-restplus/issues/500>`_, `#515 <https://github.com/noirbizarre/flask-restplus/issues/515>`_)
- Fix late resources registeration (`#483 <https://github.com/noirbizarre/flask-restplus/issues/483>`_)
- Don't include namespaces without resources to the SWAGGER documentation (`#470 <https://github.com/noirbizarre/flask-restplus/issues/470>`_)
- Add support for checkbox validation input + consistent behavior between inputs and fields. (`#461 <https://github.com/noirbizarre/flask-restplus/issues/461>`_)
- Fix missing `enum34` dependency (`#444 <https://github.com/noirbizarre/flask-restplus/issues/444>`_)
0.11.0 (2018-05-16)
-------------------
- Add authorizations parsing to namespace (`#403 <https://github.com/noirbizarre/flask-restplus/issues/403>`_)
- Add vendor extensions support (`#97 <https://github.com/noirbizarre/flask-restplus/issues/97>`_)
- ``RequestParser`` arguments now support the ``split`` action
- Ensure default boolean value as `False` works with ``RequestParser`` (`#199 <https://github.com/noirbizarre/flask-restplus/issues/199>`_)
- Schema errors are not longuer hidden by `AttributeError: Api does not have __schema__ attribute` (`#194 <https://github.com/noirbizarre/flask-restplus/issues/194>`_)
- Add a new ``URL`` validator, more flexible and precise.
- Fix error bundling (`#175 <https://github.com/noirbizarre/flask-restplus/issues/175>`_, `#144 <https://github.com/noirbizarre/flask-restplus/issues/144>`_)
- Help message is now added to source error message instead of string interpolation (`#147 <https://github.com/noirbizarre/flask-restplus/issues/147>`_)
- Use pytest instead of nosetests
- Upgrade to Swagger-UI 3.4.0
- Fix typo in comments
- Add an optional key argument, ``skip_none``, in ``marshal_with`` and ``marshal``
- Fix masks not working correctly with Python 2.7 (`#217 <https://github.com/noirbizarre/flask-restplus/issues/217>`_)
- Fixed typos in doc/scaling
- Add docs for `allow_null` and ``Nested``
- Add Namespace.payload
- **Breaking**: everything is unordered by default because ordering has a serious impact on performances:
- ``Api`` and ``Namespace`` now accept an optionnal ``ordered`` parameter
- ``marshal_with`` and ``marshal`` now accept an optionnal ``ordered`` parameter
Breaking changes
~~~~~~~~~~~~~~~~
- Drop python 2.6 support
- Improve header handling (`#119 <https://github.com/noirbizarre/flask-restplus/issues/119>`_):
- `@api.header` only document response headers on all responses
- `@api.response` accept an optionnal `headers` argument to document response specific headers
- request header are handled by the `@api.expect` decorator
0.10.1 (2017-03-04)
-------------------
- Fix a typo in ``__init__`` breaking ``from flask_restplus import *`` (`#242 <https://github.com/noirbizarre/flask-restplus/issues/242>`_)
- Basic support for custom URL converters (`#243 <https://github.com/noirbizarre/flask-restplus/issues/243>`_)
- Support custom response classes inheriting from ``BaseResponse`` (`#245 <https://github.com/noirbizarre/flask-restplus/issues/245>`_)
- Allow models to preserve order (`#135 <https://github.com/noirbizarre/flask-restplus/issues/135>`_)
0.10.0 (2017-02-12)
-------------------
- Allows to specify a custom mount path on namespace registration
- Allow to express models as raw schemas
- Upgraded to Swagger-UI 2.2.6
- Support Swagger-UI translations
- Fix prefix trailing slash stripping in Postman doc generation (`#232 <https://github.com/noirbizarre/flask-restplus/issues/232>`_)
- Add validation for lists in the expect decorator (`#231 <https://github.com/noirbizarre/flask-restplus/issues/231>`_)
0.9.2 (2016-04-22)
------------------
- Same version but a PyPI bug force reupload.
0.9.1 (2016-04-22)
------------------
- Added some Swagger-UI Oauth configurations:
- `SWAGGER_UI_OAUTH_CLIENT_ID`
- `SWAGGER_UI_OAUTH_REALM`
- `SWAGGER_UI_OAUTH_APP_NAME`
- Expose ``type: object`` in Swagger schemas (`#157 <https://github.com/noirbizarre/flask-restplus/issues/157>`_)
- Fix an issue with error handlers (`#141 <https://github.com/noirbizarre/flask-restplus/issues/141>`_)
- Fix an issue with Postman export when using OAuth (`#151 <https://github.com/noirbizarre/flask-restplus/issues/151>`_)
- Miscellenaous code and documentation fixes
- Remove last flask-restful references (unless needed) and add missing attributions
0.9.0 (2016-02-22)
------------------
- Make ``Namespace`` behave like ``Blueprint`` for ``Flask``
- Deprecated ``parser`` and ``body`` parameters for ``expect`` in ``doc`` decorator
- Deprecated ``Model.extend`` in favor of ``Model.clone``
- Added the ``param`` decorator
- Honour method restrictions in Swagger documentation (`#93 <https://github.com/noirbizarre/flask-restplus/issues/93>`_)
- Improved documentation
0.8.6 (2015-12-26)
------------------
- Handle callable on API infos
- Handle documentation on error handlers
- Drop/merge flask_restful ``flask_restful.RequestParser``
- Handle ``RequestParser`` into ``expect`` decorator
- Handle schema for ``inputs`` parsers
- Added some inputs:
- ``email``
- ``ip``
- ``ipv4``
- ``ipv6``
0.8.5 (2015-12-12)
------------------
- Handle mask on ``Polymorph`` field
- Handle mask on inherited models
- Replace `flask_restful.abort` by ``flask_restplus.errors.abort``
- Replace `flask_restful.unpack` by ``flask_restplus.utils.unpack``
- **Breaking changes**:
- Renamed ``ApiModel`` into ``Model``
- Renamed ``ApiNamespace`` into ``Namespace``
0.8.4 (2015-12-07)
------------------
- Drop/merge `flask_restful.Resource` resolving a recursion problem
- Allow any `callable` as field `default`, `min`, `max`...
- Added ``Date`` field
- Improve error handling for inconsistent masks
- Handle model level default mask
- support colons and dashes in mask field names
- **Breaking changes**:
- Renamed `exceptions` module into `errors`
- Renamed `RestException` into ``RestError``
- Renamed `MarshallingException` into ``MarshallingError``
- ``DateTime`` field always output datetime
0.8.3 (2015-12-05)
------------------
- Drop/merge flask-restful fields
- Drop/merge flask-restplus inputs
- Update Swagger-UI to version 2.1.3
- Use minified version of Swagger-UI if ``DEBUG=False``
- Blueprint subdomain support (static only)
- Added support for default fields mask
0.8.2 (2015-12-01)
------------------
- Skip unknown fields in mask when applied on a model
- Added `*` token to fields mask (all remaining fields)
- Ensure generated endpoints does not collide
- Drop/merge flask-restful `Api.handler_error()`
0.8.1 (2015-11-27)
------------------
- Refactor Swagger UI handling:
- allow to register a custom view with ``@api.documentation``
- allow to register a custom URL with the ``doc`` parameter
- allow to disable documentation with ``doc=False``
- Added fields mask support through header (see: `Fields Masks Documentation <http://flask-restplus.readthedocs.org/en/stable/mask.html>`_)
- Expose ``flask_restful.inputs`` module on ``flask_restplus.inputs``
- Added support for some missing fields and attributes:
- ``host`` root field (filed only if ``SERVER_NAME`` config is set)
- custom ``tags`` root field
- ``exclusiveMinimum`` and ``exclusiveMaximum`` number field attributes
- ``multipleOf`` number field attribute
- ``minLength`` and ``maxLength`` string field attributes
- ``pattern`` string field attribute
- ``minItems`` and ``maxItems`` list field attributes
- ``uniqueItems`` list field attribute
- Allow to override the default error handler
- Fixes
0.8.0
-----
- Added payload validation (initial implementation based on jsonschema)
- Added ``@api.deprecated`` to mark resources or methods as deprecated
- Added ``@api.header`` decorator shortcut to document headers
- Added Postman export
- Fix compatibility with flask-restful 0.3.4
- Allow to specify an exemple a custom fields with ``__schema_example__``
- Added support for ``PATCH`` method in Swagger UI
- Upgraded to Swagger UI 2.1.2
- Handle enum as callable
- Allow to configure ``docExpansion`` with the ``SWAGGER_UI_DOC_EXPANSION`` parameter
0.7.2
-----
- Compatibility with flask-restful 0.3.3
- Fix action=append handling in RequestParser
- Upgraded to SwaggerUI 2.1.8-M1
- Miscellaneous fixes
0.7.1
-----
- Fix ``@api.marshal_with_list()`` keyword arguments handling.
0.7.0
-----
- Expose models and fields schema through the ``__schema__`` attribute
- Drop support for model as class
- Added ``@api.errorhandler()`` to register custom error handlers
- Added ``@api.response()`` shortcut decorator
- Fix list nested models missing in definitions
0.6.0
-----
- Python 2.6 support
- Experimental polymorphism support (single inheritance only)
- Added ``Polymorph`` field
- Added ``discriminator`` attribute support on ``String`` fields
- Added ``api.inherit()`` method
- Added ``ClassName`` field
0.5.1
-----
- Fix for parameter with schema (do not set type=string)
0.5.0
-----
- Allow shorter syntax to set operation id: ``@api.doc('my-operation')``
- Added a shortcut to specify the expected input model: ``@api.expect(my_fields)``
- Added ``title`` attribute to fields
- Added ``@api.extend()`` to extend models
- Ensure coherence between ``required`` and ``allow_null`` for ``NestedField``
- Support list of primitive types and list of models as body
- Upgraded to latest version of Swagger UI
- Fixes
0.4.2
-----
- Rename apidoc blueprint into restplus_doc to avoid collisions
0.4.1
-----
- Added ``SWAGGER_VALIDATOR_URL`` config parameter
- Added ``readonly`` field parameter
- Upgraded to latest version of Swagger UI
0.4.0
-----
- Port to Flask-Restful 0.3+
- Use the default Blueprint/App mecanism
- Allow to hide some ressources or methods using ``@api.doc(False)`` or ``@api.hide``
- Allow to globally customize the default operationId with the ``default_id`` callable parameter
0.3.0
-----
- Switch to Swagger 2.0 (Major breakage)
- ``notes`` documentation is now ``description``
- ``nickname`` documentation is now ``id``
- new responses declaration format
- Added missing ``body`` parameter to document ``body`` input
- Last release before Flask-Restful 0.3+ compatibility switch
0.2.4
-----
- Handle ``description`` and ``required`` attributes on ``fields.List``
0.2.3
-----
- Fix custom fields registeration
0.2.2
-----
- Fix model list in declaration
0.2.1
-----
- Allow to type custom fields with ``Api.model``
- Handle custom fields into ``fieds.List``
0.2
---
- Upgraded to SwaggerUI 0.2.22
- Support additional field documentation attributes: ``required``, ``description``, ``enum``, ``min``, ``max`` and ``default``
- Initial support for model in RequestParser
0.1.3
-----
- Fix ``Api.marshal()`` shortcut
0.1.2
-----
- Added ``Api.marshal_with()`` and ``Api.marshal_list_with()`` decorators
- Added ``Api.marshal()`` shortcut
0.1.1
-----
- Use ``zip_safe=False`` for proper packaging.
0.1
---
- Initial release
Raw data
{
"_id": null,
"home_page": "https://github.com/noirbizarre/flask-restplus",
"name": "flask-restplus",
"maintainer": "",
"docs_url": null,
"requires_python": "",
"maintainer_email": "",
"keywords": "flask restplus rest api swagger openapi",
"author": "Axel Haustant",
"author_email": "axel@data.gouv.fr",
"download_url": "https://files.pythonhosted.org/packages/ac/d6/270f22ed9974e3ce0a3cc8c0be08211e63f82b46550dda85d0ae26b37371/flask-restplus-0.13.0.tar.gz",
"platform": "",
"description": "==============\nFlask RestPlus\n==============\n\n.. image:: https://secure.travis-ci.org/noirbizarre/flask-restplus.svg?tag=0.13.0\n :target: https://travis-ci.org/noirbizarre/flask-restplus?tag=0.13.0\n :alt: Build status\n.. image:: https://coveralls.io/repos/noirbizarre/flask-restplus/badge.svg?tag=0.13.0\n :target: https://coveralls.io/r/noirbizarre/flask-restplus?tag=0.13.0\n :alt: Code coverage\n.. image:: https://readthedocs.org/projects/flask-restplus/badge/?version=0.13.0\n :target: https://flask-restplus.readthedocs.io/en/0.13.0/\n :alt: Documentation status\n.. image:: https://img.shields.io/pypi/l/flask-restplus.svg\n :target: https://pypi.org/project/flask-restplus\n :alt: License\n.. image:: https://img.shields.io/pypi/pyversions/flask-restplus.svg\n :target: https://pypi.org/project/flask-restplus\n :alt: Supported Python versions\n.. image:: https://badges.gitter.im/Join%20Chat.svg\n :alt: Join the chat at https://gitter.im/noirbizarre/flask-restplus\n :target: https://gitter.im/noirbizarre/flask-restplus?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge\n\nFlask-RESTPlus is an extension for `Flask`_ that adds support for quickly building REST APIs.\nFlask-RESTPlus encourages best practices with minimal setup.\nIf you are familiar with Flask, Flask-RESTPlus should be easy to pick up.\nIt provides a coherent collection of decorators and tools to describe your API\nand expose its documentation properly using `Swagger`_.\n\n\nCompatibility\n=============\n\nFlask-RestPlus requires Python 2.7 or 3.4+.\n\n\nInstallation\n============\n\nYou can install Flask-Restplus with pip:\n\n.. code-block:: console\n\n $ pip install flask-restplus\n\nor with easy_install:\n\n.. code-block:: console\n\n $ easy_install flask-restplus\n\n\nQuick start\n===========\n\nWith Flask-Restplus, you only import the api instance to route and document your endpoints.\n\n.. code-block:: python\n\n from flask import Flask\n from flask_restplus import Api, Resource, fields\n\n app = Flask(__name__)\n api = Api(app, version='1.0', title='TodoMVC API',\n description='A simple TodoMVC API',\n )\n\n ns = api.namespace('todos', description='TODO operations')\n\n todo = api.model('Todo', {\n 'id': fields.Integer(readOnly=True, description='The task unique identifier'),\n 'task': fields.String(required=True, description='The task details')\n })\n\n\n class TodoDAO(object):\n def __init__(self):\n self.counter = 0\n self.todos = []\n\n def get(self, id):\n for todo in self.todos:\n if todo['id'] == id:\n return todo\n api.abort(404, \"Todo {} doesn't exist\".format(id))\n\n def create(self, data):\n todo = data\n todo['id'] = self.counter = self.counter + 1\n self.todos.append(todo)\n return todo\n\n def update(self, id, data):\n todo = self.get(id)\n todo.update(data)\n return todo\n\n def delete(self, id):\n todo = self.get(id)\n self.todos.remove(todo)\n\n\n DAO = TodoDAO()\n DAO.create({'task': 'Build an API'})\n DAO.create({'task': '?????'})\n DAO.create({'task': 'profit!'})\n\n\n @ns.route('/')\n class TodoList(Resource):\n '''Shows a list of all todos, and lets you POST to add new tasks'''\n @ns.doc('list_todos')\n @ns.marshal_list_with(todo)\n def get(self):\n '''List all tasks'''\n return DAO.todos\n\n @ns.doc('create_todo')\n @ns.expect(todo)\n @ns.marshal_with(todo, code=201)\n def post(self):\n '''Create a new task'''\n return DAO.create(api.payload), 201\n\n\n @ns.route('/<int:id>')\n @ns.response(404, 'Todo not found')\n @ns.param('id', 'The task identifier')\n class Todo(Resource):\n '''Show a single todo item and lets you delete them'''\n @ns.doc('get_todo')\n @ns.marshal_with(todo)\n def get(self, id):\n '''Fetch a given resource'''\n return DAO.get(id)\n\n @ns.doc('delete_todo')\n @ns.response(204, 'Todo deleted')\n def delete(self, id):\n '''Delete a task given its identifier'''\n DAO.delete(id)\n return '', 204\n\n @ns.expect(todo)\n @ns.marshal_with(todo)\n def put(self, id):\n '''Update a task given its identifier'''\n return DAO.update(id, api.payload)\n\n\n if __name__ == '__main__':\n app.run(debug=True)\n\n\nContributors\n============\n\nFlask-RESTPlus is brought to you by @noirbizarre. Since early 2019 @SteadBytes,\n@a-luna, @j5awry, @ziirish volunteered to help @noirbizarre keep the project up\nand running.\nOf course everyone is welcome to contribute and we will be happy to review your\nPR's or answer to your issues.\n\n\nDocumentation\n=============\n\nThe documentation is hosted `on Read the Docs <http://flask-restplus.readthedocs.io/en/latest/>`_\n\n\n.. _Flask: http://flask.pocoo.org/\n.. _Swagger: http://swagger.io/\n\n\nContribution\n============\nWant to contribute! That's awesome! Check out `CONTRIBUTING.rst! <https://github.com/noirbizarre/flask-restplus/blob/master/CONTRIBUTING.rst>`_\nChangelog\n=========\n\n\n\n0.13.0 (2019-08-12)\n-------------------\n\n- Add new `Wildcard` fields (`#255 <https://github.com/noirbizarre/flask-restplus/pull/255>`_)\n- Fix ABC deprecation warnings (`#580 <https://github.com/noirbizarre/flask-restplus/pull/580>`_)\n- Fix `@api.expect(..., validate=False)` decorators for an ``Api`` where `validate=True` is set on the constructor (`#609 <https://github.com/noirbizarre/flask-restplus/issues/609>`_, `#610 <https://github.com/noirbizarre/flask-restplus/pull/610>`_)\n- Ensure `basePath` is always a path\n- Hide Namespaces with all hidden Resources from Swagger documentation\n- Per route Swagger documentation for multiple routes on a ``Resource``\n\n0.12.1 (2018-09-28)\n-------------------\n\n- Fix missing changelog inprevious release\n- Ensure definitions with both `$ref` and description (or other property) output is valid (using `allOf`)\n- Added initial specifications schemas and validation support\n- Ensure empty enums are not serialized (to have a valid specification)\n\n0.12.0 (2018-09-27)\n-------------------\n\n- Fix Namespace decorators (`#475 <https://github.com/noirbizarre/flask-restplus/issues/475>`_)\n- Do not serialize empty tags descriptions\n- Ensure `consumes` is properly set when using form parameters on classes\n- Ensure parameters are not duplicated (`#164 <https://github.com/noirbizarre/flask-restplus/issues/164>`_, `#196 <https://github.com/noirbizarre/flask-restplus/issues/196>`_, `#234 <https://github.com/noirbizarre/flask-restplus/issues/234>`_)\n- Publish sources distribution (`#500 <https://github.com/noirbizarre/flask-restplus/issues/500>`_, `#515 <https://github.com/noirbizarre/flask-restplus/issues/515>`_)\n- Fix late resources registeration (`#483 <https://github.com/noirbizarre/flask-restplus/issues/483>`_)\n- Don't include namespaces without resources to the SWAGGER documentation (`#470 <https://github.com/noirbizarre/flask-restplus/issues/470>`_)\n- Add support for checkbox validation input + consistent behavior between inputs and fields. (`#461 <https://github.com/noirbizarre/flask-restplus/issues/461>`_)\n- Fix missing `enum34` dependency (`#444 <https://github.com/noirbizarre/flask-restplus/issues/444>`_)\n\n0.11.0 (2018-05-16)\n-------------------\n\n- Add authorizations parsing to namespace (`#403 <https://github.com/noirbizarre/flask-restplus/issues/403>`_)\n- Add vendor extensions support (`#97 <https://github.com/noirbizarre/flask-restplus/issues/97>`_)\n- ``RequestParser`` arguments now support the ``split`` action\n- Ensure default boolean value as `False` works with ``RequestParser`` (`#199 <https://github.com/noirbizarre/flask-restplus/issues/199>`_)\n- Schema errors are not longuer hidden by `AttributeError: Api does not have __schema__ attribute` (`#194 <https://github.com/noirbizarre/flask-restplus/issues/194>`_)\n- Add a new ``URL`` validator, more flexible and precise.\n- Fix error bundling (`#175 <https://github.com/noirbizarre/flask-restplus/issues/175>`_, `#144 <https://github.com/noirbizarre/flask-restplus/issues/144>`_)\n- Help message is now added to source error message instead of string interpolation (`#147 <https://github.com/noirbizarre/flask-restplus/issues/147>`_)\n- Use pytest instead of nosetests\n- Upgrade to Swagger-UI 3.4.0\n- Fix typo in comments\n- Add an optional key argument, ``skip_none``, in ``marshal_with`` and ``marshal``\n- Fix masks not working correctly with Python 2.7 (`#217 <https://github.com/noirbizarre/flask-restplus/issues/217>`_)\n- Fixed typos in doc/scaling\n- Add docs for `allow_null` and ``Nested``\n- Add Namespace.payload\n- **Breaking**: everything is unordered by default because ordering has a serious impact on performances:\n - ``Api`` and ``Namespace`` now accept an optionnal ``ordered`` parameter\n - ``marshal_with`` and ``marshal`` now accept an optionnal ``ordered`` parameter\n\nBreaking changes\n~~~~~~~~~~~~~~~~\n\n- Drop python 2.6 support\n- Improve header handling (`#119 <https://github.com/noirbizarre/flask-restplus/issues/119>`_):\n - `@api.header` only document response headers on all responses\n - `@api.response` accept an optionnal `headers` argument to document response specific headers\n - request header are handled by the `@api.expect` decorator\n\n0.10.1 (2017-03-04)\n-------------------\n\n- Fix a typo in ``__init__`` breaking ``from flask_restplus import *`` (`#242 <https://github.com/noirbizarre/flask-restplus/issues/242>`_)\n- Basic support for custom URL converters (`#243 <https://github.com/noirbizarre/flask-restplus/issues/243>`_)\n- Support custom response classes inheriting from ``BaseResponse`` (`#245 <https://github.com/noirbizarre/flask-restplus/issues/245>`_)\n- Allow models to preserve order (`#135 <https://github.com/noirbizarre/flask-restplus/issues/135>`_)\n\n0.10.0 (2017-02-12)\n-------------------\n\n- Allows to specify a custom mount path on namespace registration\n- Allow to express models as raw schemas\n- Upgraded to Swagger-UI 2.2.6\n- Support Swagger-UI translations\n- Fix prefix trailing slash stripping in Postman doc generation (`#232 <https://github.com/noirbizarre/flask-restplus/issues/232>`_)\n- Add validation for lists in the expect decorator (`#231 <https://github.com/noirbizarre/flask-restplus/issues/231>`_)\n\n0.9.2 (2016-04-22)\n------------------\n\n- Same version but a PyPI bug force reupload.\n\n0.9.1 (2016-04-22)\n------------------\n\n- Added some Swagger-UI Oauth configurations:\n - `SWAGGER_UI_OAUTH_CLIENT_ID`\n - `SWAGGER_UI_OAUTH_REALM`\n - `SWAGGER_UI_OAUTH_APP_NAME`\n- Expose ``type: object`` in Swagger schemas (`#157 <https://github.com/noirbizarre/flask-restplus/issues/157>`_)\n- Fix an issue with error handlers (`#141 <https://github.com/noirbizarre/flask-restplus/issues/141>`_)\n- Fix an issue with Postman export when using OAuth (`#151 <https://github.com/noirbizarre/flask-restplus/issues/151>`_)\n- Miscellenaous code and documentation fixes\n- Remove last flask-restful references (unless needed) and add missing attributions\n\n0.9.0 (2016-02-22)\n------------------\n\n- Make ``Namespace`` behave like ``Blueprint`` for ``Flask``\n- Deprecated ``parser`` and ``body`` parameters for ``expect`` in ``doc`` decorator\n- Deprecated ``Model.extend`` in favor of ``Model.clone``\n- Added the ``param`` decorator\n- Honour method restrictions in Swagger documentation (`#93 <https://github.com/noirbizarre/flask-restplus/issues/93>`_)\n- Improved documentation\n\n0.8.6 (2015-12-26)\n------------------\n\n- Handle callable on API infos\n- Handle documentation on error handlers\n- Drop/merge flask_restful ``flask_restful.RequestParser``\n- Handle ``RequestParser`` into ``expect`` decorator\n- Handle schema for ``inputs`` parsers\n- Added some inputs:\n - ``email``\n - ``ip``\n - ``ipv4``\n - ``ipv6``\n\n\n0.8.5 (2015-12-12)\n------------------\n\n- Handle mask on ``Polymorph`` field\n- Handle mask on inherited models\n- Replace `flask_restful.abort` by ``flask_restplus.errors.abort``\n- Replace `flask_restful.unpack` by ``flask_restplus.utils.unpack``\n- **Breaking changes**:\n - Renamed ``ApiModel`` into ``Model``\n - Renamed ``ApiNamespace`` into ``Namespace``\n\n\n0.8.4 (2015-12-07)\n------------------\n\n- Drop/merge `flask_restful.Resource` resolving a recursion problem\n- Allow any `callable` as field `default`, `min`, `max`...\n- Added ``Date`` field\n- Improve error handling for inconsistent masks\n- Handle model level default mask\n- support colons and dashes in mask field names\n- **Breaking changes**:\n - Renamed `exceptions` module into `errors`\n - Renamed `RestException` into ``RestError``\n - Renamed `MarshallingException` into ``MarshallingError``\n - ``DateTime`` field always output datetime\n\n0.8.3 (2015-12-05)\n------------------\n\n- Drop/merge flask-restful fields\n- Drop/merge flask-restplus inputs\n- Update Swagger-UI to version 2.1.3\n- Use minified version of Swagger-UI if ``DEBUG=False``\n- Blueprint subdomain support (static only)\n- Added support for default fields mask\n\n0.8.2 (2015-12-01)\n------------------\n\n- Skip unknown fields in mask when applied on a model\n- Added `*` token to fields mask (all remaining fields)\n- Ensure generated endpoints does not collide\n- Drop/merge flask-restful `Api.handler_error()`\n\n0.8.1 (2015-11-27)\n------------------\n\n- Refactor Swagger UI handling:\n - allow to register a custom view with ``@api.documentation``\n - allow to register a custom URL with the ``doc`` parameter\n - allow to disable documentation with ``doc=False``\n- Added fields mask support through header (see: `Fields Masks Documentation <http://flask-restplus.readthedocs.org/en/stable/mask.html>`_)\n- Expose ``flask_restful.inputs`` module on ``flask_restplus.inputs``\n- Added support for some missing fields and attributes:\n - ``host`` root field (filed only if ``SERVER_NAME`` config is set)\n - custom ``tags`` root field\n - ``exclusiveMinimum`` and ``exclusiveMaximum`` number field attributes\n - ``multipleOf`` number field attribute\n - ``minLength`` and ``maxLength`` string field attributes\n - ``pattern`` string field attribute\n - ``minItems`` and ``maxItems`` list field attributes\n - ``uniqueItems`` list field attribute\n- Allow to override the default error handler\n- Fixes\n\n\n0.8.0\n-----\n\n- Added payload validation (initial implementation based on jsonschema)\n- Added ``@api.deprecated`` to mark resources or methods as deprecated\n- Added ``@api.header`` decorator shortcut to document headers\n- Added Postman export\n- Fix compatibility with flask-restful 0.3.4\n- Allow to specify an exemple a custom fields with ``__schema_example__``\n- Added support for ``PATCH`` method in Swagger UI\n- Upgraded to Swagger UI 2.1.2\n- Handle enum as callable\n- Allow to configure ``docExpansion`` with the ``SWAGGER_UI_DOC_EXPANSION`` parameter\n\n\n0.7.2\n-----\n\n- Compatibility with flask-restful 0.3.3\n- Fix action=append handling in RequestParser\n- Upgraded to SwaggerUI 2.1.8-M1\n- Miscellaneous fixes\n\n\n0.7.1\n-----\n\n- Fix ``@api.marshal_with_list()`` keyword arguments handling.\n\n\n0.7.0\n-----\n\n- Expose models and fields schema through the ``__schema__`` attribute\n- Drop support for model as class\n- Added ``@api.errorhandler()`` to register custom error handlers\n- Added ``@api.response()`` shortcut decorator\n- Fix list nested models missing in definitions\n\n\n0.6.0\n-----\n\n- Python 2.6 support\n- Experimental polymorphism support (single inheritance only)\n - Added ``Polymorph`` field\n - Added ``discriminator`` attribute support on ``String`` fields\n - Added ``api.inherit()`` method\n- Added ``ClassName`` field\n\n0.5.1\n-----\n\n- Fix for parameter with schema (do not set type=string)\n\n\n0.5.0\n-----\n\n- Allow shorter syntax to set operation id: ``@api.doc('my-operation')``\n- Added a shortcut to specify the expected input model: ``@api.expect(my_fields)``\n- Added ``title`` attribute to fields\n- Added ``@api.extend()`` to extend models\n- Ensure coherence between ``required`` and ``allow_null`` for ``NestedField``\n- Support list of primitive types and list of models as body\n- Upgraded to latest version of Swagger UI\n- Fixes\n\n\n0.4.2\n-----\n\n- Rename apidoc blueprint into restplus_doc to avoid collisions\n\n\n0.4.1\n-----\n\n- Added ``SWAGGER_VALIDATOR_URL`` config parameter\n- Added ``readonly`` field parameter\n- Upgraded to latest version of Swagger UI\n\n\n0.4.0\n-----\n\n- Port to Flask-Restful 0.3+\n- Use the default Blueprint/App mecanism\n- Allow to hide some ressources or methods using ``@api.doc(False)`` or ``@api.hide``\n- Allow to globally customize the default operationId with the ``default_id`` callable parameter\n\n0.3.0\n-----\n\n- Switch to Swagger 2.0 (Major breakage)\n - ``notes`` documentation is now ``description``\n - ``nickname`` documentation is now ``id``\n - new responses declaration format\n- Added missing ``body`` parameter to document ``body`` input\n- Last release before Flask-Restful 0.3+ compatibility switch\n\n\n0.2.4\n-----\n\n- Handle ``description`` and ``required`` attributes on ``fields.List``\n\n0.2.3\n-----\n\n- Fix custom fields registeration\n\n0.2.2\n-----\n\n- Fix model list in declaration\n\n0.2.1\n-----\n\n- Allow to type custom fields with ``Api.model``\n- Handle custom fields into ``fieds.List``\n\n0.2\n---\n\n- Upgraded to SwaggerUI 0.2.22\n- Support additional field documentation attributes: ``required``, ``description``, ``enum``, ``min``, ``max`` and ``default``\n- Initial support for model in RequestParser\n\n0.1.3\n-----\n\n- Fix ``Api.marshal()`` shortcut\n\n0.1.2\n-----\n\n- Added ``Api.marshal_with()`` and ``Api.marshal_list_with()`` decorators\n- Added ``Api.marshal()`` shortcut\n\n\n0.1.1\n-----\n\n- Use ``zip_safe=False`` for proper packaging.\n\n\n0.1\n---\n\n- Initial release\n\n",
"bugtrack_url": null,
"license": "BSD-3-Clause",
"summary": "Fully featured framework for fast, easy and documented API development with Flask",
"version": "0.13.0",
"project_urls": {
"Homepage": "https://github.com/noirbizarre/flask-restplus"
},
"split_keywords": [
"flask",
"restplus",
"rest",
"api",
"swagger",
"openapi"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "c2a6b17c848771f96ad039ad9e3ea275e842a16c39c4f3eb9f60ee330b20b6c2",
"md5": "7e5be9b9267f8c578709f41cc21b790f",
"sha256": "a15d251923a8feb09a5d805c2f4d188555910a42c64d58f7dd281b8cac095f1b"
},
"downloads": -1,
"filename": "flask_restplus-0.13.0-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "7e5be9b9267f8c578709f41cc21b790f",
"packagetype": "bdist_wheel",
"python_version": "3.6",
"requires_python": null,
"size": 2455767,
"upload_time": "2019-08-12T21:51:40",
"upload_time_iso_8601": "2019-08-12T21:51:40.749657Z",
"url": "https://files.pythonhosted.org/packages/c2/a6/b17c848771f96ad039ad9e3ea275e842a16c39c4f3eb9f60ee330b20b6c2/flask_restplus-0.13.0-py2.py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "acd6270f22ed9974e3ce0a3cc8c0be08211e63f82b46550dda85d0ae26b37371",
"md5": "63bf1f895d7a3398c590ff223c8d59b8",
"sha256": "a66e442d0bca08f389fc3d07b4d808fc89961285d12fb8013f7cf15516fa9f5c"
},
"downloads": -1,
"filename": "flask-restplus-0.13.0.tar.gz",
"has_sig": false,
"md5_digest": "63bf1f895d7a3398c590ff223c8d59b8",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 2422174,
"upload_time": "2019-08-12T21:51:33",
"upload_time_iso_8601": "2019-08-12T21:51:33.671540Z",
"url": "https://files.pythonhosted.org/packages/ac/d6/270f22ed9974e3ce0a3cc8c0be08211e63f82b46550dda85d0ae26b37371/flask-restplus-0.13.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2019-08-12 21:51:33",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "noirbizarre",
"github_project": "flask-restplus",
"travis_ci": true,
"coveralls": false,
"github_actions": false,
"tox": true,
"lcname": "flask-restplus"
}