{ "info": { "author": "Cosmin Stejerean", "author_email": "cosmin@offbytwo.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "License :: OSI Approved :: Apache Software License", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Topic :: Software Development :: Libraries" ], "description": "# stashy\n\nPython client for the Atlassian Bitbucket Server (formerly known as Stash) [REST API](https://docs.atlassian.com/bitbucket-server/rest/5.7.0/bitbucket-rest.html). Supports Python 2.6, 2.7, 3.5, 3.6 and 3.7\n\n[![Build Status](https://travis-ci.org/cosmin/stashy.png?branch=master)](https://travis-ci.org/cosmin/stashy)\n[![PyPI version](https://img.shields.io/pypi/v/stashy.svg)](https://pypi.org/project/stashy)]\n[![conda-forge](https://img.shields.io/conda/vn/conda-forge/stashy.svg)](https://anaconda.org/conda-forge/stashy)]\n\n\n## Installation\n\n```\npip install stashy\n```\n\n## Usage\n```python\nimport stashy\nstash = stashy.connect(\"http://localhost:7990/stash\", \"admin\", \"admin\")\n```\n\n## Examples\n\n* Retrieve all groups\n\n```python\nstash.admin.groups.list()\n```\n\n* Retrieve all users that match a given filter\n\n```python\nstash.admin.users.list(filter=\"admin\")\n```\n\n* Add a user to a group\n\n```python\nstash.admin.groups.add_user('stash-users', 'admin')\n```\n\n* Iterate over all projects (that you have access to)\n\n```python\nstash.projects.list()\n```\n\n* List all the repositories in a given project\n\n```python\nstash.projects[PROJECT].repos.list()\n```\n\n* List all the commits in a pull request\n\n```python\nlist(stash.projects[PROJECT].repos[REPO].pull_requests[PULL_REQUEST].commits())\n```\n\n* Show the diff of a pull request\n\n```python\nstash.project[PROJECT].repos[REPO].pull_requests[PULL_REQUEST].diff()\n```\n\n* List all branch restrictions for a repo\n```python\nstash.projects[PROJECT].repos[REPO].restricted.list()\n```\n\n* List all branch permission entities for a repo\n```python\nstash.projects[PROJECT].repos[REPO].permitted.list()\n```\n\n## Implemented\n\n```\n/admin/groups [DELETE, GET, POST]\n/admin/groups/add-user [POST]\n/admin/groups/more-members [GET]\n/admin/groups/more-non-members [GET]\n/admin/groups/remove-user [POST]\n/admin/users [GET, POST, DELETE, PUT]\n/admin/users/add-group [POST]\n/admin/users/credentials [PUT]\n/admin/users/more-members [GET]\n/admin/users/more-non-members [GET]\n/admin/users/remove-group [POST]\n/admin/permissions/groups [GET, PUT, DELETE]\n/admin/permissions/groups/none [GET]\n/admin/permissions/users [GET, PUT, DELETE]\n/admin/permissions/users/none [GET]\n/groups [GET]\n/projects [POST, GET]\n/projects/{projectKey} [DELETE, PUT, GET]\n/projects/{projectKey}/permissions/groups [GET, PUT, DELETE]\n/projects/{projectKey}/permissions/groups/none [GET]\n/projects/{projectKey}/permissions/users [GET, PUT, DELETE]\n/projects/{projectKey}/permissions/users/none [GET]\n/projects/{projectKey}/permissions/{permission}/all [GET, POST]\n/projects/{projectKey}/repos [POST, GET]\n/projects/{projectKey}/repos/{repositorySlug} [DELETE, POST, PUT, GET]\n/projects/{projectKey}/repos/{repositorySlug}/branches [GET, PUT, DELETE]\n/projects/{projectKey}/repos/{repositorySlug}/branches/default [GET, PUT]\n/projects/{projectKey}/repos/{repositorySlug}/branches/info/{changesetId} [GET]\n/projects/{projectKey}/repos/{repositorySlug}/changes [GET]\n/projects/{projectKey}/repos/{repositorySlug}/commits [GET]\n/projects/{projectKey}/repos/{repositorySlug}/permissions [GET, POST,DELETE]\n/projects/{projectKey}/repos/{repositorySlug}/pull-requests [GET, POST]\n/projects/{projectKey}/repos/{repositorySlug}/pull-requests/{pullRequestId} [GET, PUT]\n/projects/{projectKey}/repos/{repositorySlug}/pull-requests/{pullRequestId}/activities [GET]\n/projects/{projectKey}/repos/{repositorySlug}/pull-requests/{pullRequestId}/decline [POST]\n/projects/{projectKey}/repos/{repositorySlug}/pull-requests/{pullRequestId}/merge [GET, POST]\n/projects/{projectKey}/repos/{repositorySlug}/pull-requests/{pullRequestId}/reopen [POST]\n/projects/{projectKey}/repos/{repositorySlug}/pull-requests/{pullRequestId}/approve [POST, DELETE]\n/projects/{projectKey}/repos/{repositorySlug}/pull-requests/{pullRequestId}/watch [POST, DELETE]\n/projects/{projectKey}/repos/{repositorySlug}/pull-requests/{pullRequestId}/changes [GET]\n/projects/{projectKey}/repos/{repositorySlug}/pull-requests/{pullRequestId}/comments [POST]\n/projects/{projectKey}/repos/{repositorySlug}/pull-requests/{pullRequestId}/commits [GET]\n/projects/{projectKey}/repos/{repositorySlug}/settings/hooks [GET]\n/projects/{projectKey}/repos/{repositorySlug}/settings/hooks/{hookKey} [GET]\n/projects/{projectKey}/repos/{repositorySlug}/settings/hooks/{hookKey}/enabled [PUT, DELETE]\n/projects/{projectKey}/repos/{repositorySlug}/settings/hooks/{hookKey}/settings [PUT, GET]\n/projects/{projectKey}/repos/{repositorySlug}/settings/pull-requests [GET, POST]\n/projects/{projectKey}/repos/{repositorySlug}/tags [GET]\n/build-status/1.0/commits/{commit-hash} [GET, POST]\n```\n\n## Not yet implemented\n\n```\n/admin/mail-server [DELETE]\n/application-properties [GET]\n/hooks/{hookKey}/avatar [GET]\n/logs/logger/{loggerName} [GET]\n/logs/logger/{loggerName}/{levelName} [PUT]\n/logs/rootLogger [GET]\n/logs/rootLogger/{levelName} [PUT]\n/markup/preview [POST]\n/profile/recent/repos [GET]\n/projects/{projectKey}/avatar.png [GET, POST]\n/projects/{projectKey}/repos/{repositorySlug}/recreate [POST]\n/projects/{projectKey}/repos/{repositorySlug}/browse [GET]\n/projects/{projectKey}/repos/{repositorySlug}/browse/{path:.*} [GET]\n/projects/{projectKey}/repos/{repositorySlug}/commits/{changesetId:.*} [GET]\n/projects/{projectKey}/repos/{repositorySlug}/diff/{path:.*} [GET]\n/projects/{projectKey}/repos/{repositorySlug}/files [GET]\n/projects/{projectKey}/repos/{repositorySlug}/files/{path:.*} [GET]\n/projects/{projectKey}/repos/{repositorySlug}/pull-requests/{pullRequestId}/comments/{commentId} [DELETE, PUT, GET]\n/projects/{projectKey}/repos/{repositorySlug}/pull-requests/{pullRequestId}/diff [GET]\n/projects/{projectKey}/repos/{repositorySlug}/pull-requests/{pullRequestId}/diff/{path:.*} [GET]\n/projects/{projectKey}/repos/{repositorySlug}/pull-requests/{pullRequestId}/participants [GET, DELETE, POST]\n/users [GET, PUT]\n/users/credentials [PUT]\n```\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "https://github.com/cosmin/stashy", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://github.com/cosmin/stashy", "keywords": "", "license": "Apache License 2.0", "maintainer": "", "maintainer_email": "", "name": "stashy", "package_url": "https://pypi.org/project/stashy/", "platform": "", "project_url": "https://pypi.org/project/stashy/", "project_urls": { "Download": "https://github.com/cosmin/stashy", "Homepage": "http://github.com/cosmin/stashy" }, "release_url": "https://pypi.org/project/stashy/0.6/", "requires_dist": [ "decorator (>=3.4.0)", "requests (>=2.5.1)", "mock", "enum34; python_version < \"3.4\"" ], "requires_python": "", "summary": "Python API client for the Atlassian Bitbucket Server (formerly known as Stash) REST API", "version": "0.6" }, "last_serial": 4738557, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "a34b25f50ed7afaca2097d2083583683", "sha256": "20e6b4e0da8c8cf5392e0737e86e8636c9f8501566c829b1a811a763ada5996e" }, "downloads": -1, "filename": "stashy-0.1.tar.gz", "has_sig": false, "md5_digest": "a34b25f50ed7afaca2097d2083583683", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10094, "upload_time": "2014-05-07T04:11:49", "url": "https://files.pythonhosted.org/packages/41/84/cbe3be56b83524eb287b04dacb47f0c50c6a8ba2340756d53c7f62e80968/stashy-0.1.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "d1e35917154c858a872a3c9ecf1c7d1e", "sha256": "9fb815f492616914e82c1d2bf8e9a085ed471aa17c48e43217c0ebc65a7383cb" }, "downloads": -1, "filename": "stashy-0.1.1.tar.gz", "has_sig": false, "md5_digest": "d1e35917154c858a872a3c9ecf1c7d1e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10607, "upload_time": "2014-07-14T03:57:39", "url": "https://files.pythonhosted.org/packages/86/58/86587a7a9cea3533ad8e744f512aa915cf8ecd43a75eded1ee4e90bf654d/stashy-0.1.1.tar.gz" } ], "0.3": [ { "comment_text": "", "digests": { "md5": "006888bf4be3a9ea9ca6b1dea83102a2", "sha256": "0709ed0f1eb54f8678504659cd84d9acadf74d3b1e0691e053613b3b8ee25c80" }, "downloads": -1, "filename": "stashy-0.3.tar.gz", "has_sig": false, "md5_digest": "006888bf4be3a9ea9ca6b1dea83102a2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13532, "upload_time": "2016-09-20T03:58:08", "url": "https://files.pythonhosted.org/packages/3f/58/c2f51218144ace50acdc3774d999cfff393b53c4df505c92022185bb2286/stashy-0.3.tar.gz" } ], "0.5": [ { "comment_text": "", "digests": { "md5": "d6b39387477a7a51ff333a81ec41f53f", "sha256": "8137932f8fec2400e555fb230d51a47deb389955d2a2dbb37c1b6e59cf5f5983" }, "downloads": -1, "filename": "stashy-0.5.tar.gz", "has_sig": false, "md5_digest": "d6b39387477a7a51ff333a81ec41f53f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15330, "upload_time": "2018-02-12T19:41:51", "url": "https://files.pythonhosted.org/packages/1c/a4/6247cb4fca6fa7b553bafd5dcb0b01b47e56ceca4343059fa26894a825ea/stashy-0.5.tar.gz" } ], "0.6": [ { "comment_text": "", "digests": { "md5": "722be0bae6d986d5ccbe8e945509cda3", "sha256": "c211eeaa993556bef9d379febbd4b06c721a864a407852b4d9a901633201ff11" }, "downloads": -1, "filename": "stashy-0.6-py3-none-any.whl", "has_sig": false, "md5_digest": "722be0bae6d986d5ccbe8e945509cda3", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 21586, "upload_time": "2019-01-25T05:22:53", "url": "https://files.pythonhosted.org/packages/38/35/6dcda1a4d82841a9fd22a2b4c94a3182fd5602e762b0604d20eddb1c8885/stashy-0.6-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "abc842d382bd8bcbba1319601c6bff39", "sha256": "ce7495e3c5b74f475436b7eeffb1c8b7a0fe2508013bde9ae08b1d9d19d75b03" }, "downloads": -1, "filename": "stashy-0.6.tar.gz", "has_sig": false, "md5_digest": "abc842d382bd8bcbba1319601c6bff39", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16804, "upload_time": "2019-01-25T05:22:55", "url": "https://files.pythonhosted.org/packages/10/14/c9a7ed220f358004b4ae874555c78a5897c0ffc773739f9b0a8b9af34a92/stashy-0.6.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "722be0bae6d986d5ccbe8e945509cda3", "sha256": "c211eeaa993556bef9d379febbd4b06c721a864a407852b4d9a901633201ff11" }, "downloads": -1, "filename": "stashy-0.6-py3-none-any.whl", "has_sig": false, "md5_digest": "722be0bae6d986d5ccbe8e945509cda3", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 21586, "upload_time": "2019-01-25T05:22:53", "url": "https://files.pythonhosted.org/packages/38/35/6dcda1a4d82841a9fd22a2b4c94a3182fd5602e762b0604d20eddb1c8885/stashy-0.6-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "abc842d382bd8bcbba1319601c6bff39", "sha256": "ce7495e3c5b74f475436b7eeffb1c8b7a0fe2508013bde9ae08b1d9d19d75b03" }, "downloads": -1, "filename": "stashy-0.6.tar.gz", "has_sig": false, "md5_digest": "abc842d382bd8bcbba1319601c6bff39", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16804, "upload_time": "2019-01-25T05:22:55", "url": "https://files.pythonhosted.org/packages/10/14/c9a7ed220f358004b4ae874555c78a5897c0ffc773739f9b0a8b9af34a92/stashy-0.6.tar.gz" } ] }