Azure DevOps Services |Azure DevOps Server |Azure DevOps Server 2022
Azure DevOps 組織のリソースと API には、次の 2 つの URL 形式でアクセスできます。
| URLフォーム | 例 |
|---|---|
| 新規 | https://dev.azure.com/{organization} |
| 遺産 | https://{organization}.visualstudio.com |
組織レベルの REST API は、組織の作成時に関係なく、どちらの URL フォームも受け入れます。 詳細については、 Azure DevOps Services REST API リファレンスを参照してください。
プライマリ URL
各組織には、新しい形式またはレガシ形式で指定された プライマリ URL があります。 管理者はプライマリ URL を変更できます。 既定値は、組織を作成した日時に基づいています。
| 作成済み | 既定のプライマリ URL |
|---|---|
| 2018 年 9 月 10 日以降 | 新規 |
| 2018 年 9 月 10 日より前 | 遺産 |
プライマリ URL の使用方法
Azure DevOps は、バックグラウンド ジョブおよび自動化されたシナリオで構築するすべての URL のベースとしてプライマリ URL を使用します。
- パイプライン タスク環境変数 (
SYSTEM_TEAMFOUNDATIONCOLLECTIONURIなど) - サービスはイベント ペイロード (
resourceContainersの URL など) をフックします - 電子メール、Slack、Microsoft Teams、および同様の通知
たとえば、次のタスク スニペットは組織の URL を表示します。
$orgUrl = $env:SYSTEM_TEAMFOUNDATIONCOLLECTIONURI
Write-Host $orgUrl
出力は、組織のプライマリ URL フォーム ( https://dev.azure.com/{organization} または https://{organization}.visualstudio.com) によって異なります。 パイプライン タスクとサービス フック コンシューマーが両方の URL フォームを処理していることを確認します。
REST API で返される URL
組織のプライマリ URL に関係なく、REST API 呼び出しに対する応答で返される URL は、要求元の URL と同じベース URL を使用します。 この関数により、レガシ URL を使用して REST API を呼び出すクライアントは、同じ (レガシ) 形式で URL を引き続き取得できます。 たとえば、Projects REST API がレガシ URL を使用して呼び出されると、応答内の URL は従来の形式を使用します。
リクエスト
GET https://Fabrikam.visualstudio.com/_apis/projects/MyProject
[応答]
{
"id": "e4e4e4e4-ffff-aaaa-bbbb-c5c5c5c5c5c5",
"name": "MyProject",
"url": "https://Fabrikam.visualstudio.com/_apis/projects/MyProject"
}
新しい URL (https://dev.azure.com/Fabrikam/_apis/projects/MyProject) を使用して同じ API を呼び出すと、新しい URL 形式で URL が返されます。
ベスト プラクティス
拡張機能、ツール、または統合を URL の変更に対する回復性を維持するには:
- 固定の組織の URL フォームを想定しないでください。 時間の経過と同時に変化する可能性があります。
- 他の URL を作成するために URL を解析または格納しないでください。
- REST API が常に同じドメイン上にあると想定しないでください。
- 可能な場合は、Microsoft が提供するクライアント ライブラリ (.NET、 Node.js、 Python) を使用します。URL 解決は自動的に処理されるためです。
組織の URL を取得する
グローバル リソース領域 REST API (https://dev.azure.com/_apis/resourceAreas) を使用して、組織のベース URL を名前または ID から解決できます。 この API では認証は必要ありません。
リソース領域は、固定 GUID によって識別される、関連する REST API エンドポイントのグループです。 各リソース領域には、組織ごとに異なるベース URL を設定できます。 たとえば、Fabrikam の ビルド API では https://dev.azure.com/Fabrikamを使用し、 リリース管理 API では https://vsrm.dev.azure.com/Fabrikamを使用します。
注
Resource Areas REST API は、組織の指定されたプライマリ URL に基づいて URL を返します。
組織名別
{organizationName}を組織の名前に置き換えます。 GUID 79134C72-4A58-4B42-976C-04E7115F32BFは、プロジェクトなどのリソースを含むコア リソース領域を識別します。
リクエスト
GET https://dev.azure.com/_apis/resourceAreas/79134C72-4A58-4B42-976C-04E7115F32BF
?accountName={organizationName}&api-version=5.0-preview.1
[応答]
{
"id": "79134C72-4A58-4B42-976C-04E7115F32BF",
"name": "Core",
"locationUrl": "https://dev.azure.com/Fabrikam"
}
locationUrl フィールドには、組織のベース URL が含まれています。
組織 ID 別
名前ではなく組織 GUID で URL を解決するには、(hostIdではなく) accountName クエリ パラメーターを使用します。
GET https://dev.azure.com/_apis/resourceAreas/79134C72-4A58-4B42-976C-04E7115F32BF?hostId={organizationId}&api-version=5.0-preview.1
REST API のベース URL を取得する
組織レベルのリソース領域 REST API を使用して、任意の REST API の正しいベース URL を検索します。 この方法により、API ドメインが変更されたときにコードの回復性が維持されます。
注
Microsoft が提供するクライアント ライブラリ (.NET、TypeScript、Node.js、Python) は、URL 参照を自動的に処理します。 たとえば、.NET の VssConnection.GetClient<T>() は、既に正しいベース URL にバインドされているクライアントを返します。
クライアント ライブラリを使用していない場合:
リソース領域 ID テーブルで、必要な API の リソース領域 ID を見つけます。 エリア名は、通常、ルート内の
/_apis/の後に表示されます。 たとえば、/_apis/release/definitionsはrelease領域 (aaaabbbb-0000-cccc-1111-dddd2222eeee) に属します。組織レベルの Resource Areas REST API をその ID で呼び出します。
GET https://dev.azure.com/Fabrikam/_apis/resourceAreas/aaaabbbb-0000-cccc-1111-dddd2222eeee?api-version=5.0-preview.1応答の
locationUrlフィールドをベース URL として使用します。 この例では、リリース管理のベース URL がhttps://vsrm.dev.azure.com/Fabrikam。
Resource Areas REST API には資格情報は必要ありません。
例: パイプライン タスクから Releases REST API を呼び出す
このパイプライン タスクは、 SYSTEM_TEAMFOUNDATIONCOLLECTIONURI 環境変数の組織の URL を使用して、Releases REST API の正しいベース URL を解決します。
注
リソース領域 ID は固定されており、タスクやその他のロジックに安全に埋め込むことができます。
$orgUrl = $env:SYSTEM_TEAMFOUNDATIONCOLLECTIONURI
$releaseManagementAreaId = "aaaabbbb-0000-cccc-1111-dddd2222eeee"
# Look up the base URL for Release Management APIs
$orgResourceAreasUrl = "${orgUrl}_apis/resourceAreas/${releaseManagementAreaId}?api-version=5.0-preview.1"
$results = Invoke-RestMethod -Uri $orgResourceAreasUrl
$rmUrl = $results.locationUrl
# Call the release definitions API
$releaseDefinitionsUrl = "${rmUrl}/_apis/release/definitions?api-version=5.0-preview.1"
リソース領域 ID
次の表に、一般的なリソース領域の ID を示します。 リソース領域 ID は、すべての Azure DevOps Services 組織で固定され、一貫性があります。
| リソース領域 ID | 名前 |
|---|---|
| 0D55247A-1C47-4462-9B1F-5E2125590EE6 | アカウント |
| 5D6898BB-45EC-463F-95F9-54D49C71752E | ビルド |
| 79BEA8F8-C898-4965-8C51-8BBC3966FAA8 | コレクション |
| 79134C72-4A58-4B42-976C-04E7115F32BF | コア |
| 31C84E0A-3ECE-48FD-A29D-100849AF99BA | ダッシュボード |
| A0848FA1-3593-4AEC-949C-694C73F4C4CE | 委任認証 |
| 6823169A-2419-4015-B2FD-6FD6F026CA00 | ディスカッション |
| A85B8835-C1A1-4AAC-AE97-1C3D0BA72dbd | 分散タスク |
| 7BF94C77-0CE1-44E5-A0F3-263E4EBBF327 | ドロップする |
| 6C2B0933-3600-42AE-BF8B-93D4F7E83594 | 拡張機能の管理 |
| 67349C8B-6425-42F2-97B6-0843CB037473 | お気に入り |
| 4E080C62-FA21-4FBC-8FEF-2A10A2B38049 | git |
| 4E40F190-2E3F-4D9F-8331-C7788E833080 | グラフ |
| 68DDCE18-2501-45F1-A17B-7931A9922690 | メンバー権限管理 |
| B3BE7473-68EA-4A81-BFC7-9530BAAA19AD | NuGet |
| 4C83CFC1-F33A-477E-A789-29D38FFCA52E | npm |
| 45FB9450-A28D-476D-9B0F-FB4AEDDDFF73 | パッケージ |
| 7ab4e64e-c4d8-4f50-ae73-5ef2e21642a5 | 包装 |
| 2E0BF237-8973-4EC9-A581-9C3D679D1776 | パイプライン |
| FB13A388-40DD-4A04-B530-013A739C72EF | ポリシー |
| 8ccfef3d-2b87-4e99-8ccb-66e343d2daa8 | プロファイル |
| aaaabbbb-0000-cccc-1111-dddd2222eeee | リリース |
| 57731FDF-7D72-4678-83DE-F8B31266E429 | レポート |
| ea48a0a1-269c-42d8-b8ad-ddc8fcdcf578 | 検索 |
| 3B95FB80-FDDA-4218-B60E-1052D070AE6B | テスト |
| C83EAF52-EDF3-4034-AE11-17D38F25404C | テスト結果 |
| 8AA40520-446D-40E6-89F6-9C9F9CE44C48 | TFVC |
| 970AA69F-E316-4D78-B7B0-B7137E47A22C | ユーザー |
| 5264459E-E5E0-4BD8-B118-0985E68A4EC5 | 知恵 |
| 1D4F49F9-02B9-4E26-B826-2CDB6195F2A9 | 作業 |
| 85F8C7B6-92FE-4BA6-8B6D-FBB67C809341 | ワークトラッキング |
HostNavigationService を使用してプログラムで移動する
IHostNavigationService インターフェイスを使用すると、拡張機能は親ホスト フレームと対話できます。 拡張機能は、これを使用して、URL ハッシュの読み取りと設定、URL への移動、ページの再読み込み、クエリ パラメーターの管理を行うことができます。
import * as SDK from "azure-devops-extension-sdk";
import { CommonServiceIds, IHostNavigationService } from "azure-devops-extension-api";
const navService = await SDK.getService<IHostNavigationService>(CommonServiceIds.HostNavigationService);
ハッシュ値
// Get the current hash
const hash = await navService.getHash();
console.log("Host hash value: " + hash);
// Listen for hash changes
navService.onHashChanged((hash: string) => {
console.log("Hash changed to: " + hash);
});
// Set hash (adds a new browser history entry)
navService.setHash("new-hash-value");
// Replace hash (no new history entry)
navService.replaceHash("replaced-hash-value");
ナビゲーションとウィンドウ
// Navigate the host page
navService.navigate("https://dev.azure.com/myorg/myproject");
// Open a new browser window
navService.openNewWindow("https://dev.azure.com/myorg/myproject", "height=400,width=600");
再読み込みとドキュメント タイトル
navService.reload();
navService.setDocumentTitle("My Custom Page Title");
クエリ パラメーター
// Get current query parameters
const params = await navService.getQueryParams();
console.log(params);
// Set query parameters (pass empty string to remove a parameter)
navService.setQueryParams({ myParam: "value", removeMe: "" });
完全な API については、 IHostNavigationService と CommonServiceIds を参照してください。