正式なドキュメントは英語版であり、この日本語訳はAI支援翻訳により作成された参考用のものです。日本語訳の一部の内容は人間によるレビューがまだ行われていないため、翻訳のタイミングにより英語版との間に差異が生じることがあります。最新かつ正確な情報については、英語版をご参照ください。

Maven仮想レジストリAPI

  • プラン: Premium、Ultimate
  • 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated

これらのエンドポイントの可用性は、機能フラグによって制御されます。詳細については、履歴を参照してください。これらのエンドポイントはベータで利用できます。使用する前にドキュメントを注意深くレビューしてください。

このAPIを使用して以下を行います:

  • Maven仮想レジストリの作成と管理。
  • アップストリームレジストリの構成。
  • キャッシュエントリの管理。
  • パッケージのダウンロードとアップロードの処理。

仮想レジストリを管理する

次のエンドポイントを使用して、Maven仮想レジストリを作成および管理します。

すべての仮想レジストリをリスト表示

グループのすべてのMaven仮想レジストリをリストします。

GET /groups/:id/-/virtual_registries/packages/maven/registries

サポートされている属性は以下のとおりです:

属性必須説明
id文字列/整数はいグループIDまたは完全なグループパス。トップレベルグループである必要があります。

リクエスト例:

curl --header "PRIVATE-TOKEN: <your_access_token>" \
     --header "Accept: application/json" \
     --url "https://gitlab.example.com/api/v4/groups/5/-/virtual_registries/packages/maven/registries"

レスポンス例:

[
  {
    "id": 1,
    "group_id": 5,
    "name": "my-virtual-registry",
    "description": "My virtual registry",
    "created_at": "2024-05-30T12:28:27.855Z",
    "updated_at": "2024-05-30T12:28:27.855Z"
  }
]

仮想レジストリを作成

グループのMaven仮想レジストリを作成します。

POST /groups/:id/-/virtual_registries/packages/maven/registries
属性必須説明
id文字列/整数はいグループIDまたは完全なグループパス。トップレベルグループである必要があります。
name文字列はい仮想レジストリの名前。
description文字列いいえ仮想レジストリの説明。

リクエスト例:

curl --request POST \
     --header "PRIVATE-TOKEN: <your_access_token>" \
     --header "Content-Type: application/json" \
     --header "Accept: application/json" \
     --data '{"name": "my-virtual-registry", "description": "My virtual registry"}' \
     --url "https://gitlab.example.com/api/v4/groups/5/-/virtual_registries/packages/maven/registries"

レスポンス例:

{
  "id": 1,
  "group_id": 5,
  "name": "my-virtual-registry",
  "description": "My virtual registry",
  "created_at": "2024-05-30T12:28:27.855Z",
  "updated_at": "2024-05-30T12:28:27.855Z"
}

Maven仮想レジストリを取得

特定のMaven仮想レジストリを取得します。

GET /virtual_registries/packages/maven/registries/:id

パラメータは以下のとおりです:

属性必須説明
id整数はいMaven仮想レジストリのID。

リクエスト例:

curl --header "PRIVATE-TOKEN: <your_access_token>" \
     --header "Accept: application/json" \
     --url "https://gitlab.example.com/api/v4/virtual_registries/packages/maven/registries/1"

レスポンス例:

{
  "id": 1,
  "group_id": 5,
  "name": "my-virtual-registry",
  "description": "My virtual registry",
  "created_at": "2024-05-30T12:28:27.855Z",
  "updated_at": "2024-05-30T12:28:27.855Z"
}

仮想レジストリを更新

特定のMaven仮想レジストリを更新します。

PATCH /virtual_registries/packages/maven/registries/:id
属性必須説明
id整数はいMaven仮想レジストリのID。
name文字列はい仮想レジストリの名前。
description文字列いいえ仮想レジストリの説明。

リクエスト例:

curl --request PATCH \
     --header "PRIVATE-TOKEN: <your_access_token>" \
     --header "Content-Type: application/json" \
     --data '{"name": "my-virtual-registry", "description": "My virtual registry"}' \
     --url "https://gitlab.example.com/api/v4/virtual_registries/packages/maven/registries/1"

成功した場合、200 OKステータスコードを返します。

仮想レジストリを削除する

仮想レジストリを削除すると、他の仮想レジストリと共有されていない、関連付けられているすべてのアップストリームレジストリも、それらのキャッシュエントリとともに削除されます。

特定のMaven仮想レジストリを削除します。

DELETE /virtual_registries/packages/maven/registries/:id
属性必須説明
id整数はいMaven仮想レジストリのID。

リクエスト例:

curl --request DELETE --header "PRIVATE-TOKEN: <your_access_token>" \
     --header "Accept: application/json" \
     --url "https://gitlab.example.com/api/v4/virtual_registries/packages/maven/registries/1"

成功した場合、204 No Contentステータスコードを返します。

仮想レジストリのキャッシュエントリを削除

Maven仮想レジストリのすべての排他的アップストリームレジストリ内の削除対象のすべてのキャッシュエントリをスケジュールします。キャッシュエントリは、他の仮想レジストリに関連付けられているアップストリームレジストリでは削除対象としてスケジュールされません。

DELETE /virtual_registries/packages/maven/registries/:id/cache
属性必須説明
id整数はいMaven仮想レジストリのID。

リクエスト例:

curl --request DELETE --header "PRIVATE-TOKEN: <your_access_token>" \
     --header "Accept: application/json" \
     --url "https://gitlab.example.com/api/v4/virtual_registries/packages/maven/registries/1/cache"

成功した場合、204 No Contentステータスコードを返します。

アップストリームレジストリを管理する

次のエンドポイントを使用して、アップストリームMavenレジストリを構成および管理します。

トップレベルグループのすべてのアップストリームレジストリをリスト

トップレベルグループのすべてのアップストリームレジストリをリストします。

GET /groups/:id/-/virtual_registries/packages/maven/upstreams

サポートされている属性は以下のとおりです:

属性必須説明
id文字列/整数はいグループIDまたは完全なグループパス。トップレベルグループである必要があります。
page整数いいえページ番号。デフォルトは1です。
per_page整数いいえページあたりのアイテム数。デフォルトは20です。
upstream_name文字列いいえ名前であいまい検索フィルタリングを行うためのアップストリームレジストリの名前。

リクエスト例:

curl --header "PRIVATE-TOKEN: <your_access_token>" \
     --header "Accept: application/json" \
     --url "https://gitlab.example.com/api/v4/groups/5/-/virtual_registries/packages/maven/upstreams"

レスポンス例:

[
  {
    "id": 1,
    "group_id": 5,
    "url": "https://repo.maven.apache.org/maven2",
    "name": "Maven Central",
    "description": "Maven Central repository",
    "cache_validity_hours": 24,
    "metadata_cache_validity_hours": 24,
    "username": "user",
    "created_at": "2024-05-30T12:28:27.855Z",
    "updated_at": "2024-05-30T12:28:27.855Z"
  }
]

アップストリームレジストリを作成する前に接続をテスト

まだ仮想レジストリに追加されていないMavenアップストリームレジストリへの接続をテストします。このエンドポイントは、アップストリームレジストリを作成する前に、接続と認証情報を検証します。

POST /groups/:id/-/virtual_registries/packages/maven/upstreams/test

サポートされている属性は以下のとおりです:

属性必須説明
id文字列/整数はいグループIDまたは完全なグループパス。トップレベルグループである必要があります。
url文字列はいアップストリームレジストリのURL。
username文字列いいえアップストリームレジストリのユーザー名。
password文字列いいえアップストリームレジストリのパスワード。

リクエストにusernamepasswordの両方を含めるか、どちらも含めないでください。設定されていない場合、パブリック(匿名)リクエストが接続のテストに使用されます。

テストワークフロー

testエンドポイントは、接続と認証を検証するために、テストパスを使用して、指定されたアップストリームURLにHEADリクエストを送信します。HEADリクエストから受信した応答は、次のように解釈されます:

アップストリーム応答説明結果
2XX成功 - アップストリームアクセス可能{ "success": true }
404成功 - アップストリームはアクセス可能ですが、テストアーティファクトが見つかりません{ "success": true }
401認証に失敗しました{ "success": false, "result": "Error: 401 - Unauthorized" }
403アクセスが禁止されています{ "success": false, "result": "Error: 403 - Forbidden" }
5XXアップストリームサーバーエラー{ "success": false, "result": "Error: 5XX - Server Error" }
ネットワークエラー接続/ タイムアウトの問題{ "success": false, "result": "Error: Connection timeout" }

リクエスト例:

curl --header "PRIVATE-TOKEN: <your_access_token>" \
     --header "Content-Type: application/json" \
     --url "https://gitlab.example.com/api/v4/groups/5/-/virtual_registries/packages/maven/upstreams/test" \
     --data '{"url": "https://repo.maven.apache.org/maven2"}'

レスポンス例:

{
  "success": true
}

仮想レジストリのすべてのアップストリームレジストリをリスト

Maven仮想レジストリのすべてのアップストリームレジストリをリストします。

GET /virtual_registries/packages/maven/registries/:id/upstreams

サポートされている属性は以下のとおりです:

属性必須説明
id整数はいMaven仮想レジストリのID。

リクエスト例:

curl --header "PRIVATE-TOKEN: <your_access_token>" \
     --header "Accept: application/json" \
     --url "https://gitlab.example.com/api/v4/virtual_registries/packages/maven/registries/1/upstreams"

レスポンス例:

[
  {
    "id": 1,
    "group_id": 5,
    "url": "https://repo.maven.apache.org/maven2",
    "name": "Maven Central",
    "description": "Maven Central repository",
    "cache_validity_hours": 24,
    "metadata_cache_validity_hours": 24,
    "username": "user",
    "created_at": "2024-05-30T12:28:27.855Z",
    "updated_at": "2024-05-30T12:28:27.855Z",
    "registry_upstream": {
      "id": 1,
      "registry_id": 1,
      "position": 1
    }
  }
]

アップストリームレジストリを作成

アップストリームレジストリをMaven仮想レジストリに追加します。

POST /virtual_registries/packages/maven/registries/:id/upstreams
属性必須説明
id整数はいMaven仮想レジストリのID。
url文字列はいアップストリームレジストリのURL。
username文字列いいえアップストリームレジストリのユーザー名。
password文字列いいえアップストリームレジストリのパスワード。
name文字列いいえアップストリームレジストリの名前。
description文字列いいえアップストリームレジストリの説明。
cache_validity_hours整数いいえキャッシュの有効期間。デフォルトは24時間です。
metadata_cache_validity_hours整数いいえメタデータキャッシュの有効期間。デフォルトは24時間です。

リクエストにusernamepasswordの両方を含めるか、まったく含めないでください。設定されていない場合、パブリック(匿名)リクエストはアップストリームへのアクセスに使用されます。

同じURLと認証情報(usernamepassword)を持つ2つのアップストリームを同じトップレベルグループに追加することはできません。代わりに、次のいずれかを実行できます:

リクエスト例:

curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" \
     --header "Content-Type: application/json" \
     --data '{"url": "https://repo.maven.apache.org/maven2", "name": "Maven Central", "description": "Maven Central repository", "username": <your_username>, "password": <your_password>, "cache_validity_hours": 48, "metadata_cache_validity_hours": 1}' \
     --url "https://gitlab.example.com/api/v4/virtual_registries/packages/maven/registries/1/upstreams"

レスポンス例:

{
  "id": 1,
  "group_id": 5,
  "url": "https://repo.maven.apache.org/maven2",
  "name": "Maven Central",
  "description": "Maven Central repository",
  "cache_validity_hours": 48,
  "metadata_cache_validity_hours": 1,
  "username": "user",
  "created_at": "2024-05-30T12:28:27.855Z",
  "updated_at": "2024-05-30T12:28:27.855Z",
  "registry_upstream": {
    "id": 1,
    "registry_id": 1,
    "position": 1
  }
}

アップストリームレジストリを取得

Maven仮想レジストリの特定のアップストリームレジストリを取得します。

GET /virtual_registries/packages/maven/upstreams/:id

パラメータは以下のとおりです:

属性必須説明
id整数はいアップストリームレジストリのID。

リクエスト例:

curl --header "PRIVATE-TOKEN: <your_access_token>" \
     --header "Accept: application/json" \
     --url "https://gitlab.example.com/api/v4/virtual_registries/packages/maven/upstreams/1"

レスポンス例:

{
  "id": 1,
  "group_id": 5,
  "url": "https://repo.maven.apache.org/maven2",
  "name": "Maven Central",
  "description": "Maven Central repository",
  "cache_validity_hours": 24,
  "metadata_cache_validity_hours": 24,
  "username": "user",
  "created_at": "2024-05-30T12:28:27.855Z",
  "updated_at": "2024-05-30T12:28:27.855Z",
  "registry_upstreams": [
    {
      "id": 1,
      "registry_id": 1,
      "position": 1
    }
  ]
}

アップストリームレジストリを更新

Maven仮想レジストリの特定のアップストリームレジストリを更新します。

PATCH /virtual_registries/packages/maven/upstreams/:id
属性必須説明
id整数はいアップストリームレジストリのID。
url文字列いいえアップストリームレジストリのURL。
name文字列いいえアップストリームレジストリの名前。
description文字列いいえアップストリームレジストリの説明。
username文字列いいえアップストリームレジストリのユーザー名。
password文字列いいえアップストリームレジストリのパスワード。
cache_validity_hours整数いいえキャッシュの有効期間。デフォルトは24時間です。
metadata_cache_validity_hours整数いいえメタデータキャッシュの有効期間。デフォルトは24時間です。

リクエストでオプションのパラメータの少なくとも1つを指定する必要があります。

usernamepasswordは、一緒に指定するか、まったく指定しないでください。設定されていない場合、パブリック(匿名)リクエストはアップストリームへのアクセスに使用されます。

リクエスト例:

curl --request PATCH --header "PRIVATE-TOKEN: <your_access_token>" \
     --header "Content-Type: application/json" \
     --data '{"cache_validity_hours": 72}' \
     --url "https://gitlab.example.com/api/v4/virtual_registries/packages/maven/upstreams/1"

成功した場合、200 OKステータスコードを返します。

アップストリームレジストリの位置を更新

Maven仮想レジストリの順序付けられたリストでアップストリームレジストリの位置を更新します。

PATCH /virtual_registries/packages/maven/registry_upstreams/:id
属性必須説明
id整数はいアップストリームレジストリのID。
position整数はいアップストリームレジストリの位置。1~20。

リクエスト例:

curl --request PATCH --header "PRIVATE-TOKEN: <your_access_token>" \
     --header "Content-Type: application/json" \
     --data '{"position": 5}' \
     --url "https://gitlab.example.com/api/v4/virtual_registries/packages/maven/registry_upstreams/1"

成功した場合、200 OKステータスコードを返します。

アップストリームレジストリを削除

Maven仮想レジストリの特定のアップストリームレジストリを削除します。

DELETE /virtual_registries/packages/maven/upstreams/:id
属性必須説明
id整数はいアップストリームレジストリのID。

リクエスト例:

curl --request DELETE --header "PRIVATE-TOKEN: <your_access_token>" \
     --header "Accept: application/json" \
     --url "https://gitlab.example.com/api/v4/virtual_registries/packages/maven/upstreams/1"

成功した場合、204 No Contentステータスコードを返します。

アップストリームをレジストリに関連付けます

既存のアップストリームレジストリをMaven仮想レジストリに関連付けます。

POST /virtual_registries/packages/maven/registry_upstreams
属性必須説明
registry_id整数はいMaven仮想レジストリのID。
upstream_id整数はいMavenアップストリームレジストリのグローバルID。

リクエスト例:

curl --request POST \
     --header "PRIVATE-TOKEN: <your_access_token>" \
     --header "Content-Type: application/json" \
     --header "Accept: application/json" \
     --data '{"registry_id": 1, "upstream_id": 2}' \
     --url "https://gitlab.example.com/api/v4/virtual_registries/packages/maven/registry_upstreams"

レスポンス例:

{
  "id": 5,
  "registry_id": 1,
  "upstream_id": 2,
  "position": 2
}

レジストリからアップストリームの関連付けを解除

アップストリームレジストリとMaven仮想レジストリ間の関連付けを削除します。

DELETE /virtual_registries/packages/maven/registry_upstreams/:id
属性必須説明
id整数はいレジストリアップストリームの関連付けのID。

リクエスト例:

curl --request DELETE \
     --header "PRIVATE-TOKEN: <your_access_token>" \
     --header "Content-Type: application/json" \
     --header "Accept: application/json" \
     --url "https://gitlab.example.com/api/v4/virtual_registries/packages/maven/registry_upstreams/1"

成功した場合、204 No Contentステータスコードを返します。

アップストリームレジストリのキャッシュエントリを削除

Maven仮想レジストリ内の特定のアップストリームレジストリの削除対象のすべてのキャッシュエントリをスケジュールします。

DELETE /virtual_registries/packages/maven/upstreams/:id/cache
属性必須説明
id整数はいアップストリームレジストリのID。

リクエスト例:

curl --request DELETE --header "PRIVATE-TOKEN: <your_access_token>" \
     --header "Accept: application/json" \
     --url "https://gitlab.example.com/api/v4/virtual_registries/packages/maven/upstreams/1/cache"

成功した場合、204 No Contentステータスコードを返します。

アップストリームレジストリへの接続をテスト

既存のMavenアップストリームレジストリへの接続をテストします。

GET /virtual_registries/packages/maven/upstreams/:id/test

テストの仕組み

このエンドポイントは、接続と認証を検証するために、テストパスを使用してアップストリームURLへのHEADリクエストを実行します。アップストリームにキャッシュされたアーティファクトがある場合、その相対パスはテストに使用されます。それ以外の場合は、ダミーパスが使用されます。HEADリクエストから受信した応答は、次のように解釈されます:

アップストリーム応答意味結果
2XX成功 - アップストリームアクセス可能{ "success": true }
404成功 - アップストリームはアクセス可能ですが、テストアーティファクトが見つかりません{ "success": true }
401認証に失敗しました{ "success": false, "result": "Error: 401 - Unauthorized" }
403アクセスが禁止されています{ "success": false, "result": "Error: 403 - Forbidden" }
5XXアップストリームサーバーエラー{ "success": false, "result": "Error: 5XX - Server Error" }
ネットワークエラー接続/ タイムアウトの問題{ "success": false, "result": "Error: Connection timeout" }

2XX(検出)と404(見つかりません)の両方の応答は、アップストリームレジストリへの接続と認証が成功したことを示します。このテストでは、GitLabがアップストリームに到達して認証できることを検証しますが、特定のアーティファクトが存在するかどうかは検証しません。

リクエスト例:

curl --header "PRIVATE-TOKEN: <your_access_token>" \
     --header "Accept: application/json" \
     --url "https://gitlab.example.com/api/v4/virtual_registries/packages/maven/upstreams/1/test"

レスポンス例:

{
  "success": true
}

キャッシュエントリの管理

次のエンドポイントを使用して、Maven仮想レジストリのキャッシュエントリを管理します。

アップストリームレジストリのキャッシュエントリをリスト

Mavenアップストリームレジストリのキャッシュエントリをリストします。

GET /virtual_registries/packages/maven/upstreams/:id/cache_entries

サポートされている属性は以下のとおりです:

属性必須説明
id整数はいアップストリームレジストリのID。
search文字列いいえパッケージの相対パスの検索クエリ(たとえば、foo/bar/mypkg)。
page整数いいえページ番号。デフォルトは1です。
per_page整数いいえページあたりのアイテム数。デフォルトは20です。

リクエスト例:

curl --header "PRIVATE-TOKEN: <your_access_token>" \
     --header "Accept: application/json" \
     --url "https://gitlab.example.com/api/v4/virtual_registries/packages/maven/upstreams/1/cache_entries?search=foo/bar"

レスポンス例:

[
  {
    "id": "MTUgZm9vL2Jhci9teXBrZy8xLjAtU05BUFNIT1QvbXlwa2ctMS4wLVNOQVBTSE9ULmphcg==",
    "group_id": 5,
    "upstream_id": 1,
    "upstream_checked_at": "2024-05-30T12:28:27.855Z",
    "file_md5": "44f21d5190b5a6df8089f54799628d7e",
    "file_sha1": "74d101856d26f2db17b39bd22d3204021eb0bf7d",
    "size": 2048,
    "relative_path": "foo/bar/package-1.0.0.pom",
    "content_type": "application/xml",
    "upstream_etag": "\"686897696a7c876b7e\"",
    "created_at": "2024-05-30T12:28:27.855Z",
    "updated_at": "2024-05-30T12:28:27.855Z",
    "downloads_count": 6,
    "downloaded_at": "2024-06-05T14:58:32.855Z"
  }
]

アップストリームレジストリのキャッシュエントリを削除

Mavenアップストリームレジストリの特定のキャッシュエントリを削除します。

DELETE /virtual_registries/packages/maven/cache_entries/*id
属性必須説明
id文字列はいキャッシュエントリのbase64エンコードされたアップストリームIDと相対パス(たとえば、「Zm9vL2Jhci9teXBrZy5wb20=」)。

リクエスト例:

curl --request DELETE --header "PRIVATE-TOKEN: <your_access_token>" \
     --header "Accept: application/json" \
     --url "https://gitlab.example.com/api/v4/virtual_registries/packages/maven/cache_entries/Zm9vL2Jhci9teXBrZy5wb20="

成功した場合、204 No Contentステータスコードを返します。

パッケージ操作の管理

次のエンドポイントを使用して、Maven仮想レジストリのパッケージ操作を管理します。

これらのエンドポイントは、GitLabによる内部使用を目的としており、通常は手動で使用することを意図していません。

これらのエンドポイントは、REST API認証方式に準拠していません。サポートされているヘッダーとトークンの種類の詳細については、Maven仮想レジストリを参照してください。記載されていない認証方法は、将来削除される可能性があります。

パッケージをダウンロードする

Maven仮想レジストリからパッケージをダウンロードします。このリソースにアクセスするには、レジストリで認証する必要があります。

GET /virtual_registries/packages/maven/:id/*path

サポートされている属性は以下のとおりです:

属性必須説明
id整数はいMaven仮想レジストリのID。
path文字列はい完全なパッケージパス(たとえば、foo/bar/mypkg/1.0-SNAPSHOT/mypkg-1.0-SNAPSHOT.jar)。

リクエスト例:

curl --header "PRIVATE-TOKEN: <your_access_token>" \
     --url "https://gitlab.example.com/api/v4/virtual_registries/packages/maven/1/foo/bar/mypkg/1.0-SNAPSHOT/mypkg-1.0-SNAPSHOT.jar" \
     --output mypkg-1.0-SNAPSHOT.jar

成功した場合、200 OKを返し、次のヘッダー応答を返します:

  • x-checksum-sha1: ファイルのSHA1チェックサム
  • x-checksum-md5: ファイルのMD5チェックサム
  • Content-Type: ファイルのMIMEタイプ
  • Content-Length: サイズ - ファイルサイズ(バイト単位)

パッケージをアップロード

パッケージをMaven仮想レジストリにアップロードします。このエンドポイントは、GitLab Workhorseでのみアクセスできます。

POST /virtual_registries/packages/maven/:id/*path/upload
属性必須説明
id整数はいMaven仮想レジストリのID。
path文字列はい完全なパッケージパス(たとえば、foo/bar/mypkg/1.0-SNAPSHOT/mypkg-1.0-SNAPSHOT.jar)。
fileファイルはいアップロードされているファイル。

リクエストヘッダー:

  • Etag: ファイルのエンティティタグ付け
  • GitLab-Workhorse-Send-Dependency-Content-Type: ファイルのコンテンツタイプ
  • Upstream-GID: ターゲットアップストリームのグローバルID

成功した場合、200 OKステータスコードを返します。