• Stars
    star
    230
  • Rank 173,086 (Top 4 %)
  • Language
    Python
  • License
    Other
  • Created over 11 years ago
  • Updated about 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Python API client for the Atlassian Stash REST API

stashy

Python client for the Atlassian Bitbucket Server (formerly known as Stash) REST API. Supports Python 2.6, 2.7, 3.5, 3.6 and 3.7

Build Status PyPI version conda-forge

Installation

pip install stashy

Testing

tox

Usage

import stashy
stash = stashy.connect("http://localhost:7990/stash", "admin", "admin")

Examples

  • Retrieve all groups
stash.admin.groups.list()
  • Retrieve all users that match a given filter
stash.admin.users.list(filter="admin")
  • Add a user to a group
stash.admin.groups.add_user('stash-users', 'admin')
  • Iterate over all projects (that you have access to)
stash.projects.list()
  • List all the repositories in a given project
stash.projects[PROJECT].repos.list()
  • Create a pull request
list(stash.projects[PROJECT].repos[REPO].pull_requests.create('PR_TITLE', 'SOURCE_REF', 'TARGET_REF', 'PR_COMMENT', 'PR_REVIEWERS_LIST'))
  • List all the commits in a pull request
list(stash.projects[PROJECT].repos[REPO].pull_requests[PULL_REQUEST].commits())
  • List all comments of pull request
list(stash..projects[PROJECT].repos[REPO].pull_requests[PULL_REQUEST].activities(fromType='COMMENTED')))
  • Delete specific comment
stash.projects[PROJECT].repos[REPO].pull_requests[PULL_REQUEST].delete_comment(COMMENT_ID, COMMENT_VERSION)
  • Update existing comment
stash.projects[PROJECT].repos[REPO].pull_requests[PULL_REQUEST].update_comment(COMMENT_ID, COMMENT_VERSION, COMMENT_TEXT)
  • Show the diff of a pull request
stash.projects[PROJECT].repos[REPO].pull_requests[PULL_REQUEST].diff()
  • List all branch restrictions for a repo
stash.projects[PROJECT].repos[REPO].restricted.list()
  • List all branch permission entities for a repo
stash.projects[PROJECT].repos[REPO].permitted.list()

Implemented

/admin/groups [DELETE, GET, POST]
/admin/groups/add-user [POST]
/admin/groups/more-members [GET]
/admin/groups/more-non-members [GET]
/admin/groups/remove-user [POST]
/admin/users [GET, POST, DELETE, PUT]
/admin/users/add-group [POST]
/admin/users/credentials [PUT]
/admin/users/more-members [GET]
/admin/users/more-non-members [GET]
/admin/users/remove-group [POST]
/admin/permissions/groups [GET, PUT, DELETE]
/admin/permissions/groups/none [GET]
/admin/permissions/users [GET, PUT, DELETE]
/admin/permissions/users/none [GET]
/groups [GET]
/projects [POST, GET]
/projects/{projectKey} [DELETE, PUT, GET]
/projects/{projectKey}/permissions/groups [GET, PUT, DELETE]
/projects/{projectKey}/permissions/groups/none [GET]
/projects/{projectKey}/permissions/users [GET, PUT, DELETE]
/projects/{projectKey}/permissions/users/none [GET]
/projects/{projectKey}/permissions/{permission}/all [GET, POST]
/projects/{projectKey}/settings/hooks [GET]
/projects/{projectKey}/settings/hooks/{hookKey} [GET]
/projects/{projectKey}/settings/hooks/{hookKey}/enabled [PUT, DELETE]
/projects/{projectKey}/settings/hooks/{hookKey}/settings [PUT, GET]
/projects/{projectKey}/settings/pull-requests [GET, POST]
/projects/{projectKey}/repos [POST, GET]
/projects/{projectKey}/repos/{repositorySlug} [DELETE, POST, PUT, GET]
/projects/{projectKey}/repos/{repositorySlug}/branches [GET, PUT, DELETE]
/projects/{projectKey}/repos/{repositorySlug}/branches/default [GET, PUT]
/projects/{projectKey}/repos/{repositorySlug}/branches/info/{changesetId} [GET]
/projects/{projectKey}/repos/{repositorySlug}/changes [GET]
/projects/{projectKey}/repos/{repositorySlug}/commits [GET]
/projects/{projectKey}/repos/{repositorySlug}/permissions [GET, POST,DELETE]
/projects/{projectKey}/repos/{repositorySlug}/pull-requests [GET, POST]
/projects/{projectKey}/repos/{repositorySlug}/pull-requests/{pullRequestId} [GET, PUT]
/projects/{projectKey}/repos/{repositorySlug}/pull-requests/{pullRequestId}/activities [GET]
/projects/{projectKey}/repos/{repositorySlug}/pull-requests/{pullRequestId}/decline [POST]
/projects/{projectKey}/repos/{repositorySlug}/pull-requests/{pullRequestId}/merge [GET, POST]
/projects/{projectKey}/repos/{repositorySlug}/pull-requests/{pullRequestId}/reopen [POST]
/projects/{projectKey}/repos/{repositorySlug}/pull-requests/{pullRequestId}/approve [POST, DELETE]
/projects/{projectKey}/repos/{repositorySlug}/pull-requests/{pullRequestId}/watch [POST, DELETE]
/projects/{projectKey}/repos/{repositorySlug}/pull-requests/{pullRequestId}/changes [GET]
/projects/{projectKey}/repos/{repositorySlug}/pull-requests/{pullRequestId}/comments [POST]
/projects/{projectKey}/repos/{repositorySlug}/pull-requests/{pullRequestId}/comments/{commentId} [PUT, DELETE]
/projects/{projectKey}/repos/{repositorySlug}/pull-requests/{pullRequestId}/commits [GET]
/projects/{projectKey}/repos/{repositorySlug}/settings/hooks [GET]
/projects/{projectKey}/repos/{repositorySlug}/settings/hooks/{hookKey} [GET]
/projects/{projectKey}/repos/{repositorySlug}/settings/hooks/{hookKey}/enabled [PUT, DELETE]
/projects/{projectKey}/repos/{repositorySlug}/settings/hooks/{hookKey}/settings [PUT, GET]
/projects/{projectKey}/repos/{repositorySlug}/settings/pull-requests [GET, POST]
/projects/{projectKey}/repos/{repositorySlug}/tags [GET, POST, DELETE]
/users [GET]
/users/{username} [GET]
/users/{username}/repos [GET]
/build-status/1.0/commits/{commit-hash} [GET, POST]
/keys/1.0/projects/{projectKey}/ssh [GET, POST]
/keys/1.0/projects/{projectKey}/repos/{repositorySlug}/ssh [GET, POST]
/ssh/1.0/keys [GET, POST]
/sync/latest/projects/{projectKey}/repos/{repositorySlug} [POST]
sync/latest/projects/{projectKey}/repos/{repositorySlug}/synchronize [POST]

Not yet implemented

/admin/mail-server [DELETE]
/application-properties [GET]
/hooks/{hookKey}/avatar [GET]
/logs/logger/{loggerName} [GET]
/logs/logger/{loggerName}/{levelName} [PUT]
/logs/rootLogger [GET]
/logs/rootLogger/{levelName} [PUT]
/markup/preview [POST]
/profile/recent/repos [GET]
/projects/{projectKey}/avatar.png [GET, POST]
/projects/{projectKey}/repos/{repositorySlug}/recreate [POST]
/projects/{projectKey}/repos/{repositorySlug}/browse [GET]
/projects/{projectKey}/repos/{repositorySlug}/browse/{path:.*} [GET]
/projects/{projectKey}/repos/{repositorySlug}/commits/{changesetId:.*} [GET]
/projects/{projectKey}/repos/{repositorySlug}/diff/{path:.*} [GET]
/projects/{projectKey}/repos/{repositorySlug}/files [GET]
/projects/{projectKey}/repos/{repositorySlug}/files/{path:.*} [GET]
/projects/{projectKey}/repos/{repositorySlug}/pull-requests/{pullRequestId}/comments/{commentId} [GET]
/projects/{projectKey}/repos/{repositorySlug}/pull-requests/{pullRequestId}/diff [GET]
/projects/{projectKey}/repos/{repositorySlug}/pull-requests/{pullRequestId}/diff/{path:.*} [GET]
/projects/{projectKey}/repos/{repositorySlug}/pull-requests/{pullRequestId}/participants [GET, DELETE, POST]
/users [PUT]
/users/credentials [PUT]
/keys/1.0/projects/{projectKey}/ssh/{keyId} [GET, DELETE]
/keys/1.0/projects/{projectKey}/repos/{repositorySlug}/ssh/{keyId} [GET, DELETE]
/ssh/1.0/keys [DELETE]
/ssh/1.0/keys/{keyId} [DELETE]
/ssh/1.0/settings [GET]

More Repositories

1

git-hg

A git-hg utility for checking out and tracking a mercurial repo.
Shell
307
star
2

route53-transfer

Backup and restore Route53 zones, or transfer between AWS accounts.
Python
151
star
3

IClojure

A better Interactive REPL for Clojure
Java
115
star
4

s3-bash

Access s3 from bash
Shell
107
star
5

jenkins-radiator

A build pipeline radiator for Jenkins using Python/Django and the Jenkins API
Python
28
star
6

clojure-reader

A re-implementation of the Clojure reader, written in Clojure
Clojure
23
star
7

ControlJS

JavaScript
14
star
8

git-svn-extensions

Extensions to git-svn to simplify common tasks like creating and deleting branches in svn
Shell
13
star
9

samples

random code samples that didn't fit anywhere else
Python
12
star
10

cljenv

Utilities for creating and managing multiple clojure environments
Shell
11
star
11

elasticpony

A set of scripts to help with deploying Django applications to Amazon Web Services
Shell
11
star
12

docker-ffmpeg

ffmpeg build with x264/x265/libvpx/libaom on top of Ubuntu 18.04
Dockerfile
11
star
13

ec2audit

Dump all EC2 information to a folder suitable for version control
Python
11
star
14

clojure-in-clojure

Clojure
10
star
15

lein-iclojure

Leiningen plugin to launch an IClojure REPL
Clojure
7
star
16

docker-lhls-segmenter

Docker container running LHLS segmenter to demo a live stream
Shell
6
star
17

sicp-scheme

My solutions to the SICP in Scheme.
Scheme
4
star
18

pdns-dynamodb

PowerDNS backend using DynamoDB
Python
4
star
19

stash-enforce-author-hook

Stash hook to prevent users from pushing commits they have not authored.
Java
4
star
20

stash-broken-build-hook

Stash hook to reject pushes to the default branch if the build is broken (unless the push fixes it)
Java
3
star
21

symlink

Symlink reads your mind so you no longer have to remember the correct argument order
3
star
22

beanhelpers

Utilities for dealing with JavaBeans in Clojure
Clojure
3
star
23

launchbox

Packaging and dependency resolution for chef-solo cookbooks
Python
3
star
24

docker-video-tools

Base image for doing video transcoding work
Dockerfile
3
star
25

hgformlogin

an extension to Mercurial allowing it to be used with repositories protected by a form login
Python
2
star
26

clktc

A simple URL shortener built using Django.
CSS
2
star
27

cosmin.github.io

Cosmin's website
Shell
2
star
28

clj-itunes

A Clojure client for the iTunes search API
Clojure
2
star
29

dnsrecords

A library for dealing with DNS records, including field validation
Python
2
star
30

weathermoment

Display current weather, GPS coordinates and address
JavaScript
2
star
31

clojure-project-template

A template for easily starting a new Clojure project. Currently using Maven.
Clojure
2
star
32

class-finder

A utility to find classes, designed for use at the REPL
Java
1
star
33

ulid-java

ULID implementation for Java with ability to convert to/from UUID
Java
1
star
34

streaming-http-server

An HTTP server that allows low latency downloads of files while they are being uploaded
Go
1
star
35

aws-switch

Switch between multiple AWS accounts
Shell
1
star
36

stash-email-notification-hook

Email notification hook for Stash
Java
1
star
37

docker-nginx-webdav

Nginx WebDAV container based on Ubuntu 18.04 (Bionic)
Dockerfile
1
star
38

stash-enforce-pull-requests-hook

Reject direct pushes to enforce pull requests
Java
1
star
39

datatables-backend-java

A Java implementation of the DataTables server-side processing API
Java
1
star
40

cs193p

My solutions to the Stanford iPhone Programming Class Assignments
Objective-C
1
star