保護されたパッケージ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アクセスレベル。有効な値はnull、ownerまたはadminです。値がnullの場合のデフォルトの最小アクセスレベルはmaintainerです。minimum_access_level_for_pushが設定されていない場合は、指定する必要があります。packages_protected_packages_deleteという名前の機能フラグの背後。デフォルトでは無効になっています。 |
minimum_access_level_for_push | 文字列 | はい | パッケージをプッシュするために必要な最小GitLabアクセスレベル。有効な値はnull、maintainer、ownerまたは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アクセスレベル。有効な値はnull、ownerまたはadminです。値がnullの場合のデフォルトの最小アクセスレベルはmaintainerです。minimum_access_level_for_pushが設定されていない場合は、指定する必要があります。packages_protected_packages_deleteという名前の機能フラグの背後。デフォルトでは無効になっています。 |
minimum_access_level_for_push | 文字列 | いいえ | パッケージをプッシュするために必要な最小GitLabアクセスレベル。有効な値はnull、maintainer、ownerまたは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"