Flask-COMBO-JSONAPI ================== .. image:: https://github.com/AdCombo/flask-combo-jsonapi/workflows/Python%20tests%20and%20coverage/badge.svg :alt: flask-combo-jsonapi actions :target: https://github.com/AdCombo/flask-combo-jsonapi/actions .. image:: https://coveralls.io/repos/github/AdCombo/flask-combo-jsonapi/badge.svg :alt: flask-combo-jsonapi coverage :target: https://coveralls.io/github/AdCombo/flask-combo-jsonapi .. image:: https://img.shields.io/pypi/v/flask-combo-jsonapi.svg :alt: PyPI :target: http://pypi.org/p/flask-combo-jsonapi **Flask-COMBO-JSONAPI** is an extension for Flask that adds support for quickly building REST APIs with huge flexibility around the JSON:API 1.0 specification. It is designed to fit the complexity of real life environments so Flask-COMBO-JSONAPI helps you to create a logical abstraction of your data called "resource". It can interface any kind of ORMs or data storage through the concept of data layers. Main concepts ------------- .. image:: img/schema.png :width: 900px :alt: Architecture | * `JSON:API 1.0 specification `_: this is a very popular specification for client-server interactions through a JSON-based REST API. It helps you work in a team because it is very precise and sharable. Thanks to this specification your API can offer a lot of features such as a strong structure of request and response, filtering, pagination, sparse fieldsets, including related objects, great error formatting, etc. | | * **Logical data abstraction**: you usually need to expose resources to clients that don't fit your data table architecture. For example sometimes you don't want to expose all attributes of a table, compute additional attributes or create a resource that uses data from multiple data storages. Flask-COMBO-JSONAPI helps you create a logical abstraction of your data with `Marshmallow `_ / `marshmallow-jsonapi `_ so you can expose your data in a very flexible way. | | * **Data layer**: the data layer is a CRUD interface between your resource manager and your data. Thanks to this you can use any data storage or ORM. There is an already full-featured data layer that uses the SQLAlchemy ORM but you can create and use your own custom data layer to use data from your data storage. You can even create a data layer that uses multiple data storage systems and ORMs, send notifications or perform custom actions during CRUD operations. Features -------- Flask-COMBO-JSONAPI has many features: * Relationship management * Powerful filtering * Include related objects * Sparse fieldsets * Pagination * Sorting * Permission management * OAuth support User's Guide ------------ This part of the documentation will show you how to get started using Flask-COMBO-JSONAPI with Flask. .. toctree:: :maxdepth: 3 installation minimal_api_example quickstart logical_data_abstraction resource_manager data_layer routing filtering include_related_objects sparse_fieldsets pagination sorting errors api permission oauth configuration .. toctree:: :maxdepth: 2 changelog .. include:: ./minimal_api_example.rst API Reference ------------- If you are looking for information on a specific function, class or method, this part of the documentation is for you. * :ref:`genindex` * :ref:`modindex`