NuGet API
- プラン: Free、Premium、Ultimate
- 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated
これは、NuGetパッケージのAPIドキュメントです。
このAPIは、NuGetパッケージマネージャークライアントで使用され、通常は手動での使用を目的としていません。
GitLabパッケージレジストリからNuGetパッケージをアップロードおよびインストールする方法については、NuGetパッケージレジストリのドキュメントを参照してください。
これらのエンドポイントは、標準のAPI認証方式に準拠していません。どのヘッダーとトークンタイプがサポートされているかの詳細については、NuGetパッケージレジストリドキュメントを参照してください。記載されていない認証方法は、将来削除される可能性があります。
パッケージインデックス
指定されたパッケージのインデックスを返します。これには、利用可能なバージョンのリストが含まれます:
GET projects/:id/packages/nuget/download/:package_name/index| 属性 | 型 | 必須 | 説明 |
|---|---|---|---|
id | 文字列 | はい | プロジェクトのIDまたはフルパス。 |
package_name | 文字列 | はい | パッケージの名前。 |
curl --user <username>:<personal_access_token> \
--url "https://gitlab.example.com/api/v4/projects/1/packages/nuget/download/MyNuGetPkg/index"レスポンス例:
{
"versions": [
"1.3.0.17"
]
}パッケージファイルをダウンロードする
NuGetパッケージファイルをダウンロードします。メタデータサービスは、このURLを提供します。
GET projects/:id/packages/nuget/download/:package_name/:package_version/:package_filename| 属性 | 型 | 必須 | 説明 |
|---|---|---|---|
id | 文字列 | はい | プロジェクトのIDまたはフルパス。 |
package_name | 文字列 | はい | パッケージの名前。 |
package_version | 文字列 | はい | パッケージのバージョン。 |
package_filename | 文字列 | はい | ファイルの名前。 |
curl --user <username>:<personal_access_token> \
--url "https://gitlab.example.com/api/v4/projects/1/packages/nuget/download/MyNuGetPkg/1.3.0.17/mynugetpkg.1.3.0.17.nupkg"出力をファイルに書き込みます:
curl --user <username>:<personal_access_token> \
--url "https://gitlab.example.com/api/v4/projects/1/packages/nuget/download/MyNuGetPkg/1.3.0.17/mynugetpkg.1.3.0.17.nupkg" > MyNuGetPkg.1.3.0.17.nupkgこれにより、ダウンロードされたファイルが現在のディレクトリのMyNuGetPkg.1.3.0.17.nupkgに書き込まれます。
グループエンドポイントを使用すると、このAPIは404ステータスを返します。このエラーを回避するには、NuGetパッケージマネージャーCLIを使用して、グループエンドポイントでパッケージをインストールします。
パッケージファイルをアップロード
NuGetパッケージファイルをアップロードします:
NuGet v3フィードの場合:
PUT projects/:id/packages/nugetNuGet V2フィードの場合:
PUT projects/:id/packages/nuget/v2
| 属性 | 型 | 必須 | 説明 |
|---|---|---|---|
id | 文字列 | はい | プロジェクトのIDまたはフルパス。 |
package_name | 文字列 | はい | パッケージの名前。 |
package_version | 文字列 | はい | パッケージのバージョン。 |
package_filename | 文字列 | はい | ファイルの名前。 |
NuGet v3フィードの場合:
curl --request PUT \ --form 'package=@path/to/mynugetpkg.1.3.0.17.nupkg' \ --user <username>:<personal_access_token> \ --url "https://gitlab.example.com/api/v4/projects/1/packages/nuget/"NuGet v2フィードの場合:
curl --request PUT \ --form 'package=@path/to/mynugetpkg.1.3.0.17.nupkg' \ --user <username>:<personal_access_token> \ --url "https://gitlab.example.com/api/v4/projects/1/packages/nuget/v2"
シンボルパッケージファイルをアップロード
NuGetシンボルパッケージファイルをアップロードします(.snupkg):
PUT projects/:id/packages/nuget/symbolpackage| 属性 | 型 | 必須 | 説明 |
|---|---|---|---|
id | 文字列 | はい | プロジェクトのIDまたはフルパス。 |
package_name | 文字列 | はい | パッケージの名前。 |
package_version | 文字列 | はい | パッケージのバージョン。 |
package_filename | 文字列 | はい | ファイルの名前。 |
curl --request PUT \
--form 'package=@path/to/mynugetpkg.1.3.0.17.snupkg' \
--user <username>:<personal_access_token> \
--url "https://gitlab.example.com/api/v4/projects/1/packages/nuget/symbolpackage"ルートプレフィックス
残りのルートでは、それぞれ異なるスコープでリクエストを行う、同一のルートの2つのセットがあります:
- グループレベルのプレフィックスを使用して、グループのスコープでリクエストを行います。
- プロジェクトレベルのプレフィックスを使用して、単一のプロジェクトのスコープでリクエストを行います。
このドキュメントの例ではすべて、プロジェクトレベルのプレフィックスを使用しています。
グループレベル
/groups/:id/-/packages/nuget| 属性 | 型 | 必須 | 説明 |
|---|---|---|---|
id | 文字列 | はい | グループIDまたは完全なグループパス。 |
プロジェクトレベル
/projects/:id/packages/nuget| 属性 | 型 | 必須 | 説明 |
|---|---|---|---|
id | 文字列 | はい | プロジェクトIDまたは完全なプロジェクトパス。 |
サービスインデックス
V2ソースフィード/プロトコル
v2 NuGetソースフィードのサービスインデックスを表すXMLドキュメントを返します。認証は必須ではありません:
GET <route-prefix>/v2リクエスト例:
curl "https://gitlab.example.com/api/v4/projects/1/packages/nuget/v2"レスポンス例:
<?xml version="1.0" encoding="utf-8"?>
<service xmlns="http://www.w3.org/2007/app" xmlns:atom="http://www.w3.org/2005/Atom" xml:base="https://gitlab.example.com/api/v4/projects/1/packages/nuget/v2">
<workspace>
<atom:title type="text">Default</atom:title>
<collection href="Packages">
<atom:title type="text">Packages</atom:title>
</collection>
</workspace>
</service>V3ソースフィード/プロトコル
利用可能なAPIリソースのリストを返します。認証は必須ではありません:
GET <route-prefix>/indexリクエスト例:
curl --url "https://gitlab.example.com/api/v4/projects/1/packages/nuget/index"レスポンス例:
{
"version": "3.0.0",
"resources": [
{
"@id": "https://gitlab.example.com/api/v4/projects/1/packages/nuget/query",
"@type": "SearchQueryService",
"comment": "Filter and search for packages by keyword."
},
{
"@id": "https://gitlab.example.com/api/v4/projects/1/packages/nuget/query",
"@type": "SearchQueryService/3.0.0-beta",
"comment": "Filter and search for packages by keyword."
},
{
"@id": "https://gitlab.example.com/api/v4/projects/1/packages/nuget/query",
"@type": "SearchQueryService/3.0.0-rc",
"comment": "Filter and search for packages by keyword."
},
{
"@id": "https://gitlab.example.com/api/v4/projects/1/packages/nuget/metadata",
"@type": "RegistrationsBaseUrl",
"comment": "Get package metadata."
},
{
"@id": "https://gitlab.example.com/api/v4/projects/1/packages/nuget/metadata",
"@type": "RegistrationsBaseUrl/3.0.0-beta",
"comment": "Get package metadata."
},
{
"@id": "https://gitlab.example.com/api/v4/projects/1/packages/nuget/metadata",
"@type": "RegistrationsBaseUrl/3.0.0-rc",
"comment": "Get package metadata."
},
{
"@id": "https://gitlab.example.com/api/v4/projects/1/packages/nuget/download",
"@type": "PackageBaseAddress/3.0.0",
"comment": "Get package content (.nupkg)."
},
{
"@id": "https://gitlab.example.com/api/v4/projects/1/packages/nuget",
"@type": "PackagePublish/2.0.0",
"comment": "Push and delete (or unlist) packages."
},
{
"@id": "https://gitlab.example.com/api/v4/projects/1/packages/nuget/symbolpackage",
"@type": "SymbolPackagePublish/4.9.0",
"comment": "Push symbol packages."
}
]
}レスポンス内のURLには、リクエストに使用されるものと同じルートプレフィックスがあります。グループレベルのルートでそれらをリクエストすると、返されるURLには/groups/:id/-が含まれます。
メタデータサービス
パッケージのメタデータを返します:
GET <route-prefix>/metadata/:package_name/index| 属性 | 型 | 必須 | 説明 |
|---|---|---|---|
package_name | 文字列 | はい | パッケージの名前。 |
curl --user <username>:<personal_access_token> \
--url "https://gitlab.example.com/api/v4/projects/1/packages/nuget/metadata/MyNuGetPkg/index"レスポンス例:
{
"count": 1,
"items": [
{
"@id": "https://gitlab.example.com/api/v4/projects/1/packages/nuget/metadata/MyNuGetPkg/1.3.0.17.json",
"lower": "1.3.0.17",
"upper": "1.3.0.17",
"count": 1,
"items": [
{
"@id": "https://gitlab.example.com/api/v4/projects/1/packages/nuget/metadata/MyNuGetPkg/1.3.0.17.json",
"packageContent": "https://gitlab.example.com/api/v4/projects/1/packages/nuget/download/MyNuGetPkg/1.3.0.17/helloworld.1.3.0.17.nupkg",
"catalogEntry": {
"@id": "https://gitlab.example.com/api/v4/projects/1/packages/nuget/metadata/MyNuGetPkg/1.3.0.17.json",
"authors": "Author1, Author2",
"dependencyGroups": [],
"id": "MyNuGetPkg",
"version": "1.3.0.17",
"tags": "",
"packageContent": "https://gitlab.example.com/api/v4/projects/1/packages/nuget/download/MyNuGetPkg/1.3.0.17/helloworld.1.3.0.17.nupkg",
"description": "Description of the package",
"summary": "Description of the package",
"published": "2023-05-08T17:23:25Z",
}
}
]
}
]
}バージョンメタデータサービス
特定のパッケージバージョンのメタデータを返します:
GET <route-prefix>/metadata/:package_name/:package_version| 属性 | 型 | 必須 | 説明 |
|---|---|---|---|
package_name | 文字列 | はい | パッケージの名前。 |
package_version | 文字列 | はい | パッケージのバージョン。 |
curl --user <username>:<personal_access_token> \
--url "https://gitlab.example.com/api/v4/projects/1/packages/nuget/metadata/MyNuGetPkg/1.3.0.17"レスポンス例:
{
"@id": "https://gitlab.example.com/api/v4/projects/1/packages/nuget/metadata/MyNuGetPkg/1.3.0.17.json",
"packageContent": "https://gitlab.example.com/api/v4/projects/1/packages/nuget/download/MyNuGetPkg/1.3.0.17/helloworld.1.3.0.17.nupkg",
"catalogEntry": {
"@id": "https://gitlab.example.com/api/v4/projects/1/packages/nuget/metadata/MyNuGetPkg/1.3.0.17.json",
"authors": "Author1, Author2",
"dependencyGroups": [],
"id": "MyNuGetPkg",
"version": "1.3.0.17",
"tags": "",
"packageContent": "https://gitlab.example.com/api/v4/projects/1/packages/nuget/download/MyNuGetPkg/1.3.0.17/helloworld.1.3.0.17.nupkg",
"description": "Description of the package",
"summary": "Description of the package",
"published": "2023-05-08T17:23:25Z",
}
}検索サービス
クエリを指定すると、リポジトリ内のNuGetパッケージを検索します:
GET <route-prefix>/query| 属性 | 型 | 必須 | 説明 |
|---|---|---|---|
q | 文字列 | はい | 検索クエリ。 |
skip | 整数 | いいえ | スキップする結果の数。 |
take | 整数 | いいえ | 返す結果の数。 |
prerelease | ブール値 | いいえ | プレリリースバージョンを含めます。値が指定されていない場合は、trueにデフォルト設定されます。 |
curl --user <username>:<personal_access_token> \
--url "https://gitlab.example.com/api/v4/projects/1/packages/nuget/query?q=MyNuGet"レスポンス例:
{
"totalHits": 1,
"data": [
{
"@type": "Package",
"authors": "Author1, Author2",
"id": "MyNuGetPkg",
"title": "MyNuGetPkg",
"description": "Description of the package",
"summary": "Description of the package",
"totalDownloads": 0,
"verified": true,
"version": "1.3.0.17",
"versions": [
{
"@id": "https://gitlab.example.com/api/v4/projects/1/packages/nuget/metadata/MyNuGetPkg/1.3.0.17.json",
"version": "1.3.0.17",
"downloads": 0
}
],
"tags": ""
}
]
}サービスの削除
NuGetパッケージを削除します:
DELETE projects/:id/packages/nuget/:package_name/:package_version| 属性 | 型 | 必須 | 説明 |
|---|---|---|---|
id | 文字列 | はい | プロジェクトのIDまたはフルパス。 |
package_name | 文字列 | はい | パッケージの名前。 |
package_version | 文字列 | はい | パッケージのバージョン。 |
curl --request DELETE \
--user <username>:<personal_access_token> \
--url "https://gitlab.example.com/api/v4/projects/1/packages/nuget/MyNuGetPkg/1.3.0.17"リクエストに対する考えられるレスポンス:
| ステータス | 説明 |
|---|---|
204 | パッケージが削除されました |
401 | 認証されていません |
403 | 禁止されています |
404 | 見つかりません |
デバッグシンボルファイル.pdbをダウンロードします
デバッグシンボルファイル(.pdb)をダウンロード:
GET <route-prefix>/symbolfiles/:file_name/:signature/:file_name| 属性 | 型 | 必須 | 説明 |
|---|---|---|---|
file_name | 文字列 | はい | ファイルの名前。 |
signature | 文字列 | はい | ファイルの署名。 |
Symbolchecksum | 文字列 | はい | 必須ヘッダー。ファイルのチェックサム。 |
curl --header "Symbolchecksum: SHA256:<file_checksum>" \
--url "https://gitlab.example.com/api/v4/projects/1/packages/nuget/symbolfiles/:file_name/:signature/:file_name"出力をファイルに書き込みます:
curl --header "Symbolchecksum: SHA256:<file_checksum>" \
--url "https://gitlab.example.com/api/v4/projects/1/packages/nuget/symbolfiles/mynugetpkg.pdb/k813f89485474661234z7109cve5709eFFFFFFFF/mynugetpkg.pdb" > mynugetpkg.pdbリクエストに対する考えられるレスポンス:
| ステータス | 説明 |
|---|---|
200 | ファイルがダウンロードされました |
400 | 無効なリクエスト |
403 | 禁止されています |
404 | 見つかりません |
V2フィードメタデータエンドポイント
$metadataエンドポイント
認証は必須ではありません。V2フィードで使用可能なエンドポイントのメタデータを返します:
GET <route-prefix>/v2/$metadatacurl --url "https://gitlab.example.com/api/v4/projects/1/packages/nuget/v2/$metadata"レスポンス例:
<edmx:Edmx xmlns:edmx="http://schemas.microsoft.com/ado/2007/06/edmx" Version="1.0">
<edmx:DataServices xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" m:DataServiceVersion="2.0" m:MaxDataServiceVersion="2.0">
<Schema xmlns="http://schemas.microsoft.com/ado/2006/04/edm" Namespace="NuGetGallery.OData">
<EntityType Name="V2FeedPackage" m:HasStream="true">
<Key>
<PropertyRef Name="Id"/>
<PropertyRef Name="Version"/>
</Key>
<Property Name="Id" Type="Edm.String" Nullable="false"/>
<Property Name="Version" Type="Edm.String" Nullable="false"/>
<Property Name="Authors" Type="Edm.String"/>
<Property Name="Dependencies" Type="Edm.String"/>
<Property Name="Description" Type="Edm.String"/>
<Property Name="DownloadCount" Type="Edm.Int64" Nullable="false"/>
<Property Name="IconUrl" Type="Edm.String"/>
<Property Name="Published" Type="Edm.DateTime" Nullable="false"/>
<Property Name="ProjectUrl" Type="Edm.String"/>
<Property Name="Tags" Type="Edm.String"/>
<Property Name="Title" Type="Edm.String"/>
<Property Name="LicenseUrl" Type="Edm.String"/>
</EntityType>
</Schema>
<Schema xmlns="http://schemas.microsoft.com/ado/2006/04/edm" Namespace="NuGetGallery">
<EntityContainer Name="V2FeedContext" m:IsDefaultEntityContainer="true">
<EntitySet Name="Packages" EntityType="NuGetGallery.OData.V2FeedPackage"/>
<FunctionImport Name="FindPackagesById" ReturnType="Collection(NuGetGallery.OData.V2FeedPackage)" EntitySet="Packages">
<Parameter Name="id" Type="Edm.String" FixedLength="false" Unicode="false"/>
</FunctionImport>
</EntityContainer>
</Schema>
</edmx:DataServices>
</edmx:Edmx>ODataパッケージエントリエンドポイント
| エンドポイント | 説明 |
|---|---|
GET projects/:id/packages/nuget/v2/Packages()?$filter=(tolower(Id) eq '<package_name>') | 指定された名前のパッケージに関する情報を含むOData XMLドキュメントを返します。 |
GET projects/:id/packages/nuget/v2/FindPackagesById()?id='<package_name>' | 指定された名前のパッケージに関する情報を含むOData XMLドキュメントを返します。 |
GET projects/:id/packages/nuget/v2/Packages(Id='<package_name>',Version='<package_version>') | 指定された名前とバージョンのパッケージに関する情報を含むOData XMLドキュメントを返します。 |
curl --url "https://gitlab.example.com/api/v4/projects/1/packages/nuget/v2/Packages(Id='mynugetpkg',Version='1.0.0')"レスポンス例:
<entry xmlns="http://www.w3.org/2005/Atom" xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:georss="http://www.georss.org/georss" xmlns:gml="http://www.opengis.net/gml" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xml:base="https://gitlab.example.com/api/v4/projects/1/packages/nuget/v2">
<id>https://gitlab.example.com/api/v4/projects/1/packages/nuget/v2/Packages(Id='mynugetpkg',Version='1.0.0')</id>
<category term="V2FeedPackage" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme"/>
<title type="text">mynugetpkg</title>
<content type="application/zip" src="https://gitlab.example.com/api/v4/projects/1/packages/nuget/download/mynugetpkg/1.0.0/mynugetpkg.1.0.0.nupkg"/>
<m:properties>
<d:Version>1.0.0</d:Version>
</m:properties>
</entry>GitLabは、Packages()およびFindPackagesByID()エンドポイントの認証トークンを受信しないため、パッケージの最新バージョンを返すことができません。NuGet v2フィードを使用してパッケージをインストールまたはバージョンアップグレードする場合は、バージョンを指定する必要があります。
curl --url "https://gitlab.example.com/api/v4/projects/1/packages/nuget/v2/Packages()?$filter=(tolower(Id) eq 'mynugetpkg')"レスポンス例:
<entry xmlns="http://www.w3.org/2005/Atom" xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:georss="http://www.georss.org/georss" xmlns:gml="http://www.opengis.net/gml" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xml:base="https://gitlab.example.com/api/v4/projects/1/packages/nuget/v2">
<id>https://gitlab.example.com/api/v4/projects/1/packages/nuget/v2/Packages(Id='mynugetpkg',Version='')</id>
<category term="V2FeedPackage" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme"/>
<title type="text">mynugetpkg</title>
<content type="application/zip" src="https://gitlab.example.com/api/v4/projects/1/packages/nuget/v2"/>
<m:properties>
<d:Version></d:Version>
</m:properties>
</entry>