「API resource location … is not registered on …」
Azure DevOps 用の Microsoft のクライアント ライブラリは、決まったアドレスを直接呼びません。まずサーバーに REST API の一覧を聞き、呼び出しをその GUID で一覧から探します。GUID が一覧に無いと、呼び出しを送る前に止まって、こう言います:API resource location 9946fd70-0d40-406e-b686-b4744cbbcc37 is not registered on https://server/tfs/DefaultCollection.
一覧はどこから来るか
- クライアントは
OPTIONS {コレクション}/_apisを送ります。答えは API の位置の一覧で、id(GUID)・area・resourceName・routeTemplate・minVersion・maxVersionが並びます。dev.azure.com の公開組織に聞くと(2026年10月27日・サインインなし)、72の分野に740か所ありました。上の GUID はgit/pullRequestsです。 - コレクションに GUID が無いと、Microsoft の Python のクライアントは1つ上(コレクションを外したサーバー)も探してから諦めます(client.py)。
- az devops CLI が使う Python のクライアントは、この一覧をディスクに12時間覚えています。置き場は
~/.azure-devops/python-sdk/cache(AZURE_DEVOPS_CACHE_DIRがあればそのフォルダー)です。
3つの原因
- その API がサーバーに無い。Azure DevOps Server はそれぞれの版の時の API を持ち、Azure DevOps Services にしか無い API もあります。公開の報告:Azure DevOps Server 2020 での
az devops security group list(azure-devops-cli-extension #1126・GUID は048aee0a-…=Graph の descriptors。dev.azure.com ではこの GUID は組織の一覧には無く、vssps.dev.azure.comの側にあります)、Azure DevOps Server 2020 での Cache タスク(Microsoft の担当者が「社内設置では使えない」と答えた・azure-pipelines-tasks #13937)、Azure DevOps Server 2022 での Terraform のプロバイダー(作者側は dev.azure.com でしか試していない・#709)。設定で API を足すことはできません。別の呼び出しや道具を使うか、新しいサーバーにします。 - アドレスにコレクションが無い。Team Foundation Server と Azure DevOps Server では、API はコレクションの下にあります。
http://server:8080/tfsではなくhttp://server:8080/tfs/DefaultCollectionです。TFS 2018 での報告では、アドレスのパスが一部欠けていたのが原因でした(azure-devops-cli-extension #990)。 - 一覧が届いていない。サインインに失敗すると一覧が取れず、どの GUID も「無い」ことになります。Microsoft 自身の IntelliJ プラグインの報告では、dev.azure.com のプルリクでのこの文の最後に
HTTP 302 Found(一覧の代わりの転送)が付いていました(azure-devops-intellij #397)。個人用アクセストークンを確かめてください:期限切れ・別の組織用・スコープ不足。
呼び出し1回で見分ける
curl -u :YOUR_TOKEN -X OPTIONS -H "Accept: application/json" "http://server:8080/tfs/DefaultCollection/_apis"
- JSON が返り、その GUID がある:API はあります。道具が使っているアドレスを見直します。
- JSON が返り、その GUID が無い:そのコレクションでは原因1です。
- JSON が返らない(401・302・HTML のページ):サインインの失敗(原因3)か、アドレスの間違い(原因2)です。
- サーバーを上げた後でも、az devops CLI は古い一覧を最大12時間使うことがあります。上のフォルダーを消してください。
IntelliJ IDEA・Rider などの JetBrains IDE では
Azure DevOps Pull Requests は、JetBrains IDE(2024.1 以降)と Android Studio のプルリク用プラグインです。この一覧は使いません。プルリクの REST の住所を直接呼び、サーバーが名前を出した版まで api-version を自分で下げます(その答え)。Azure DevOps Services、Azure DevOps Server 2019 以降、Team Foundation Server 2018 Update 2 以降(/tfs/ のアドレスも)で使えます。読むのは無料、投票・コメント・完了は Pro(30日間の無料試用つき)です。
Azure DevOps は Microsoft Corporation の商標、IntelliJ IDEA は JetBrains s.r.o. の商標です。このページは Microsoft・JetBrains のいずれとも提携しておらず、承認も受けていません。
ほかに:TF400733(レート制限) · 「The latest REST API version this server supports is…」 · 「is under preview」 · TF400813 · TFS 2018・Server 2019 で使う · English