You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Bitbucket REST API转私有仓库为公开时遇400错误求助

解决Bitbucket API修改仓库可见性返回400错误的问题

我尝试将Bitbucket上的私有仓库转为公开仓库,编写了以下Python代码调用Bitbucket REST API:

import requests
workspace = ''
base_url = 'https://api.bitbucket.org/2.0/'

session = requests.Session()
session.auth = (username, password)

headers = {
    'Content-Type': 'application/json'
}
data = {
    "type": "repository",
    "is_private": False
}
url = f'https://api.bitbucket.org/2.0/repositories/{workspace}/{repo_slug}'
res = session.put(url, json=data, headers=headers)
print(res, res.reason)

执行后收到<Response [400]> Bad Request错误,请问是否需要在请求体中传入其他数据?


问题分析与解决方案

  1. 移除请求体中的冗余字段
    Bitbucket的仓库更新接口不需要传入type字段,仅需提交要修改的属性即可。多余的字段会触发400错误,修改后的请求体只需保留is_private: False。

  2. 验证认证与参数正确性

  • 建议使用App Password而非账号密码进行认证,需确保App Password拥有仓库修改权限(权限列表中勾选"Repositories: Write")。
  • 检查workspace和repo_slug是否拼写正确,二者均区分大小写。
  1. 查看详细错误信息
    在代码中添加响应内容打印,能获取Bitbucket返回的具体错误提示,帮助快速定位问题:
print(res.json())

修改后的完整代码示例

import requests

workspace = "你的工作区名称"
repo_slug = "你的仓库slug"
username = "你的Bitbucket用户名"
app_password = "你的App Password"

session = requests.Session()
session.auth = (username, app_password)

headers = {
    'Content-Type': 'application/json'
}
data = {
    "is_private": False
}
url = f'https://api.bitbucket.org/2.0/repositories/{workspace}/{repo_slug}'
res = session.put(url, json=data, headers=headers)

print(res.status_code, res.reason)
# 打印详细错误信息以便排查
if res.status_code != 200:
    print(res.json())

内容的提问来源于stack exchange,提问作者NavaneethaKrishnan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 00:35:06