- パッケージインデックス
- パッケージファイルのダウンロード
- パッケージファイルのアップロード
- シンボルパッケージファイルのアップロード
- ルートプレフィックス
- サービスインデックス
- メタデータサービス
- バージョンメタデータサービス
- 検索サービス
- V2 フィード・メタデータ・エンドポイント
NuGet API
NuGet PackagesのAPIドキュメントです。
GitLab パッケージレジストリから NuGet パッケージをアップロードしてインストールする方法については、NuGet パッケージレジストリのドキュメントを参照してください。
パッケージインデックス
GitLab 12.8 で導入されました。
利用可能なバージョンのリストを含む、指定したパッケージのインデックスを返します:
GET projects/:id/packages/nuget/download/:package_name/index
属性 | 種類 | 必須 | 説明 |
---|---|---|---|
id | 文字列です。 | yes | プロジェクトのIDまたはフルパス。 |
package_name | 文字列です。 | yes | パッケージ名。 |
curl --user <username>:<personal_access_token> "https://gitlab.example.com/api/v4/projects/1/packages/nuget/download/MyNuGetPkg/index"
応答例
{
"versions": [
"1.3.0.17"
]
}
パッケージファイルのダウンロード
GitLab 12.8 で導入されました。
NuGetパッケージファイルをダウンロードします。メタデータサービスはこのURLを提供します。
GET projects/:id/packages/nuget/download/:package_name/:package_version/:package_filename
属性 | 種類 | 必須 | 説明 |
---|---|---|---|
id | 文字列です。 | yes | プロジェクトのIDまたはフルパス。 |
package_name | 文字列です。 | yes | パッケージ名。 |
package_version | 文字列です。 | yes | パッケージのバージョン。 |
package_filename | 文字列です。 | yes | ファイル名 |
curl --user <username>:<personal_access_token> "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> "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
に書き込みます。
パッケージファイルのアップロード
- GitLab 12.8 で NuGet v3 フィード用に導入されました。
- GitLab 16.2 で NuGet v2 フィード用に導入。
NuGetパッケージファイルをアップロードします:
-
NuGet v3 フィードの場合:
PUT projects/:id/packages/nuget
-
NuGet V2 フィード用:
PUT projects/:id/packages/nuget/v2
属性 | 種類 | 必須 | 説明 |
---|---|---|---|
id | 文字列です。 | yes | プロジェクトのIDまたはフルパス。 |
package_name | 文字列です。 | yes | パッケージ名。 |
package_version | 文字列です。 | yes | パッケージのバージョン。 |
package_filename | 文字列です。 | yes | ファイル名 |
-
NuGet v3 フィードの場合:
curl --request PUT \ --form 'package=@path/to/mynugetpkg.1.3.0.17.nupkg' \ --user <username>:<personal_access_token> \ "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> \ "https://gitlab.example.com/api/v4/projects/1/packages/nuget/v2"
シンボルパッケージファイルのアップロード
GitLab 12.8 で導入されました。
NuGetシンボルパッケージファイル(.snupkg
)をアップロードします:
PUT projects/:id/packages/nuget/symbolpackage
属性 | 種類 | 必須 | 説明 |
---|---|---|---|
id | 文字列です。 | yes | プロジェクトのIDまたはフルパス。 |
package_name | 文字列です。 | yes | パッケージ名。 |
package_version | 文字列です。 | yes | パッケージのバージョン。 |
package_filename | 文字列です。 | yes | ファイル名 |
curl --request PUT \
--form 'package=@path/to/mynugetpkg.1.3.0.17.snupkg' \
--user <username>:<personal_access_token> \
"https://gitlab.example.com/api/v4/projects/1/packages/nuget/symbolpackage"
ルートプレフィックス
残りのルートについては、それぞれ異なるスコープでリクエストする2つの同じルートセットがあります:
- グループのスコープでリクエストを行うにはグループレベルの接頭辞を使います。
- プロジェクトレベルの接頭辞は、単一のプロジェクトのスコープにリクエストするときに使います。
このドキュメントの例では、すべてプロジェクトレベルの接頭辞を使っています。
グループレベル
/groups/:id/-/packages/nuget`
属性 | 種類 | 必須 | 説明 |
---|---|---|---|
id | 文字列です。 | yes | グループIDまたはフルグループパス。 |
プロジェクトレベル
/projects/:id/packages/nuget`
属性 | 種類 | 必須 | 説明 |
---|---|---|---|
id | 文字列です。 | yes | プロジェクト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 ソースフィード/プロトコル
- GitLab 12.6 で導入されました。
- GitLab 16.1で公開に変更。
利用可能なAPIリソースのリストを返します。認証は必要ありません:
GET <route-prefix>/index
リクエストの例:
curl "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/-
.
メタデータサービス
GitLab 12.8 で導入されました。
パッケージのメタデータを返します:
GET <route-prefix>/metadata/:package_name/index
属性 | 種類 | 必須 | 説明 |
---|---|---|---|
package_name | 文字列です。 | yes | パッケージ名。 |
curl --user <username>:<personal_access_token> "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",
}
}
]
}
]
}
バージョンメタデータサービス
GitLab 12.8 で導入されました。
特定のパッケージバージョンのメタデータを返します:
GET <route-prefix>/metadata/:package_name/:package_version
属性 | 種類 | 必須 | 説明 |
---|---|---|---|
package_name | 文字列です。 | yes | パッケージ名。 |
package_version | 文字列です。 | yes | パッケージのバージョン。 |
curl --user <username>:<personal_access_token> "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",
}
}
検索サービス
GitLab 12.8 で導入されました。
クエリが与えられると、リポジトリ内のNuGetパッケージを検索します:
GET <route-prefix>/query
属性 | 種類 | 必須 | 説明 |
---|---|---|---|
q | 文字列です。 | yes | 検索クエリ。 |
skip | 整数。 | いいえ | スキップする結果の数。 |
take | 整数。 | いいえ | 返す結果の数 |
prerelease | boolean | いいえ | プレリリース・バージョンを含めます。値を指定しなかった場合のデフォルトはtrue です。 |
curl --user <username>:<personal_access_token> "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": ""
}
]
}
V2 フィード・メタデータ・エンドポイント
GitLab 16.3で導入されました。
認証は不要です。V2 フィードの利用可能なエンドポイントのメタデータを返します:
GET <route-prefix>/v2/$metadata
curl "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>