{ "info": { "author": "Catalant Technologies", "author_email": "engineering@gocatalant.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Framework :: Flask", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Natural Language :: English", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Topic :: Software Development :: Libraries :: Application Frameworks", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "CT Core API\n###########\n\n.. _description:\n\nCT Core API -- Catalant Core API Framework.\n\nThis framework enables developers to easily build and test **Flask web applications** that expose a **RESTful API**.\n\nIt is composed from a number of Python libraries and projects, most notably:\n\n.. _documentation:\n\n**Web Framework**\n\n*Flask*\n http://flask.pocoo.org/\n\nFlask -- ``0.11``\n http://flask.pocoo.org/docs/0.11/\n\nwebargs -- ``1.4``\n http://webargs.rtfd.org/\n\n**Database / ORM**\n\n*SQLAlchemy*\n http://www.sqlalchemy.org/\n\nCT-Core-DB\n https://github.com/Catalant/ct-core-db/\n\n**Object Serialization**\n\nMarshmallow -- ``2.10``\n http://marshmallow.readthedocs.io/en/latest/\n\nFlask-Marshmallow -- ``0.7``\n https://flask-marshmallow.readthedocs.io/en/latest/\n\nMarshmallow-SQLAlchemy -- ``0.12``\n http://marshmallow-sqlalchemy.rtfd.org/\n\n**REST / Swagger**\n\n*Swagger (OpenAPI Specification)*\n https://github.com/OAI/OpenAPI-Specification\n\n*Swagger-UI*\n https://github.com/swagger-api/swagger-ui\n\nFlask-RESTful -- ``0.3``\n http://flask-restful.readthedocs.io/en/0.3.1/\n\napispec -- ``0.16``\n http://apispec.rtfd.org/\n\n**Authentication / Authorization**\n\noauthlib -- ``2.0``\n http://oauthlib.rtfd.org/)\n\nflask-oauthlib -- ``0.9``\n http://flask-oauthlib.rtfd.org/\n\nflask-login -- ``0.3``\n http://flask-login.rtfd.org/\n\npermission -- ``0.4``\n https://github.com/hustlzp/permission\n\nbcrypt -- ``3.1``\n https://github.com/pyca/bcrypt/\n\n**Distributed In-Memory Cache**\n\n*memcached*\n https://memcached.org/\n\nDogpile-Cache -- ``0.6``\n http://dogpilecache.readthedocs.io/en/latest/usage.html\n\nFlask-Dogpile-Cache -- ``0.2``\n https://bitbucket.org/ponomar/flask-dogpile-cache\n\n**Distributed Task Queue**\n\n*RabbitMQ*\n https://www.rabbitmq.com/\n\nCelery -- ``3.1``\n http://www.celeryproject.org/\n\n.. _requirements:\n\nRequirements\n============\n\n- python ``2.6+``, ``3.3+`` / pypy2 (``2.5.0``)\n\n.. _installation:\n\nInstallation\n============\n\n**CT Core API** is hosted on our internal `PyPi repository`_. It should be installed using pip::\n\n pip install ct-core-api\n\n.. _PyPi repository: https://devpi.gocatalant.com/catalant/prod/ct-core-api\n\n.. _usage:\n\nUsage\n=====\n\nPlease see the `Demo API Application`_ for a fully functioning example that demonstrates the setup and usage of the\nframework components.\n\n.. _Demo API Application: https://github.com/Catalant/ct-api-demo\n\nGetting Started\n---------------\n\nThis is how to create and register an API in your project::\n\n \"\"\"catalant/example/app/__init__.py\"\"\"\n\n from ct_core_api.api import core\n from ct_core_api.api.app import create_api_app\n\n # TODO: Revise this example for 2.0\n\nHere is what your application's main entry point should look like::\n\n \"\"\"catalant/example/app/main.py\"\"\"\n\n #!/usr/bin/env python\n\n from catalant.example.app import create_example_api_app\n\n\n app = create_example_api_app()\n\n\n if __name__ == '__main__':\n from ct_core_api.api.app import runner\n runner.run(app)\n\nStructuring the entry point as such allows us to invoke and run the Flask application as an executable script,\ndirectly using Flask's development server, or using a uwsgi web server.\n\nChangelog\n---------\nEvery API application has it's own changelog. Developers are expected to update the changelog anytime a functional or\nstructural change to the API occurs.\n\n\"`Keep a CHANGELOG`_\" has a good set of guiding principles for when and how a changelog should be maintained.\n\n.. _Keep a CHANGELOG: http://keepachangelog.com/\n\nBy default, the API's changelog is accessible at ``/changelog`` and the entries live in ``changelog.yml`` in the\napplication's root folder (`APIApp.root_path`).\n\n You can modify the path to this file using the `API_CHANGELOG_PATH` config setting.\n\nFormat\n``````\n\nThe changelog file uses the following YAML format::\n\n --- # Separate changelog entries by date\n : # The current date\n : # The type of change\n - type: : # What kind of thing changed\n id: # The changed thing's identifier\n [note]: # An optional, human-friendly note of what changed\n\n\nLegend\n``````\noperation\n A versioned endpoint operation\n\nparameter\n An input parameter for one or more endpoint operation(s)\n\nmodel\n A response model for one or more endpoint operations(s)\n\nenum\n An Enum that one or more input parameter(s) use to represent a list of choices\n\n.. _contributing:\n\nContributing\n============\n\nDevelopment of ct-core-api happens at github: https://github.com/catalant/ct-core-api\n\nPackage Layout\n--------------\n\nThe packages in this repository are carefully organized to avoid circular imports and to maintain the proper separation\nof concerns.\nIt's safe to import and use modules from packages as long as they don't violate the ordering described below:\n\n- ``ct_core_api.common``\n- ``ct_core_api.core``\n- ``ct_core_api.api.lib``\n- ``ct_core_api.api.common``\n- ``ct_core_api.api.core``\n- ``ct_core_api.api.app``\n\nYour module can reference other modules in the **same package** *or* in packages at the **same level or higher**\naccording to this list. For example, a module in ``ct_core_api.api.core`` can depend on one from\n``ct_core_api.api.common`` but not on one from ``ct_core_api.api.app``.\n\n\nSmoke Testing\n-------------\n\nHere's how you can run the dummy application to verify the basic functioning of the core API and web application:\n\nExecutable Python script::\n\n export PYTHONPATH=$PYTHONPATH:`pwd`\n ./ct_core_api/_main.py\n\nFlask development server::\n\n export FLASK_APP=ct_core_api/_main.py\n export FLASK_DEBUG=1\n export FLASK_CONFIG=development\n flask run\n\n.. _bugtracker:\n\n\nContributors\n============\n\n* jcrafford_ (Justin Crafford)\n\n.. _license:\n\nLicense\n=======\n\nLicensed under a `MIT license`_.\n\n.. _links:\n\n.. _MIT license: https://opensource.org/licenses/MIT\n.. _jcrafford: https://github.com/jcrafford", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/Catalant/ct-core-api", "keywords": "flask,sqlalchemy,api,rest,swagger", "license": "MIT", "maintainer": null, "maintainer_email": null, "name": "ct-core-api", "package_url": "https://pypi.org/project/ct-core-api/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/ct-core-api/", "project_urls": { "Download": "UNKNOWN", "Homepage": "https://github.com/Catalant/ct-core-api" }, "release_url": "https://pypi.org/project/ct-core-api/2.5.0/", "requires_dist": null, "requires_python": null, "summary": "Catalant Core API Framework", "version": "2.5.0" }, "last_serial": 2508908, "releases": { "2.1.0b0": [ { "comment_text": "", "digests": { "md5": "31374b000c149c5300201081ca0a73c7", "sha256": "b66361181fd63dac549ae1a8a942bd471db6024dbc71a067b5b42720c5ac2f66" }, "downloads": -1, "filename": "ct-core-api-2.1.0b0.tar.gz", "has_sig": false, "md5_digest": "31374b000c149c5300201081ca0a73c7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 69026, "upload_time": "2016-11-22T21:10:29", "url": "https://files.pythonhosted.org/packages/81/7b/a2a98f2633b86d2813dcfa5ab3ccf9b0ba7996f26d3eb2bee11d7b1176d2/ct-core-api-2.1.0b0.tar.gz" } ], "2.4.0": [ { "comment_text": "", "digests": { "md5": "8f56e41012467afa1784f15f65ed6289", "sha256": "9e39d5ac4d98df66623f28ca2d9b2e8c2dbe1328dcdb0ee81bf6f7176e55ff35" }, "downloads": -1, "filename": "ct-core-api-2.4.0.tar.gz", "has_sig": false, "md5_digest": "8f56e41012467afa1784f15f65ed6289", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1091262, "upload_time": "2016-12-05T22:18:34", "url": "https://files.pythonhosted.org/packages/d4/65/43e5a1b21757ea72183875a266b4773006d0f9ec19a9e7ac14fce70bab36/ct-core-api-2.4.0.tar.gz" } ], "2.5.0": [ { "comment_text": "", "digests": { "md5": "8f5153917795e383697e156860bf30a1", "sha256": "eac613d2731f884ec2321fa25c522d5a94190e04bd53ac310ebaa4183f940f18" }, "downloads": -1, "filename": "ct-core-api-2.5.0.tar.gz", "has_sig": false, "md5_digest": "8f5153917795e383697e156860bf30a1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1087739, "upload_time": "2016-12-09T14:58:39", "url": "https://files.pythonhosted.org/packages/b5/4d/73a7665a81c8ac4c4d9813fc9d527da96565297cfc83ead892ed445b9c97/ct-core-api-2.5.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "8f5153917795e383697e156860bf30a1", "sha256": "eac613d2731f884ec2321fa25c522d5a94190e04bd53ac310ebaa4183f940f18" }, "downloads": -1, "filename": "ct-core-api-2.5.0.tar.gz", "has_sig": false, "md5_digest": "8f5153917795e383697e156860bf30a1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1087739, "upload_time": "2016-12-09T14:58:39", "url": "https://files.pythonhosted.org/packages/b5/4d/73a7665a81c8ac4c4d9813fc9d527da96565297cfc83ead892ed445b9c97/ct-core-api-2.5.0.tar.gz" } ] }