サービス インデックス

サービス インデックスは、NuGet パッケージ ソースのエントリ ポイントである JSON ドキュメントであり、クライアント実装でパッケージ ソースの機能を検出できます。 サービス インデックスは、2 つの必須プロパティ version (サービス インデックスのスキーマ バージョン) と resources (パッケージ ソースのエンドポイントまたは機能) を持つ JSON オブジェクトです。

nuget.org のサービス インデックスは https://api.nuget.org/v3/index.json にあります。

バージョン管理

version 値は、サービス インデックスのスキーマ バージョンを示す SemVer 2.0.0 解析可能バージョン文字列です。 API は、バージョン文字列のメジャー バージョン番号が 3 であることを指定します。 非破壊的変更がサービス インデックス スキーマに加えられると、バージョン文字列のマイナー バージョンが増加します。

サービス インデックスの各リソースは、サービス インデックスのスキーマ バージョンとは別にバージョン管理されます。

現在のスキーマ バージョンは 3.0.0 です。 3.0.0 バージョンは、以前の 3.0.0-beta.1 バージョンと機能的には同じですが、安定した定義済みスキーマをより明確に伝えるため、推奨されています。

HTTP メソッド

サービス インデックスには、HTTP メソッド GET および HEAD を使用してアクセスできます。

リソース

resources プロパティは、このパッケージ ソースによってサポートされるリソースの配列を格納します。

リソース

リソースは resources 配列内のオブジェクトです。 これは、パッケージ ソースのバージョン管理された機能を表します。 リソースには、次のプロパティがあります。

名前 タイプ 必須 メモ
@id string はい リソースへの URL
@type string はい リソース型を表す文字列定数
comment string いいえ 人が判読できるリソースの説明

@id は絶対 URL である必要があり、HTTP または HTTPS のいずれかのスキーマを持っている必要があります。

@type は、リソースと対話するときに使用する特定のプロトコルを識別するために使用されます。 リソースの型は非透過的な文字列ですが、一般的には次の形式です。

{RESOURCE_NAME}/{RESOURCE_VERSION}

クライアントは、解釈する @type 値をハードコーディングし、パッケージ ソースのサービス インデックスで検索する必要があります。 現在使用されている正確な @type 値は、API の概要に記載されている個々のリソース参照ドキュメントで列挙されています。

このドキュメントでは、異なるリソースに関するドキュメントは基本的に、サービス インデックスにある {RESOURCE_NAME} でグループ化されます。これはシナリオによるグループ化と類似しています。

各リソースが固有の @id または @type を持つ必要はありません。 どのリソースを優先するかは、クライアントの実装によって決まります。 考えられる 1 つの実装は、接続エラーやサーバー エラーが発生した場合に、同じまたは互換性のある @type のリソースをラウンド ロビン方式で使用できるものです。

要求のサンプル

GET https://api.nuget.org/v3/index.json

サンプル応答

{
  "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."
    }
  ]
}