Lesstep
Bitbucket Cloud・REST API・2026年11月2日に確認

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:demoPOST …/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)
件数sizemetadata.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日間の無料試用つき)です。画面は日本語です。

JetBrains Marketplace で入れる

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