- パッケージインデックス
- パッケージファイルのダウンロード
- パッケージファイルのアップロード
- シンボルパッケージファイルのアップロード
- ルートプレフィックス
- サービスインデックス
- メタデータサービス
- バージョンメタデータサービス
- 検索サービス
- 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>
