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

コンテナリポジトリ保護ルールAPI

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

このAPIを使用して、container repository protection rulesを管理します。

コンテナリポジトリ保護ルールの一覧

プロジェクトのコンテナリポジトリからコンテナリポジトリ保護ルールの一覧を取得します。

GET /api/v4/projects/:id/registry/protection/repository/rules

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

属性必須説明
id整数または文字列はいプロジェクトのIDまたはURLエンコードされたパス

成功した場合、200とコンテナリポジトリ保護ルールの一覧を返します。

次のステータスコードを返すことができます:

  • 200 OK: 保護ルールの一覧。
  • 401 Unauthorized: アクセストークンが無効です。
  • 403 Forbidden: このプロジェクトの保護ルールを一覧表示する権限がユーザーにありません。
  • 404 Not Found: プロジェクトが見つかりませんでした。

リクエスト例:

curl --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/projects/7/registry/protection/repository/rules"

レスポンス例:

[
  {
    "id": 1,
    "project_id": 7,
    "repository_path_pattern": "flightjs/flight0",
    "minimum_access_level_for_push": "maintainer",
    "minimum_access_level_for_delete": "maintainer"
  },
  {
    "id": 2,
    "project_id": 7,
    "repository_path_pattern": "flightjs/flight1",
    "minimum_access_level_for_push": "maintainer",
    "minimum_access_level_for_delete": "maintainer"
  },
]

コンテナリポジトリ保護ルールを作成する

プロジェクトのコンテナリポジトリのコンテナリポジトリ保護ルールを作成します。

POST /api/v4/projects/:id/registry/protection/repository/rules

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

属性必須説明
id整数または文字列はいプロジェクトのIDまたはURLエンコードされたパス
repository_path_pattern文字列はい保護ルールによって保護されるコンテナリポジトリパスパターン。例: flight/flight-*。ワイルドカード文字*を使用できます。
minimum_access_level_for_delete文字列いいえコンテナリポジトリ内のコンテナイメージを削除するために必要な最小GitLabアクセスレベル。例: maintainerowneradminminimum_access_level_for_pushが設定されていない場合は、指定する必要があります。
minimum_access_level_for_push文字列いいえコンテナイメージをコンテナリポジトリにプッシュするために必要な最小GitLabアクセスレベル。例: maintainerowneradminminimum_access_level_for_deleteが設定されていない場合は、指定する必要があります。

成功した場合、201と、作成されたコンテナリポジトリ保護ルールを返します。

次のステータスコードを返すことができます:

  • 201 Created: 保護ルールが正常に作成されました。
  • 400 Bad Request: 保護ルールが無効です。
  • 401 Unauthorized: アクセストークンが無効です。
  • 403 Forbidden: 保護ルールを作成する権限がユーザーにありません。
  • 404 Not Found: プロジェクトが見つかりませんでした。
  • 422 Unprocessable Entity: 保護ルールを作成できませんでした。たとえば、repository_path_patternがすでに使用されているためです。

リクエスト例:

curl --request POST \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --header "Content-Type: application/json" \
  --url "https://gitlab.example.com/api/v4/projects/7/registry/protection/repository/rules" \
  --data '{
        "repository_path_pattern": "flightjs/flight-needs-to-be-a-unique-path",
        "minimum_access_level_for_push": "maintainer",
        "minimum_access_level_for_delete": "maintainer"
    }'

コンテナリポジトリ保護ルールを更新する

プロジェクトのコンテナリポジトリのコンテナリポジトリ保護ルールを更新します。

PATCH /api/v4/projects/:id/registry/protection/repository/rules/:protection_rule_id

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

属性必須説明
id整数または文字列はいプロジェクトのIDまたはURLエンコードされたパス
protection_rule_id整数はい更新する保護ルールのID。
minimum_access_level_for_delete文字列いいえコンテナリポジトリ内のコンテナイメージを削除するために必要な最小GitLabアクセスレベル。例: maintainerowneradminminimum_access_level_for_pushが設定されていない場合は、指定する必要があります。値を設定解除するには、空の文字列""を使用します。
minimum_access_level_for_push文字列いいえコンテナイメージをコンテナリポジトリにプッシュするために必要な最小GitLabアクセスレベル。例: maintainerowneradminminimum_access_level_for_deleteが設定されていない場合は、指定する必要があります。値を設定解除するには、空の文字列""を使用します。
repository_path_pattern文字列いいえ保護ルールによって保護されるコンテナリポジトリパスパターン。例: flight/flight-*。ワイルドカード文字*を使用できます。

成功した場合、200と、更新された保護ルールを返します。

次のステータスコードを返すことができます:

  • 200 OK: 保護ルールが正常に更新されました。
  • 400 Bad Request: 保護ルールが無効です。
  • 401 Unauthorized: アクセストークンが無効です。
  • 403 Forbidden: 保護ルールを更新する権限がユーザーにありません。
  • 404 Not Found: プロジェクトが見つかりませんでした。
  • 422 Unprocessable Entity: 保護ルールを更新できませんでした。たとえば、repository_path_patternがすでに使用されているためです。

リクエスト例:

curl --request PATCH \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --header "Content-Type: application/json" \
  --url "https://gitlab.example.com/api/v4/projects/7/registry/protection/repository/rules/32" \
  --data '{
       "repository_path_pattern": "flight/flight-*"
    }'

コンテナリポジトリ保護ルールを削除する

プロジェクトのコンテナリポジトリからコンテナリポジトリ保護ルールを削除します。

DELETE /api/v4/projects/:id/registry/protection/repository/rules/:protection_rule_id

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

属性必須説明
id整数または文字列はいプロジェクトのIDまたはURLエンコードされたパス
protection_rule_id整数はい削除するコンテナリポジトリ保護ルールのID。

成功すると、204 No Contentを返します。

次のステータスコードを返すことができます:

  • 204 No Content: 保護ルールは正常に削除されました。
  • 400 Bad Request: idまたはprotection_rule_idがないか、無効です。
  • 401 Unauthorized: アクセストークンが無効です。
  • 403 Forbidden: 保護ルールを削除する権限がユーザーにありません。
  • 404 Not Found: プロジェクトまたは保護ルールが見つかりませんでした。

リクエスト例:

curl --request DELETE \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/projects/7/registry/protection/repository/rules/1"