Search

V3 API を使用して、パッケージ ソースで使用可能なパッケージを検索できます。 検索に使用されるリソースは、サービス インデックスで見つかったSearchQueryService リソースです。

Versioning

次の @type 値が使用されます。

@type 値 メモ
SearchQueryService 最初のリリース
SearchQueryService/3.0.0-beta エイリアス SearchQueryService
SearchQueryService/3.0.0-rc エイリアス SearchQueryService
SearchQueryService/3.5.0 packageType クエリ パラメーターのサポートが含まれています

SearchQueryService/3.5.0

このバージョンでは、 packageType クエリ パラメーターと packageTypes 応答プロパティのサポートが導入され、作成者が定義したパッケージの種類によるフィルター処理が可能になります。 SearchQueryServiceするクエリと完全に下位互換性があります。

基準 URL

次の API のベース URL は、前述のリソース @type値のいずれかに関連付けられている@id プロパティの値です。 次のドキュメントでは、プレースホルダーのベース URL {@id} が使用されます。 ベース URL は、パッケージ ソース内の実装またはインフラストラクチャの変更に基づいて変更される可能性があるため、クライアント ソフトウェアによって サービス インデックス から動的にフェッチされる必要があります。

HTTP メソッド

登録リソースで見つかったすべての URL は、HTTP メソッドの GETHEADをサポートします。

パッケージを検索する

検索 API を使用すると、クライアントは、指定された検索クエリに一致するパッケージのページを照会できます。 検索クエリの解釈 (検索用語のトークン化など) はサーバーの実装によって決まりますが、一般的な期待は、検索クエリがパッケージ ID、タイトル、説明、タグの照合に使用されるということです。 他のパッケージ メタデータ フィールドも考慮される場合があります。

一覧に含てられていないパッケージが検索結果に表示されることはありません。

GET {@id}?q={QUERY}&skip={SKIP}&take={TAKE}&prerelease={PRERELEASE}&semVerLevel={SEMVERLEVEL}&packageType={PACKAGETYPE}

要求パラメーター

氏名 In タイプ 必須 メモ
q URL 文字列 no パッケージのフィルター処理に使用する検索用語
スキップ URL 整数 no 改ページ位置のスキップする結果の数
取り出し URL 整数 no 改ページ位置の返す結果の数
プレリリース URL boolean no trueプレリリース パッケージを含めるかどうかを決定するfalse
semVerLevel URL 文字列 no SemVer 1.0.0 バージョン文字列
パッケージタイプ URL 文字列 no パッケージのフィルター処理に使用するパッケージの種類 ( SearchQueryService/3.5.0 で追加)

検索クエリ q は、サーバー実装によって定義された方法で解析されます。 nuget.org では、 さまざまなフィールドに対する基本的なフィルター処理がサポートされています。 qが指定されていない場合は、skip and take によって課される境界内ですべてのパッケージを返す必要があります。 これにより、NuGet Visual Studio エクスペリエンスの [参照] タブが有効になります。

skip パラメーターの既定値は 0 です。

take パラメーターは、0 より大きい整数にする必要があります。 サーバーの実装では、最大値が設定される場合があります。

Note

nuget.org では、 skip パラメーターは 3,000 に、 take パラメーターは 1,000 に制限されます。

prereleaseが指定されていない場合、プレリリース パッケージは除外されます。

semVerLevel クエリ パラメーターは、SemVer 2.0.0 パッケージへのオプトインに使用されます。 このクエリ パラメーターが除外されている場合は、SemVer 1.0.0 互換バージョンのパッケージのみが返されます (4 つの整数部分を持つバージョン文字列など、 標準の NuGet バージョン 管理に関する注意事項があります)。 semVerLevel=2.0.0が指定されている場合は、SemVer 1.0.0 と SemVer 2.0.0 互換パッケージの両方が返されます。 詳細については、 nuget.org の SemVer 2.0.0 サポート を参照してください。

packageType パラメーターは、パッケージの種類名と一致するパッケージの種類が少なくとも 1 つのパッケージのみに検索結果をさらにフィルター処理するために使用されます。 指定されたパッケージの種類が、パッケージの種類ドキュメントで定義されている有効な パッケージの種類でない場合は、空の結果が返されます。 指定されたパッケージの種類が空の場合、フィルターは適用されません。 つまり、packageType パラメーターに値を渡さないと、パラメーターが渡されなかったかのように動作します。

応答

応答は、最大 take 検索結果を含む JSON ドキュメントです。 検索結果はパッケージ ID でグループ化されます。

ルート JSON オブジェクトには、次のプロパティがあります。

氏名 タイプ 必須 メモ
totalHits 整数 yes 一致の合計数。 skiptake
データ オブジェクトの配列 yes 要求によって一致した検索結果

検索結果

data配列内の各項目は、同じパッケージ ID を共有するパッケージ バージョンのグループで構成される JSON オブジェクトです。 オブジェクトには、次のプロパティがあります。

氏名 タイプ 必須 メモ
識別子 文字列 yes 一致したパッケージの ID
バージョン 文字列 yes パッケージの完全な SemVer 2.0.0 バージョン文字列 (ビルド メタデータを含む可能性があります)
説明 文字列 no
廃止 オブジェクト no 最新のパッケージ バージョンに関連付けられている非推奨
versions オブジェクトの配列 yes prerelease パラメーターに一致するすべてのバージョンのパッケージ
authors 文字列または文字列の配列 no
iconUrl 文字列 no
licenseUrl 文字列 no
owners 文字列または文字列の配列 no 1 つの所有者のユーザー名を表す文字列
projectUrl 文字列 no
登録 文字列 no 関連付けられている登録インデックスへの絶対 URL
概要 文字列 no
tags 文字列または文字列の配列 no
title 文字列 no
totalDownloads 整数 no この値は、 versions 配列内のダウンロードの合計によって推論できます
検証 boolean no パッケージが検証されているかどうかを示す JSON ブール値
脆弱 性 オブジェクトの配列 no 最新のパッケージ バージョンに関連付けられている既知のセキュリティの脆弱性
packageTypes オブジェクトの配列 yes パッケージ作成者によって定義されたパッケージの種類 ( SearchQueryService/3.5.0 で追加)

nuget.org では、検証済みパッケージは、予約 ID プレフィックスと一致し、予約済みプレフィックスの所有者のいずれかが所有するパッケージ ID を持つパッケージです。 詳細については、 ID プレフィックス予約に関するドキュメントを参照してください。

検索結果オブジェクトに含まれるメタデータは、最新のパッケージ バージョンから取得されます。 versions配列内の各項目は、次のプロパティを持つ JSON オブジェクトです。

氏名 タイプ 必須 メモ
@id 文字列 yes 関連付けられている登録リーフへの絶対 URL
バージョン 文字列 yes パッケージの完全な SemVer 2.0.0 バージョン文字列 (ビルド メタデータを含む可能性があります)
ダウンロード 整数 yes この特定のパッケージ バージョンのダウンロード数

パッケージの非推奨

deprecation オブジェクトには、次のプロパティがあります。

氏名 タイプ 必須 メモ
理由 文字列の配列 yes パッケージが非推奨になった理由
メッセージ 文字列 no 非推奨に関する追加の詳細
alternatePackage オブジェクト no 代わりに使用する代替パッケージ

reasons配列には、「パッケージの廃止」に記載されている値の少なくとも 1 つが含まれています。

alternatePackage オブジェクトには、次のプロパティがあります。

氏名 タイプ 必須 メモ
識別子 文字列 yes 代替パッケージの ID
範囲 文字列 no 許可されているバージョンの範囲。または、許可されているバージョンがある場合は*

脆弱性

vulnerabilities配列内の各項目は、次のプロパティを持つ JSON オブジェクトです。

氏名 タイプ 必須 メモ
advisoryUrl 文字列 yes パッケージのセキュリティ アドバイザリの URL
severity 整数 yes アドバイザリの重大度: 0 = 低、 1 = 中、 2 = 高、および 3 = 重大

最新のパッケージ バージョンに既知の脆弱性がない場合、配列は空です。

packageTypes配列は、常に少なくとも 1 つの項目で構成されます。 特定のパッケージ ID のパッケージの種類は、他の検索パラメーターに関してパッケージの最新バージョンで定義されているパッケージの種類と見なされます。 packageTypes配列内の各項目は、次のプロパティを持つ JSON オブジェクトです。

氏名 タイプ 必須 メモ
名前 文字列 yes パッケージの種類の名前。

サンプル依頼

GET https://search-sample.nuget.org/query?q=NuGet.Versioning&prerelease=false&semVerLevel=2.0.0

ベース URL セクションで説明されているように、サービス インデックスからベース URL (このサンプルでhttps://search-sample.nuget.org/query ) フェッチしてください。

サンプル応答

{
  "totalHits": 2,
  "data": [
    {
      "registration": "https://api.nuget.org/v3/registration-sample/nuget.versioning/index.json",
      "id": "NuGet.Versioning",
      "version": "4.4.0",
      "description": "NuGet's implementation of Semantic Versioning.",
      "summary": "",
      "title": "NuGet.Versioning",
      "licenseUrl": "https://raw.githubusercontent.com/NuGet/NuGet.Client/dev/LICENSE.txt",
      "tags": [ "semver", "semantic", "versioning" ],
      "authors": [ "NuGet" ],
      "totalDownloads": 141896,
      "verified": true,
      "vulnerabilities": [],
      "packageTypes": [
        {
          "name": "Dependency"
        }
      ],
      "versions": [
        {
          "version": "3.3.0",
          "downloads": 50343,
          "@id": "https://api.nuget.org/v3/registration-sample/nuget.versioning/3.3.0.json"
        },
        {
          "version": "3.4.3",
          "downloads": 27932,
          "@id": "https://api.nuget.org/v3/registration-sample/nuget.versioning/3.4.3.json"
        },
        {
          "version": "4.0.0",
          "downloads": 63004,
          "@id": "https://api.nuget.org/v3/registration-sample/nuget.versioning/4.0.0.json"
        },
        {
          "version": "4.4.0",
          "downloads": 617,
          "@id": "https://api.nuget.org/v3/registration-sample/nuget.versioning/4.4.0.json"
        }
      ]
    },
    {
      "@id": "https://api.nuget.org/v3/registration-sample/nerdbank.gitversioning/index.json",
      "@type": "Package",
      "registration": "https://api.nuget.org/v3/registration-sample/nerdbank.gitversioning/index.json",
      "id": "Nerdbank.GitVersioning",
      "version": "2.0.41",
      "description": "Stamps your assemblies with semver 2.0 compliant git commit specific version information and provides NuGet versioning information as well.",
      "summary": "Stamps your assemblies with semver 2.0 compliant git commit specific version information and provides NuGet versioning information as well.",
      "title": "Nerdbank.GitVersioning",
      "licenseUrl": "https://raw.githubusercontent.com/AArnott/Nerdbank.GitVersioning/ed547462f7/LICENSE.txt",
      "projectUrl": "http://github.com/aarnott/Nerdbank.GitVersioning",
      "tags": [ "git", "commit", "versioning", "version", "assemblyinfo" ],
      "authors": [ "Andrew Arnott" ],
      "totalDownloads": 11906,
      "verified": false,
      "vulnerabilities": [],
      "versions": [
        {
          "version": "1.6.35",
          "downloads": 10229,
          "@id": "https://api.nuget.org/v3/registration-sample/nerdbank.gitversioning/1.6.35.json"
        },
        {
          "version": "2.0.41",
          "downloads": 1677,
          "@id": "https://api.nuget.org/v3/registration-sample/nerdbank.gitversioning/2.0.41.json"
        }
      ]
    }
  ]
}