サービス インデックスは、NuGet パッケージ ソースのエントリ ポイントである JSON ドキュメントであり、クライアント実装がパッケージ ソースの機能を検出できるようにします。 サービス インデックスは、 version
(サービス インデックスのスキーマ バージョン) と resources
(パッケージ ソースのエンドポイントまたは機能) の 2 つの必須プロパティを持つ JSON オブジェクトです。
nuget.org のサービス インデックスは、 https://api.nuget.org/v3/index.json
にあります。
Versioning
version
値は、サービス インデックスのスキーマ バージョンを示す SemVer 2.0.0 解析可能なバージョン文字列です。 この API では、バージョン文字列にメジャー バージョン番号の 3
が必要です。 サービス インデックス スキーマに破壊的変更が加えられると、バージョン文字列のマイナー バージョンが増加します。
サービス インデックス内の各リソースは、サービス インデックス スキーマのバージョンとは別にバージョン管理されます。
現在のスキーマ バージョンが 3.0.0
。
3.0.0
バージョンは機能的には古い3.0.0-beta.1
バージョンと同等ですが、安定した定義されたスキーマをより明確に伝達するため、推奨する必要があります。
HTTP methods
サービス インデックスには、HTTP メソッド GET
および HEAD
を使用してアクセスできます。
Resources
resources
プロパティには、このパッケージ ソースでサポートされているリソースの配列が含まれています。
Resource
リソースは、 resources
配列内のオブジェクトです。 これは、パッケージ ソースのバージョン管理された機能を表します。 リソースには、次のプロパティがあります。
Name | タイプ | Required | Notes |
---|---|---|---|
@id | 文字列 | yes | リソースの URL |
@type | 文字列 | yes | リソースの種類を表す文字列定数 |
コメント | 文字列 | no | リソースの人間が判読できる説明 |
@id
は、絶対 URL である必要があり、HTTP または HTTPS スキーマを持っている必要があります。
@type
は、リソースを操作するときに使用する特定のプロトコルを識別するために使用されます。 リソースの型は不透明な文字列ですが、通常は次の形式になります。
{RESOURCE_NAME}/{RESOURCE_VERSION}
クライアントは、パッケージ ソースのサービス インデックスで理解して検索する @type
値をハード コーディングすることが期待されます。 現在使用されている正確な @type
値は、 API の概要に記載されている個々のリソース参照ドキュメントに列挙されています。
このドキュメントのために、さまざまなリソースに関するドキュメントは、基本的に、シナリオ別のグループ化に似たサービス インデックスにある {RESOURCE_NAME}
によってグループ化されます。
各リソースに一意の @id
または @type
がある必要はありません。 別のリソースよりも優先するリソースを決定するのは、クライアントの実装によって決まります。 可能な実装の 1 つは、接続エラーやサーバー エラーが発生した場合に、同じまたは互換性のある @type
のリソースをラウンド ロビン方式で使用できることです。
リソースでは、サービス インデックスとは異なるホストまたはドメインを使用できますが、これにより、厳密なネットワーク規則を使用する環境で問題が発生する可能性があります。 特に、サービス インデックスが (独自のフィードを介したプロキシまたはキャッシュではなく) nuget.org を直接指すリソースを追加する場合、nuget.org へのアクセスがブロックされている場合、フィードは機能しません。 フィードが特定のリソースを nuget.org に委任する場合は、フィードをデプロイするときに、直接 nuget.org 参照をサービス インデックスから削除できるように構成を追加することをお勧めします。
Sample request
GET https://api.nuget.org/v3/index.json
Sample response
{
"version": "3.0.0",
"resources": [
{
"@id": "https://api.nuget.org/v3-flatcontainer/",
"@type": "PackageBaseAddress/3.0.0",
"comment": "Base URL of Azure storage where NuGet package registration info for NET Core is stored, in the format https://api.nuget.org/v3-flatcontainer/{id-lower}/{id-lower}.{version-lower}.nupkg"
},
{
"@id": "https://www.nuget.org/api/v2/package",
"@type": "PackagePublish/2.0.0"
},
{
"@id": "https://api-v2v3search-0.nuget.org/query",
"@type": "SearchQueryService/3.0.0-rc",
"comment": "Query endpoint of NuGet Search service (primary) used by RC clients"
},
{
"@id": "https://api-v2v3search-0.nuget.org/autocomplete",
"@type": "SearchAutocompleteService/3.0.0-rc",
"comment": "Autocomplete endpoint of NuGet Search service (primary) used by RC clients"
},
{
"@id": "https://api.nuget.org/v3/registration2/",
"@type": "RegistrationsBaseUrl/3.0.0-rc",
"comment": "Base URL of Azure storage where NuGet package registration info is stored used by RC clients. This base URL does not include SemVer 2.0.0 packages."
}
]
}