Bitbucket Cloud の古いコード検索 API は、2026年11月3日から 410 Gone を返す
GET /2.0/workspaces/{workspace}/search/code(users 版・teams 版も)でコードを検索するスクリプトや道具は、2026年11月3日から失敗し始めます。Bitbucket Cloud はこの API を、日ごとに長くなる試し止めで止め、11月15日に廃止します。代わりは POST /2.0/workspaces/{workspace}/codesearch です。URL を変えるだけでは動きません。メソッド、送る中身、資格情報、ページ送り、答えの形がすべて違います。出典は Bitbucket Cloud の変更履歴(2026年10月26日)です。
日程
試し止めの日は、UTC の 00:00・06:00・12:00・18:00(日本時間 09:00・15:00・21:00・翌03:00)から、次の長さだけ止まります。
| 日(2026年・UTC) | 1回の長さ |
|---|---|
| 11月3日・4日 | 15分 |
| 11月5日・6日 | 1時間 |
| 11月7日・8日 | 2時間 |
| 11月9日・10日 | 3時間 |
| 11月11日・12日 | 4時間 |
| 11月13日・14日 | 5時間 |
| 11月15日 00:00(日本時間 09:00)から | 廃止 |
試し止めの間、古い API は HTTP 410 Gone を返し、新しい API の説明へのリンクを添えます。試し止めの合間はまだ動きます。11月13日と14日は、1日のうち20時間止まります。対象は次の3つです。
GET /2.0/workspaces/{workspace}/search/code
GET /2.0/teams/{team}/search/code
GET /2.0/users/{user}/search/code
新旧の対照
Bitbucket Cloud の REST リファレンス(Search code in a workspace・英語)によります。11月2日に、資格情報なしで両方を呼んでみました。それ以外はリファレンスの記述です。
| 古い API | 新しい API | |
|---|---|---|
| 送り方 | GET …/search/code?search_query=foo repo:demo | POST …/codesearch に JSON の本文と Content-Type: application/json(ほかは 415) |
| 範囲 | ワークスペース・チーム・ユーザー | ワークスペースだけ |
| 検索の書き方 | Web 画面と同じ書き方の文字列1つ | query.search_term と、リポジトリ・パス・言語などの query.filters |
| 資格情報 | 公開のワークスペースなら無しで答えた(こちらで 200) | ユーザーが分かる資格情報が要る。無しでは 401(こちらで確認)。アプリパスワード・API キー・Atlassian Connect の JWT は 403、ワークスペースのメンバーでない人も 403 |
| ページ送り | page・pagelen と next のリンク | カーソル式。request_id と pagination.next_cursor を、pagination.has_more が false になるまで送る。config.max_results は 1〜100、既定 50 |
| 結果 | values[].file.path・content_matches[].lines[] | matched_files[].path・matched_files[].matched_chunks[](source_code と line_range) |
| 件数 | size | metadata.total_count(おおよその数・最初のページだけ) |
リファレンスでは、ワークスペースのメンバーでない人は 403 です。古い API ではログインなしで他のワークスペースの公開リポジトリを検索できましたが、新しい API にその使い方はありません。
新しい API の呼び方
リファレンスが最初に挙げる資格情報は、repository:read と workspace:read の両方を持つ Atlassian の API トークンです。Atlassian アカウントのメールアドレスと組にして、Basic 認証で送ります。リポジトリ・プロジェクト・ワークスペースのアクセストークンでも通ります。search_query=foo repo:demo と同じ検索は次のとおりです。
curl -u '{メールアドレス}:{API トークン}' \
-H 'Content-Type: application/json' \
-d '{"query": {"search_term": "foo",
"filters": {"attribute": "repository", "eq": "demo"}}}' \
https://api.bitbucket.org/2.0/workspaces/{workspace}/codesearch
次のページは、同じ query に、答えの id を入れた "request_id" と、答えにある "pagination": {"next_cursor": "…"} を足して送ります。検索語とフィルターをページの途中で変えると 400 になります。
古い文字列の修飾子は、フィルターに置き換えます。比べ方は eq(path と repository では wildcard も)です。
| 古い文字列 | フィルター |
|---|---|
repo:demo | {"attribute": "repository", "eq": "demo"} |
path:src | {"attribute": "path", "eq": "src"} |
lang:go | {"attribute": "language", "eq": "go"} |
extension:go | {"attribute": "extension", "eq": "go"} |
forks:true | {"attribute": "forks", "eq": "true"}(ほかと組み合わせない) |
AND・OR・NOT | {"and": […]}・{"or": […]}・{"not": {…}} |
新しい API が検索するのは各リポジトリの既定のブランチで、branches フィルターを "true" にすると、索引のある全ブランチを検索します。namespace のフィルターは 400 で断られます。URL のワークスペースが範囲を決めるためです。
Backstage の Bitbucket Cloud 連携
Backstage の Bitbucket Cloud の entity provider は、2022年3月の pull request #9924 以来、古い API で catalog-info.yaml を探しています。2026年11月2日の時点で、Backstage の main ブランチの plugins/bitbucket-cloud-common/src/BitbucketCloudClient.ts はまだ /workspaces/{workspace}/search/code を呼んでいて、リポジトリの Issue と pull request を検索しても、この変更についてのものは見つかりませんでした。Backstage の新しい版が新しい API に移るまでは、試し止めの間は探す処理が失敗し、11月15日からは何も見つからなくなる見込みです。catalog.locations に手で並べた場所は、コード検索を使いません。
自分のコードが呼んでいるか
スクリプト・CI のジョブ・連携の設定を、search/code と search_query= で検索します。11月3日・4日の試し止めでも分かります。日本時間の 09:00・15:00・21:00・03:00 から15分だけ 410 で失敗するジョブは、古い API を使っています。
IntelliJ IDEA で Bitbucket のプルリクを
Pull Request Inbox for Bitbucket は、Lesstep が作っている JetBrains IDE(2024.1 以降)のプラグインです。コード検索 API は使っていないので、この変更の影響はありません。Bitbucket Cloud と Data Center のプルリクを IDE で扱えます。受信箱・差分・議論は無料、承認・コメント・マージは Pro(月 US$1.50・30日間の無料試用つき)です。画面は日本語です。
Bitbucket と Atlassian は Atlassian の商標、IntelliJ IDEA は JetBrains s.r.o. の商標です。Backstage は Cloud Native Computing Foundation のプロジェクトです。このページはいずれとも提携しておらず、承認も受けていません。
この秋の Bitbucket Cloud のほかの変更:3.0.0 より前の Git Credential Manager は11月30日に止まる · SSH は ssh.bitbucket.org へ・11月12日から試し止め · アプリパスワード廃止後の「error: 410」 · English