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

保護されたパッケージAPI

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

このAPIを使用して、パッケージの保護ルールを管理します。

パッケージ保護ルールの一覧表示

プロジェクトからパッケージ保護ルールの一覧を取得します。

GET /api/v4/projects/:id/packages/protection/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/packages/protection/rules"

レスポンス例:

[
 {
  "id": 1,
  "project_id": 7,
  "package_name_pattern": "@flightjs/flight-package-0",
  "package_type": "npm",
  "minimum_access_level_for_delete": "owner",
  "minimum_access_level_for_push": "maintainer"
 },
 {
  "id": 2,
  "project_id": 7,
  "package_name_pattern": "@flightjs/flight-package-1",
  "package_type": "npm",
  "minimum_access_level_for_delete": "owner",
  "minimum_access_level_for_push": "maintainer"
 }
]

パッケージ保護ルールの作成

プロジェクトのパッケージ保護ルールを作成します。

POST /api/v4/projects/:id/packages/protection/rules

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

属性必須説明
id整数または文字列はいプロジェクトのIDまたはURLエンコードされたパス
package_name_pattern文字列はい保護ルールによって保護されるパッケージ名。例: @my-scope/my-package-*。ワイルドカード文字*を使用できます。
package_type文字列はい保護ルールによって保護されるパッケージのタイプ。例: npm
minimum_access_level_for_delete文字列はいパッケージの削除に必要な最小GitLabのアクセスレベル。有効な値は、nullowner、またはadminです。値がnullの場合のデフォルトの最小アクセスレベルはmaintainerです。minimum_access_level_for_pushが設定されていない場合は、指定する必要があります。packages_protected_packages_deleteという名前の機能フラグの背後にあります。デフォルトでは無効になっています。
minimum_access_level_for_push文字列はいパッケージのプッシュに必要な最小GitLabのアクセスレベル。有効な値は、nullmaintainerowner、またはadminです。値がnullの場合のデフォルトの最小アクセスレベルはdeveloperです。minimum_access_level_for_deleteが設定されていない場合は、指定する必要があります。

成功した場合、201と作成されたパッケージ保護ルールが返されます。

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

  • 201 Created: パッケージ保護ルールが正常に作成されました。
  • 400 Bad Request: パッケージ保護ルールが無効です。
  • 401 Unauthorized: アクセストークンが無効な場合。
  • 403 Forbidden: ユーザーには、パッケージ保護ルールを作成する権限がありません。
  • 404 Not Found: プロジェクトが見つかりませんでした。
  • 422 Unprocessable Entity: package_name_patternが既に使用されているなどの理由で、パッケージ保護ルールを作成できませんでした。

リクエスト例:

curl --request POST \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --header "Content-Type: application/json" \
  --url "https://gitlab.example.com/api/v4/projects/7/packages/protection/rules" \
  --data '{
       "package_name_pattern": "package-name-pattern-*",
       "package_type": "npm",
       "minimum_access_level_for_delete": "owner",
       "minimum_access_level_for_push": "maintainer"
    }'

パッケージ保護ルールの更新

プロジェクトのパッケージ保護ルールを更新します。

PATCH /api/v4/projects/:id/packages/protection/rules/:package_protection_rule_id

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

属性必須説明
id整数または文字列はいプロジェクトのIDまたはURLエンコードされたパス
package_protection_rule_id整数はい更新するパッケージ保護ルールのID。
package_name_pattern文字列いいえ保護ルールによって保護されるパッケージ名。例: @my-scope/my-package-*。ワイルドカード文字*を使用できます。
package_type文字列いいえ保護ルールによって保護されるパッケージのタイプ。例: npm
minimum_access_level_for_delete文字列いいえパッケージの削除に必要な最小GitLabのアクセスレベル。有効な値は、nullowner、またはadminです。値がnullの場合のデフォルトの最小アクセスレベルはmaintainerです。minimum_access_level_for_pushが設定されていない場合は、指定する必要があります。packages_protected_packages_deleteという名前の機能フラグの背後にあります。デフォルトでは無効になっています。
minimum_access_level_for_push文字列いいえパッケージのプッシュに必要な最小GitLabのアクセスレベル。有効な値は、nullmaintainerowner、またはadminです。値がnullの場合のデフォルトの最小アクセスレベルはdeveloperです。minimum_access_level_for_deleteが設定されていない場合は、指定する必要があります。

成功した場合、200と更新されたパッケージ保護ルールが返されます。

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

  • 200 OK: パッケージ保護ルールのパッチが正常に適用されました。
  • 400 Bad Request: パッチが無効です。
  • 401 Unauthorized: アクセストークンが無効な場合。
  • 403 Forbidden: ユーザーには、パッケージ保護ルールにパッチを適用する権限がありません。
  • 404 Not Found: プロジェクトが見つかりませんでした。
  • 422 Unprocessable Entity: package_name_patternが既に使用されているなどの理由で、パッケージ保護ルールにパッチを適用できませんでした。

リクエスト例:

curl --request PATCH \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --header "Content-Type: application/json" \
  --url "https://gitlab.example.com/api/v4/projects/7/packages/protection/rules/32" \
  --data '{
       "package_name_pattern": "new-package-name-pattern-*"
    }'

パッケージ保護ルールの削除

プロジェクトからパッケージ保護ルールを削除します。

DELETE /api/v4/projects/:id/packages/protection/rules/:package_protection_rule_id

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

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

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

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

  • 204 No Content: パッケージ保護ルールが正常に削除されました。
  • 400 Bad Request: idまたはpackage_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/packages/protection/rules/32"