{
"info": {
"author": "Greenhouse AI team",
"author_email": "ai@greenhousegroup.com",
"bugtrack_url": null,
"classifiers": [
"License :: OSI Approved :: MIT License",
"Operating System :: OS Independent",
"Programming Language :: Python :: 3"
],
"description": "Description\n============\n\nIntroduction\n------------\n\nApian is an opinionated library for setting up a Python-based service with a\nminimum of boilerplate. It is a thin wrapper around `flask-restplus\n`_ and provides:\n\n* Documentation using OpenAPI.\n* Info and health resources.\n* JWT-based authentication.\n* Configuration injection using `miniscule\n `_.\n\nExample\n-------\n\nAdd a configuration file :code:`config.yaml` in the root of the project, with the\nfollowing contents:\n\n.. code-block:: yaml\n\n environment: production\n debug: False\n authentication:\n enabled: True\n secret: secret\n\nTo create a Flask application and run it on :code:`localhost:5000`:\n\n.. code-block:: python\n\n from apian import read_config, create_api, create_app, authenticated\n from flask_restplus import Namespace, Resource\n\n ns = Namespace(\"user\")\n\n @ns.route(\"\")\n class UserItem(Resource):\n\n @authenticated\n def get(self, user_id):\n return user_id\n\n config = read_config()\n api = create_app(\"my-app\", config)\n api.add_namespace(ns)\n app = create_app(api, config)\n app.run()\n\nThe application has endpoints at the paths:\n\n* :code:`GET /my-app/api/info` - Return information about the service.\n* :code:`GET /my-app/api/health` - Return the health status of the service.\n* :code:`GET /my-app/api/user` - Return the user ID set in the Bearer token.\n\nTo access the user resource, ensure that the `requests\n`_ package is installed and execute the\nfollowing snippet:\n\n.. code-block:: python\n\n import jwt\n import requests\n\n def auth_token():\n user_id = 10\n claims = {\"iat\": dt.datetime.utcnow(), \"sub\": user_id}\n key = \"secret\"\n return jwt.encode(claims, key, \"HS256\")\n\n headers = {\"Authorization\": \"Bearer {}\".format(\n requests.get(\"http://localhost:5000/my-app/api/user\", headers=headers)",
"description_content_type": "",
"docs_url": null,
"download_url": "",
"downloads": {
"last_day": -1,
"last_month": -1,
"last_week": -1
},
"home_page": "https://gitlab.com/greenhousegroup/ai/libraries/apian/",
"keywords": "rest http web",
"license": "",
"maintainer": "",
"maintainer_email": "",
"name": "apian",
"package_url": "https://pypi.org/project/apian/",
"platform": "",
"project_url": "https://pypi.org/project/apian/",
"project_urls": {
"Homepage": "https://gitlab.com/greenhousegroup/ai/libraries/apian/"
},
"release_url": "https://pypi.org/project/apian/0.3.1/",
"requires_dist": null,
"requires_python": "",
"summary": " Small, opinionated library for building REST APIs.",
"version": "0.3.1"
},
"last_serial": 5820593,
"releases": {
"0.0.1": [
{
"comment_text": "",
"digests": {
"md5": "6683d0c3f89fa80ae1c675f171789831",
"sha256": "0ec8fd939f3c60a9de417bd7a8ac69913dda6df38e564975871d4eda19918f2b"
},
"downloads": -1,
"filename": "apian-0.0.1.tar.gz",
"has_sig": false,
"md5_digest": "6683d0c3f89fa80ae1c675f171789831",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 1678,
"upload_time": "2019-05-06T19:57:16",
"url": "https://files.pythonhosted.org/packages/0d/2b/d7ea71b819279cc173fd87fc421fd00ba448eadb3b28477830bcc60af187/apian-0.0.1.tar.gz"
}
],
"0.0.2": [
{
"comment_text": "",
"digests": {
"md5": "41c6d7653c9b704bcde246dd5dc1998f",
"sha256": "362765ea11c1c62e86ff005565ac3266771d7ac9f67ac4e7847b3e3d07903df2"
},
"downloads": -1,
"filename": "apian-0.0.2.tar.gz",
"has_sig": false,
"md5_digest": "41c6d7653c9b704bcde246dd5dc1998f",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 1671,
"upload_time": "2019-05-06T20:01:47",
"url": "https://files.pythonhosted.org/packages/9b/b8/bf69c03565b3d94eaf5736eda9db26f4323d447246f6563bfae5aa75ef02/apian-0.0.2.tar.gz"
}
],
"0.0.3": [
{
"comment_text": "",
"digests": {
"md5": "d86b335cb17a46ebebfab3a501982a7b",
"sha256": "890f645c300d9f0bb4f743462f1267ec3e8404854848a2c3cd16ae2c978b8851"
},
"downloads": -1,
"filename": "apian-0.0.3.tar.gz",
"has_sig": false,
"md5_digest": "d86b335cb17a46ebebfab3a501982a7b",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 3554,
"upload_time": "2019-05-06T20:03:45",
"url": "https://files.pythonhosted.org/packages/8a/98/ff98c60c345336254025b68643ec1d753212ba9189064c53629285e58129/apian-0.0.3.tar.gz"
}
],
"0.0.4": [
{
"comment_text": "",
"digests": {
"md5": "4dd2c76564ad82d1ec1b80df87244e4d",
"sha256": "81b38ce1a54d0e507f3a9806741d16faac7bd6eb375525dc75f50bb3b95e7150"
},
"downloads": -1,
"filename": "apian-0.0.4.tar.gz",
"has_sig": false,
"md5_digest": "4dd2c76564ad82d1ec1b80df87244e4d",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 3554,
"upload_time": "2019-05-06T20:08:16",
"url": "https://files.pythonhosted.org/packages/d9/f6/086e3fd80dcbb0c984994d85845e94c60a11d72c633666f70789996250a0/apian-0.0.4.tar.gz"
}
],
"0.0.5": [
{
"comment_text": "",
"digests": {
"md5": "237c0a6f6a2e4e3ca3e7d4733aacfb1d",
"sha256": "d5ac7632bcbc19a79496261816aa504e46fe41935e4b2648fc9cc80ee574623d"
},
"downloads": -1,
"filename": "apian-0.0.5.tar.gz",
"has_sig": false,
"md5_digest": "237c0a6f6a2e4e3ca3e7d4733aacfb1d",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 5559,
"upload_time": "2019-06-03T22:01:58",
"url": "https://files.pythonhosted.org/packages/73/71/76d7e2d29e62ed9ffbf351012f6e6fa1744e35d39522d044831eb66fd370/apian-0.0.5.tar.gz"
}
],
"0.0.6": [
{
"comment_text": "",
"digests": {
"md5": "e7bc4ab33856192d6209a28ca9175acd",
"sha256": "3a30ec832588b8153257dcef9f826a38ed9c72ed213dc3ea90ea243deebb2a43"
},
"downloads": -1,
"filename": "apian-0.0.6.tar.gz",
"has_sig": false,
"md5_digest": "e7bc4ab33856192d6209a28ca9175acd",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 5713,
"upload_time": "2019-07-03T11:05:05",
"url": "https://files.pythonhosted.org/packages/1a/1a/88b810f5cd34400d567e2b3167261ae7427387efd50645cf01d89c7176c5/apian-0.0.6.tar.gz"
}
],
"0.0.7": [
{
"comment_text": "",
"digests": {
"md5": "7825aea45599d7e370f542b233b6798d",
"sha256": "3ffa9e07983f0c23a9bc3425d52ce6fe32711b556baaca96f83a09da1532245b"
},
"downloads": -1,
"filename": "apian-0.0.7.tar.gz",
"has_sig": false,
"md5_digest": "7825aea45599d7e370f542b233b6798d",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 5714,
"upload_time": "2019-07-03T11:05:45",
"url": "https://files.pythonhosted.org/packages/05/cb/51a5665295cf45bccd5cf16960663d3e8a69ff52167f51a8568f83adac60/apian-0.0.7.tar.gz"
}
],
"0.1.0": [
{
"comment_text": "",
"digests": {
"md5": "5bec7f57c47d8f68267c3963b0189f95",
"sha256": "c38273e9f5d8091cef2e7a063a179cfe5265751df3711cef832ffa7596d2c030"
},
"downloads": -1,
"filename": "apian-0.1.0.tar.gz",
"has_sig": false,
"md5_digest": "5bec7f57c47d8f68267c3963b0189f95",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 3793,
"upload_time": "2019-05-06T20:36:41",
"url": "https://files.pythonhosted.org/packages/17/79/f4eb4c1e73ca683947b494393984a61c256fbbbaf94e631a754fff688097/apian-0.1.0.tar.gz"
}
],
"0.2.0": [
{
"comment_text": "",
"digests": {
"md5": "2364a8b7633ef96365792cd9ccc86cd9",
"sha256": "6c9aa1d94c62eac9192879336c3adf2c53a6202dc9cb9af2fd62101a0fa6f74d"
},
"downloads": -1,
"filename": "apian-0.2.0.tar.gz",
"has_sig": false,
"md5_digest": "2364a8b7633ef96365792cd9ccc86cd9",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 4326,
"upload_time": "2019-05-27T20:47:51",
"url": "https://files.pythonhosted.org/packages/32/8d/ee9d9aff04b9494a629eb9740313f8d81c132ee8359d4e36806f869b55b4/apian-0.2.0.tar.gz"
}
],
"0.2.4": [
{
"comment_text": "",
"digests": {
"md5": "8b688883f785b4312ab6bdcbf29fca02",
"sha256": "a74703ca9f86c5e6465dedc27e919d65117abc28f66da1bf678a8262b9378bd2"
},
"downloads": -1,
"filename": "apian-0.2.4.tar.gz",
"has_sig": false,
"md5_digest": "8b688883f785b4312ab6bdcbf29fca02",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 5282,
"upload_time": "2019-05-28T13:38:22",
"url": "https://files.pythonhosted.org/packages/62/bc/463140988eed5e3c4ad62f328be5928d5ab938515df5c4a52d78b0190eb8/apian-0.2.4.tar.gz"
}
],
"0.2.5": [
{
"comment_text": "",
"digests": {
"md5": "c17300fb1236732686219b73a0165ed2",
"sha256": "951b363c24f9b110088cb55cbe1f27ec5788c3f7190ea0aff28e329e8f5c005c"
},
"downloads": -1,
"filename": "apian-0.2.5.tar.gz",
"has_sig": false,
"md5_digest": "c17300fb1236732686219b73a0165ed2",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 5531,
"upload_time": "2019-05-28T21:40:54",
"url": "https://files.pythonhosted.org/packages/fb/f1/7b72a066cace4adcf9077bc324884e97b2b0ecbc191978971aafad8b01dc/apian-0.2.5.tar.gz"
}
],
"0.2.6": [
{
"comment_text": "",
"digests": {
"md5": "b1379db462549dd98287205b3035a4e6",
"sha256": "ea525ec80317e6fe66e3aef19be7850bd239a847ed32399fe776acee2a1d057f"
},
"downloads": -1,
"filename": "apian-0.2.6.tar.gz",
"has_sig": false,
"md5_digest": "b1379db462549dd98287205b3035a4e6",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 5565,
"upload_time": "2019-05-30T11:33:51",
"url": "https://files.pythonhosted.org/packages/d2/e7/839450a4357b3ca714d6f8723b2f63e40b9727ca1ffe6c67e972d53eaf66/apian-0.2.6.tar.gz"
}
],
"0.3.0": [
{
"comment_text": "",
"digests": {
"md5": "fae6e38c9b73844591b7e6f3849721f4",
"sha256": "4c6216f380e2096ea1e9782583514a4cbc47bd5e946f1d9859eb01f5dd5e479b"
},
"downloads": -1,
"filename": "apian-0.3.0.tar.gz",
"has_sig": false,
"md5_digest": "fae6e38c9b73844591b7e6f3849721f4",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 5684,
"upload_time": "2019-07-03T11:35:11",
"url": "https://files.pythonhosted.org/packages/a3/8e/edb810b67f1518359dda49173da63760268d6c5868a7fda0902fce015a6f/apian-0.3.0.tar.gz"
}
],
"0.3.1": [
{
"comment_text": "",
"digests": {
"md5": "889fc526bffe1813e276d8dabaf56606",
"sha256": "c3138ca4a2da83659b911bf56f8c04a390eccea4d1464b13d7bb2b87ceb7d104"
},
"downloads": -1,
"filename": "apian-0.3.1.tar.gz",
"has_sig": false,
"md5_digest": "889fc526bffe1813e276d8dabaf56606",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 5685,
"upload_time": "2019-09-12T13:47:06",
"url": "https://files.pythonhosted.org/packages/e7/89/ebefa9a4413a61d653935e01c6a0613b161b95b4d6b7a3888d37c757a3dd/apian-0.3.1.tar.gz"
}
]
},
"urls": [
{
"comment_text": "",
"digests": {
"md5": "889fc526bffe1813e276d8dabaf56606",
"sha256": "c3138ca4a2da83659b911bf56f8c04a390eccea4d1464b13d7bb2b87ceb7d104"
},
"downloads": -1,
"filename": "apian-0.3.1.tar.gz",
"has_sig": false,
"md5_digest": "889fc526bffe1813e276d8dabaf56606",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 5685,
"upload_time": "2019-09-12T13:47:06",
"url": "https://files.pythonhosted.org/packages/e7/89/ebefa9a4413a61d653935e01c6a0613b161b95b4d6b7a3888d37c757a3dd/apian-0.3.1.tar.gz"
}
]
}