{ "info": { "author": "Dustin J. Mitchell", "author_email": "dustin@mozilla.com", "bugtrack_url": null, "classifiers": [], "description": "RelengAPI\n=========\n\nContinuous Integration: https://travis-ci.org/mozilla/build-relengapi\n[![codecov.io](http://codecov.io/github/mozilla/build-relengapi/coverage.svg?branch=master)](http://codecov.io/github/mozilla/build-relengapi?branch=master)\n\nYour Interface to Release Engineering Automation.\n\nThis is the framework behind https://api.pub.build.mozilla.org/.\nIt is a Flask-based framework for building and hosting releng-related APIs.\n\nGoals\n-----\n\n * Simple self-service usage for consumers\n * Industry-standard access mechanisms (REST, oAuth2, etc.) that require no client-side custom libraries\n * One or very few endpoints (e.g., https://api.pub.build.mozilla.org)\n * Self-documenting tools\n * Semantic versioning \n\n * Simple, rapid implementation of new apps\n * Common requirements such as authentication, database access, scheduled tasks, configuration handling are already satisfied\n * All apps use the same technologies (language, web framework, DB framework, etc.), so the learning curve from one app to the next is small\n * Tailored for easy local development - minimal requirements, minimal installed components, etc. \n\n * Operations-friendly\n * Horizontally scalable using normal webops techniques\n * Easily deployed in multiple environments with normal devops processes\n * Resilient to failure: no in-memory state \n\nDocumentation\n-------------\n\nRelengAPI documents itself. \nSee https://api.pub.build.mozilla.org/docs for the documentation of the currently-deployed version.\n\nInfo for Developers\n-------------------\n\nSee the \"Installation\" page of the deployment documentation for information on required operating system packages.\n\n### Structure\n\nRelengAPI is a [Flask](http://flask.pocoo.org/) application. It is composed of several Python distributions (packages).\nEach distribution can contain several [Flask Blueprints](http://flask.pocoo.org/docs/blueprints/) -- web application components.\nEach Git repository can contain multiple distributions.\n\nThe base is in the `relengapi` distribution, implemented in this package.\nIt implements the root app, with lots of common support functionality, and a number of blueprints.\nIt also searches its python environment for other distributions that can provide blueprints for the Releng API.\nThese act as plugins, adding extra endpoints and other functionality to the API.\n\nOther top-level directories of this repository contain other related distributions with more blueprints.\nOther repositories contain even more distributions, with even more blueprints.\n\nAll of this is drawn together in production by installing the appropriate distributions on the releng web cluster.\nWhen developing, though, only the `relengapi` distribution and the distribution you're hacking on are required.\n\n### Running RelengAPI\n\nTo run the tool for development, pip install the requirements into your virtualenv:\n\n pip install -e .[test]\n\nThe `[test]` installs the requirements for testing as well.\nOmit this if you won't be running tests.\n\n[optional] Build the docs:\n\n relengapi build-docs \n\n[optional] Set up your settings file:\n\n cp settings_example.py settings.py\n vim settings.py\n export RELENGAPI_SETTINGS=$PWD/settings.py\n\nCreate the databases for the installed blueprints:\n\n relengapi createdb\n\nAnd finally run the server:\n\n relengapi serve -p 8010\n\nThe `relengapi` tool has many useful subcommands.\nSee its help for more information.\n\n### More\n\nSee the Releng API documentation for more information on development and deployment of the releng API.\nThis is available at https://api.pub.build.mozilla.org/docs or, If you've installed the `docs` blueprint, at the same path on your own instance.\n", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://api.pub.build.mozilla.org", "keywords": "", "license": "MPL2", "maintainer": "", "maintainer_email": "", "name": "relengapi", "package_url": "https://pypi.org/project/relengapi/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/relengapi/", "project_urls": { "Homepage": "https://api.pub.build.mozilla.org" }, "release_url": "https://pypi.org/project/relengapi/3.3.8/", "requires_dist": null, "requires_python": "", "summary": "The code behind https://api.pub.build.mozilla.org", "version": "3.3.8" }, "last_serial": 4531009, "releases": { "0.3": [ { "comment_text": "", "digests": { "md5": "acff24d625b46b7f0d65921fc859a3c4", "sha256": "0c865fc3010c872d47b84cd01baf2ea5f86001e1193f3f7939312622a9a5aa6f" }, "downloads": -1, "filename": "relengapi-0.3.tar.gz", "has_sig": false, "md5_digest": "acff24d625b46b7f0d65921fc859a3c4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 317519, "upload_time": "2014-10-13T17:26:55", "url": "https://files.pythonhosted.org/packages/31/fa/47b7c8017845739737ec2241f4bc7ab631307e177ee00b9203ca116496ff/relengapi-0.3.tar.gz" } ], "1.0.0": [ { "comment_text": "", "digests": { "md5": "05958c1a2c4d0e4c30c54f687c7b61ca", "sha256": "6e5d1807eeb6435fc9167694bb22a6e823ca778e193bd64ee1b9a2f09f6b37d2" }, "downloads": -1, "filename": "relengapi-1.0.0.tar.gz", "has_sig": false, "md5_digest": "05958c1a2c4d0e4c30c54f687c7b61ca", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 318616, "upload_time": "2014-10-16T16:05:02", "url": "https://files.pythonhosted.org/packages/34/d2/1a8ac9d2904c5498745a7469d7ed1452730ef2fd1480813c657b6c18382f/relengapi-1.0.0.tar.gz" } ], "1.0.1": [ { "comment_text": "", "digests": { "md5": "57cfa071f2ee9ee62c82af354d8041fb", "sha256": "8476fc7fd8df4a9031db85d6c14b6efeb61661beb808975d2ed493df4965c756" }, "downloads": -1, "filename": "relengapi-1.0.1.tar.gz", "has_sig": false, "md5_digest": "57cfa071f2ee9ee62c82af354d8041fb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 448124, "upload_time": "2014-10-29T15:54:09", "url": "https://files.pythonhosted.org/packages/86/ba/a5b2d5bfb8063085939dbb99c5c74c28f40bc0b28ab058c0b749c027db3d/relengapi-1.0.1.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "ecd500feae2fe03ffddc38b740092ac5", "sha256": "5c9ca81cac9a7298921cba00570383f8cd15235f4282581c5cc918835f1a62fb" }, "downloads": -1, "filename": "relengapi-1.1.0.tar.gz", "has_sig": false, "md5_digest": "ecd500feae2fe03ffddc38b740092ac5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 756674, "upload_time": "2015-01-15T17:53:36", "url": "https://files.pythonhosted.org/packages/d1/29/af251046f767d38a9aa4470a1b8f231c27945efadd2af69329e991372713/relengapi-1.1.0.tar.gz" } ], "1.1.1": [ { "comment_text": "", "digests": { "md5": "8982b6ed5c2514cf1c9672272f50d4ab", "sha256": "9bdfd6dc59a677100aecbb3474fe9fc7f8c8a9d568b5bc3fe639686856b71397" }, "downloads": -1, "filename": "relengapi-1.1.1.tar.gz", "has_sig": false, "md5_digest": "8982b6ed5c2514cf1c9672272f50d4ab", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 757482, "upload_time": "2015-03-09T18:57:40", "url": "https://files.pythonhosted.org/packages/19/c5/5c62db96d3b83dfa33280d136a90c11124409f8ba90fcedbd1dbc7f386df/relengapi-1.1.1.tar.gz" } ], "2.0.0": [], "2.0.1": [ { "comment_text": "", "digests": { "md5": "c704460482073d40951f6cb05c4a0c03", "sha256": "5f975f491ff557045daa4b2c03712c5a55de5bad383475b6a08a3618da07cc38" }, "downloads": -1, "filename": "relengapi-2.0.1.tar.gz", "has_sig": true, "md5_digest": "c704460482073d40951f6cb05c4a0c03", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 776402, "upload_time": "2015-04-01T20:36:54", "url": "https://files.pythonhosted.org/packages/78/63/db12b3175df16fc5fd804ef489846019d2d0abcafe5536a95636bf7bcab7/relengapi-2.0.1.tar.gz" } ], "2.0.2": [ { "comment_text": "", "digests": { "md5": "ff486c524968638dae7f21f92bd689eb", "sha256": "b4a9299f4ffba8bc7785a8fd915010c90459a925b2784245cfd89ac31f54561a" }, "downloads": -1, "filename": "relengapi-2.0.2.tar.gz", "has_sig": true, "md5_digest": "ff486c524968638dae7f21f92bd689eb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 776507, "upload_time": "2015-04-02T15:24:07", "url": "https://files.pythonhosted.org/packages/d5/d4/48a1e29265fc6e5c042be923f6788882d68871707d0840f10bbb5faaca84/relengapi-2.0.2.tar.gz" } ], "2.0.3": [ { "comment_text": "", "digests": { "md5": "0ffc897468f1bf0b2dee7612248242fd", "sha256": "41b231fc50f56c9b3e5b9f54cda7c1de48a7b51b29a71a6ebdddec0528f0558d" }, "downloads": -1, "filename": "relengapi-2.0.3.tar.gz", "has_sig": true, "md5_digest": "0ffc897468f1bf0b2dee7612248242fd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 776896, "upload_time": "2015-04-07T15:23:30", "url": "https://files.pythonhosted.org/packages/b0/20/3c0837a1f708e0d478e0506235db8172c5d2d99d4bef593075ff485bc874/relengapi-2.0.3.tar.gz" } ], "2.1.0": [ { "comment_text": "", "digests": { "md5": "27d42316e08030827cde411e42d7e1d2", "sha256": "49141cfdf70eb78d5e191955ce53aa6a0e61dc6f4634ae3515d2e6c753de463c" }, "downloads": -1, "filename": "relengapi-2.1.0.tar.gz", "has_sig": true, "md5_digest": "27d42316e08030827cde411e42d7e1d2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 780465, "upload_time": "2015-05-08T15:01:49", "url": "https://files.pythonhosted.org/packages/1d/ae/79e148540330ec38b251d0d82f3d9494a75e2efbae36d56f1355fa4541a3/relengapi-2.1.0.tar.gz" } ], "2.1.1": [ { "comment_text": "", "digests": { "md5": "175ff11ff51eb5382088575cab8a460c", "sha256": "00a48bcae64da6d262d92b00f41bdda63a01e37dd7daf4bd951ff15a000e981e" }, "downloads": -1, "filename": "relengapi-2.1.1.tar.gz", "has_sig": true, "md5_digest": "175ff11ff51eb5382088575cab8a460c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 780490, "upload_time": "2015-05-08T19:09:23", "url": "https://files.pythonhosted.org/packages/0b/cb/21bcc335a695e3daf63131fda643286817f27067962fb79c07d4d2a1be2f/relengapi-2.1.1.tar.gz" } ], "3.0.0": [ { "comment_text": "", "digests": { "md5": "61444bd674fb7da31d55082efc4b3e28", "sha256": "5e735feefb42c36244f6b0cb10b0d5d8652a09f0b52bd701b88704c9b4c4a49d" }, "downloads": -1, "filename": "relengapi-3.0.0.tar.gz", "has_sig": true, "md5_digest": "61444bd674fb7da31d55082efc4b3e28", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 827661, "upload_time": "2015-06-09T13:59:37", "url": "https://files.pythonhosted.org/packages/02/df/199e07b954195bb4bfe083a31b6bc9731026ab822a7a99a1b8f72b31fb1a/relengapi-3.0.0.tar.gz" } ], "3.2.0": [ { "comment_text": "", "digests": { "md5": "4687e3d3f3012fb3c116942f0b2ca30c", "sha256": "957b3772ef3ef0c069aeddbbfdc2d359abb7e04abb2ab63149c04d2e0113bbf3" }, "downloads": -1, "filename": "relengapi-3.2.0.tar.gz", "has_sig": true, "md5_digest": "4687e3d3f3012fb3c116942f0b2ca30c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 868298, "upload_time": "2015-08-06T20:23:50", "url": "https://files.pythonhosted.org/packages/61/9a/55994e09b0266f5cc5b5b2154ad864a313e25c2e1dc5625112d6cf6621f1/relengapi-3.2.0.tar.gz" } ], "3.2.1": [ { "comment_text": "", "digests": { "md5": "977d9eae6dccc4533bd1fa8432b59c78", "sha256": "375ac2499104b01b0f0b96aee5c60d92f17024f8ea8aab6f53b37a18a619adcf" }, "downloads": -1, "filename": "relengapi-3.2.1.tar.gz", "has_sig": true, "md5_digest": "977d9eae6dccc4533bd1fa8432b59c78", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 868644, "upload_time": "2015-08-06T21:19:20", "url": "https://files.pythonhosted.org/packages/26/7c/90f4eca6c31280809f48b03bab0527f6ba9959e8bd36ab15b05a83d90fd6/relengapi-3.2.1.tar.gz" } ], "3.3.0": [ { "comment_text": "", "digests": { "md5": "d56998d4b5cf6ce3586329a260c12e65", "sha256": "d2d1bb51ed3c9e4c9de02a186388a277105549690113e7c3c37670d116c9ffbc" }, "downloads": -1, "filename": "relengapi-3.3.0.tar.gz", "has_sig": false, "md5_digest": "d56998d4b5cf6ce3586329a260c12e65", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1010314, "upload_time": "2015-09-14T20:21:43", "url": "https://files.pythonhosted.org/packages/8e/5d/c961160a033820897eb519a41868a1a3078f0b5e26486bb8ca0e75fddd39/relengapi-3.3.0.tar.gz" } ], "3.3.1": [ { "comment_text": "", "digests": { "md5": "0a9df92472f43f4ef05c3c724b08c51a", "sha256": "d7e90a64ea1e2653f6886dbb68e04fd100b4a9cc842296c6406d030ab18d5584" }, "downloads": -1, "filename": "relengapi-3.3.1.tar.gz", "has_sig": true, "md5_digest": "0a9df92472f43f4ef05c3c724b08c51a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1009200, "upload_time": "2015-10-14T15:28:38", "url": "https://files.pythonhosted.org/packages/05/9e/095114ad7226aaff8855d5b3362571ccc1de282c836c22de769653f14657/relengapi-3.3.1.tar.gz" } ], "3.3.2": [ { "comment_text": "", "digests": { "md5": "189e0159dcf837425e24e01c072ecca2", "sha256": "1d2118e50eac89fc1d3b4e53eea4c7998d9d4020470676d2995ba8ee3247809e" }, "downloads": -1, "filename": "relengapi-3.3.2.tar.gz", "has_sig": true, "md5_digest": "189e0159dcf837425e24e01c072ecca2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1009233, "upload_time": "2015-10-16T15:36:42", "url": "https://files.pythonhosted.org/packages/d3/2c/5bab99ca3c0d96d8e3acdd0d3a010fd3350964a48dbdced1f2881195e97e/relengapi-3.3.2.tar.gz" } ], "3.3.3": [ { "comment_text": "", "digests": { "md5": "301f4fd2c2a06ce3d9586cc49a98aa0e", "sha256": "18b57d36f0f79bb6b0e8d382aff8876ab68af5d85ea33f4e4383d86c5e7ffec9" }, "downloads": -1, "filename": "relengapi-3.3.3.tar.gz", "has_sig": false, "md5_digest": "301f4fd2c2a06ce3d9586cc49a98aa0e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1009160, "upload_time": "2016-01-19T20:26:59", "url": "https://files.pythonhosted.org/packages/d3/af/a7b908ec9f1fcc1adb518f892f9c28d1166e274b55e84db3e553f4049d6c/relengapi-3.3.3.tar.gz" } ], "3.3.4": [ { "comment_text": "", "digests": { "md5": "228d8252de25f47c0a4b78b365618563", "sha256": "95ad0f69a7612d83983f83b9283c90e9cdcc290900e18a3539be957c5d7479fb" }, "downloads": -1, "filename": "relengapi-3.3.4.tar.gz", "has_sig": false, "md5_digest": "228d8252de25f47c0a4b78b365618563", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1009333, "upload_time": "2016-01-20T14:57:35", "url": "https://files.pythonhosted.org/packages/e1/b9/244103791a22e4d8099141848faf85210e4122a5d1b5532b1d955d247dc2/relengapi-3.3.4.tar.gz" } ], "3.3.5": [ { "comment_text": "", "digests": { "md5": "8bf0c991e0a4fd490ca86e5c26f7df2d", "sha256": "beaf86874a11e0a981445876cf1ccc6d962cb4e14f60b733268a83e72a0fd61b" }, "downloads": -1, "filename": "relengapi-3.3.5.tar.gz", "has_sig": false, "md5_digest": "8bf0c991e0a4fd490ca86e5c26f7df2d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1009461, "upload_time": "2016-02-05T18:59:27", "url": "https://files.pythonhosted.org/packages/c2/3f/78b7c0e2b0010db4236aa0506f1e3b152fbd1a659bafd9dd39e07551f384/relengapi-3.3.5.tar.gz" } ], "3.3.6": [ { "comment_text": "", "digests": { "md5": "b2deb00256ef53c4a9115688be941030", "sha256": "1ce75e8da2686458d2f7e9150bc0cf72be05863b6fdbcac1c90d10aca5a788e7" }, "downloads": -1, "filename": "relengapi-3.3.6.tar.gz", "has_sig": false, "md5_digest": "b2deb00256ef53c4a9115688be941030", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1009553, "upload_time": "2016-02-17T20:21:09", "url": "https://files.pythonhosted.org/packages/a9/51/77819c2a307e9643ded8104a82dca7c8b5bb5d1a338e9ad394d6664fbf08/relengapi-3.3.6.tar.gz" } ], "3.3.7": [ { "comment_text": "", "digests": { "md5": "dad869d8748d4af2de62848049e63ff1", "sha256": "fcf91de36787704129faef04bde0cabc5778f4e9e231f2ba48f72d92e9caf175" }, "downloads": -1, "filename": "relengapi-3.3.7.tar.gz", "has_sig": false, "md5_digest": "dad869d8748d4af2de62848049e63ff1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1012827, "upload_time": "2016-03-14T19:47:56", "url": "https://files.pythonhosted.org/packages/4f/85/d036ea7b05429c563e72989c32b76e115b1cb4292de52305c1cc4e5bd035/relengapi-3.3.7.tar.gz" } ], "3.3.8": [ { "comment_text": "", "digests": { "md5": "9ec577389a973c83d9d5e2b4c34457d7", "sha256": "5adae51cf81726ddfd517e67cd1b049a5e1bcf4a0fc9c1b73e5a8db0bbf7350a" }, "downloads": -1, "filename": "relengapi-3.3.8.tar.gz", "has_sig": false, "md5_digest": "9ec577389a973c83d9d5e2b4c34457d7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1012964, "upload_time": "2016-03-14T20:27:53", "url": "https://files.pythonhosted.org/packages/c1/83/7bffa30e7310bc179f064ce1176847a1971f91e8ac97dafb62ca00e8a44a/relengapi-3.3.8.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "9ec577389a973c83d9d5e2b4c34457d7", "sha256": "5adae51cf81726ddfd517e67cd1b049a5e1bcf4a0fc9c1b73e5a8db0bbf7350a" }, "downloads": -1, "filename": "relengapi-3.3.8.tar.gz", "has_sig": false, "md5_digest": "9ec577389a973c83d9d5e2b4c34457d7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1012964, "upload_time": "2016-03-14T20:27:53", "url": "https://files.pythonhosted.org/packages/c1/83/7bffa30e7310bc179f064ce1176847a1971f91e8ac97dafb62ca00e8a44a/relengapi-3.3.8.tar.gz" } ] }