原始内容
name: snowsand-bitbucket version: 1.0.1 description: Interact with Bitbucket Cloud via REST API. Use for repository management, pull request operations (list, view, create, comment, approve, merge), branch management, commit history, pipeline status, and workspace/team queries. Triggers on Bitbucket operations, PR reviews, branch management, pipeline checks, or any Atlassian Bitbucket Cloud task.
Bitbucket Cloud Integration
Bitbucket Cloud REST API v2 integration for repository management, pull requests, branches, commits, and pipelines.
Authentication
Bitbucket Cloud REST v2 uses HTTP Basic auth. Required environment variables:
BITBUCKET_WORKSPACE- Default workspace slug (e.g.,myteam)BITBUCKET_USERNAME- Identity for Basic auth (see pairing below)BITBUCKET_APP_PASSWORD- Secret for Basic auth (see pairing below)
Two credential types work. Use the matching username for each:
| Credential type | BITBUCKET_USERNAME |
BITBUCKET_APP_PASSWORD |
|---|---|---|
| Atlassian API token (recommended) | your Atlassian account email | the API token |
| App Password (legacy) | your Bitbucket username (not email) | the app password |
Note: despite the variable name,
BITBUCKET_APP_PASSWORDaccepts an Atlassian API token. For SnowSand'sAtlassian - <user>@snowsand.comvault items, thebitbucket-tokenfield is an Atlassian API token, so pair it with the account email as the username.
Atlassian API tokens: https://id.atlassian.com/manage-profile/security/api-tokens App Passwords (legacy): https://bitbucket.org/account/settings/app-passwords/
Required scopes/permissions:
- Repositories: Read, Write (for repo operations)
- Pull requests: Read, Write (for PR operations)
- Pipelines: Read (for pipeline status)
- Account: Read (for user info)
Test connection:
curl -s -u "$BITBUCKET_USERNAME:$BITBUCKET_APP_PASSWORD" \
"https://api.bitbucket.org/2.0/user" | jq .
Cross-workspace listing note: Bitbucket CHANGE-2770 removed the old
GET /2.0/workspacesandGET /2.0/user/permissions/workspacesendpoints (they now return HTTP 410).bitbucket.py workspacesuses the supported replacementGET /2.0/user/workspaces. All other commands are workspace-scoped and unaffected.
Quick Reference
All operations use the {baseDir}/scripts/bitbucket.py script:
| Operation | Command |
|---|---|
| Repositories | |
| List repos | {baseDir}/scripts/bitbucket.py repos |
| View repo | {baseDir}/scripts/bitbucket.py repo my-repo |
| Create repo | {baseDir}/scripts/bitbucket.py create-repo my-new-repo --private |
| Pull Requests | |
| List PRs | {baseDir}/scripts/bitbucket.py prs my-repo |
| View PR | {baseDir}/scripts/bitbucket.py pr my-repo 42 |
| Create PR | {baseDir}/scripts/bitbucket.py create-pr my-repo --title "Feature" --source feature-branch |
| Comment on PR | {baseDir}/scripts/bitbucket.py pr-comment my-repo 42 "LGTM!" |
| Approve PR | {baseDir}/scripts/bitbucket.py approve my-repo 42 |
| Merge PR | {baseDir}/scripts/bitbucket.py merge my-repo 42 |
| Decline PR | {baseDir}/scripts/bitbucket.py decline my-repo 42 |
| Branches | |
| List branches | {baseDir}/scripts/bitbucket.py branches my-repo |
| View branch | {baseDir}/scripts/bitbucket.py branch my-repo main |
| Create branch | {baseDir}/scripts/bitbucket.py create-branch my-repo feature-x --from main |
| Delete branch | {baseDir}/scripts/bitbucket.py delete-branch my-repo old-feature |
| Commits | |
| List commits | {baseDir}/scripts/bitbucket.py commits my-repo |
| View commit | {baseDir}/scripts/bitbucket.py commit my-repo abc123 |
| Pipelines | |
| List pipelines | {baseDir}/scripts/bitbucket.py pipelines my-repo |
| View pipeline | {baseDir}/scripts/bitbucket.py pipeline my-repo {uuid} |
| Pipeline steps | {baseDir}/scripts/bitbucket.py pipeline-steps my-repo {uuid} |
| Workspace | |
| List workspaces | {baseDir}/scripts/bitbucket.py workspaces |
| Workspace members | {baseDir}/scripts/bitbucket.py members |
| Current user | {baseDir}/scripts/bitbucket.py me |
Common Workflows
Repository Management
# List all repositories in workspace
{baseDir}/scripts/bitbucket.py repos
# List with pagination
{baseDir}/scripts/bitbucket.py repos --page 2 --pagelen 25
# View specific repository details
{baseDir}/scripts/bitbucket.py repo my-repo
# Create a new private repository
{baseDir}/scripts/bitbucket.py create-repo my-new-repo --private --description "Project description"
# Create public repository with specific project
{baseDir}/scripts/bitbucket.py create-repo my-public-repo --project PROJ
Pull Request Workflow
# List open pull requests
{baseDir}/scripts/bitbucket.py prs my-repo
# List all PRs (including merged/declined)
{baseDir}/scripts/bitbucket.py prs my-repo --state all
# View PR details
{baseDir}/scripts/bitbucket.py pr my-repo 42
# Create a pull request
{baseDir}/scripts/bitbucket.py create-pr my-repo \
--title "Add new feature" \
--source feature-branch \
--destination main \
--description "This PR adds..."
# Add a comment
{baseDir}/scripts/bitbucket.py pr-comment my-repo 42 "Looks good, just one question..."
# Approve the PR
{baseDir}/scripts/bitbucket.py approve my-repo 42
# Unapprove (remove approval)
{baseDir}/scripts/bitbucket.py unapprove my-repo 42
# Request changes
{baseDir}/scripts/bitbucket.py request-changes my-repo 42
# Merge with default strategy
{baseDir}/scripts/bitbucket.py merge my-repo 42
# Merge with specific strategy
{baseDir}/scripts/bitbucket.py merge my-repo 42 --strategy squash
# Decline a PR
{baseDir}/scripts/bitbucket.py decline my-repo 42
Branch Operations
# List all branches
{baseDir}/scripts/bitbucket.py branches my-repo
# View branch details
{baseDir}/scripts/bitbucket.py branch my-repo feature-x
# Create branch from main
{baseDir}/scripts/bitbucket.py create-branch my-repo feature-y --from main
# Create branch from specific commit
{baseDir}/scripts/bitbucket.py create-branch my-repo hotfix-1 --from abc123def
# Delete a branch (cannot delete main branch)
{baseDir}/scripts/bitbucket.py delete-branch my-repo old-feature
Commit History
# List recent commits (default branch)
{baseDir}/scripts/bitbucket.py commits my-repo
# Commits on specific branch
{baseDir}/scripts/bitbucket.py commits my-repo --branch feature-x
# Limit results
{baseDir}/scripts/bitbucket.py commits my-repo --pagelen 10
# View specific commit
{baseDir}/scripts/bitbucket.py commit my-repo abc123def456
Pipeline Status
# List recent pipelines
{baseDir}/scripts/bitbucket.py pipelines my-repo
# Filter by status
{baseDir}/scripts/bitbucket.py pipelines my-repo --status SUCCESSFUL
{baseDir}/scripts/bitbucket.py pipelines my-repo --status FAILED
# View pipeline details
{baseDir}/scripts/bitbucket.py pipeline my-repo '{pipeline-uuid}'
# View pipeline steps
{baseDir}/scripts/bitbucket.py pipeline-steps my-repo '{pipeline-uuid}'
# Trigger a pipeline
{baseDir}/scripts/bitbucket.py run-pipeline my-repo --branch main
Workspace and User Info
# List accessible workspaces
{baseDir}/scripts/bitbucket.py workspaces
# List workspace members
{baseDir}/scripts/bitbucket.py members
# Get current user info
{baseDir}/scripts/bitbucket.py me
Merge Strategies
When merging PRs, available strategies are:
| Strategy | Description |
|---|---|
merge_commit |
Create a merge commit (default) |
squash |
Squash all commits into one |
fast_forward |
Fast-forward if possible |
Pipeline States
| State | Description |
|---|---|
PENDING |
Waiting to start |
IN_PROGRESS |
Currently running |
SUCCESSFUL |
Completed successfully |
FAILED |
Completed with failures |
STOPPED |
Manually stopped |
Error Handling
Common errors:
- 401 Unauthorized: Check BITBUCKET_USERNAME and BITBUCKET_APP_PASSWORD
- 403 Forbidden: App password lacks required permissions
- 404 Not Found: Repository, PR, or branch doesn't exist
- 400 Bad Request: Invalid parameters or branch name
Raw API Access
For operations not covered by the script:
# GET request
curl -s -u "$BITBUCKET_USERNAME:$BITBUCKET_APP_PASSWORD" \
"https://api.bitbucket.org/2.0/repositories/$BITBUCKET_WORKSPACE/my-repo" | jq .
# POST request
curl -s -X POST -u "$BITBUCKET_USERNAME:$BITBUCKET_APP_PASSWORD" \
-H "Content-Type: application/json" \
-d '{"content": {"raw": "Comment text"}}' \
"https://api.bitbucket.org/2.0/repositories/$BITBUCKET_WORKSPACE/my-repo/pullrequests/42/comments" | jq .
API docs: https://developer.atlassian.com/cloud/bitbucket/rest/