{{< details >}}

  • Tier: 基础版,专业版,旗舰版
  • Offering: 私有化部署

{{< /details >}}

{{< history >}}

  • 引入于极狐GitLab 17.1,使用名为 packages_protected_packages功能标志。默认禁用。
  • 在极狐GitLab 17.5 中为 JihuLab.com 启用。
  • 在极狐GitLab 17.6 中 GA。功能标志 packages_protected_packages 被移除。
  • 在极狐GitLab 17.11 中增加了属性 minimum_access_level_for_delete,使用名为 packages_protected_packages_delete功能标志。默认禁用。

{{< /history >}}

此 API 管理软件包的保护规则。

列出软件包保护规则

从项目中获取软件包保护规则列表。

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

支持的属性:

属性 类型 必需 描述
id integer/string 项目的 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 integer/string 项目的 ID 或 URL 编码路径
package_name_pattern string 受保护规则保护的软件包名称。例如 @my-scope/my-package-*。允许使用通配符 *
package_type string 受保护规则保护的软件包类型。例如 npm
minimum_access_level_for_delete string 删除软件包所需的极狐GitLab 最低访问级别。有效值包括 nullowneradmin。如果值为 null,默认最低访问级别为 maintainer。当 minimum_access_level_for_push 未设置时必须提供。位于一个名为 packages_protected_packages_delete 的特性标志后面。默认禁用。
minimum_access_level_for_push string 推送软件包所需的极狐GitLab 最低访问级别。有效值包括 nullmaintainerowneradmin。如果值为 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 integer/string 项目的 ID 或 URL 编码路径
package_protection_rule_id integer 要更新的软件包保护规则的 ID。
package_name_pattern string 受保护规则保护的软件包名称。例如 @my-scope/my-package-*。允许使用通配符 *
package_type string 受保护规则保护的软件包类型。例如 npm
minimum_access_level_for_delete string 删除软件包所需的极狐GitLab 最低访问级别。有效值包括 nullowneradmin。如果值为 null,默认最低访问级别为 maintainer。当 minimum_access_level_for_push 未设置时必须提供。位于一个名为 packages_protected_packages_delete 的特性标志后面。默认禁用。
minimum_access_level_for_push string 推送软件包所需的极狐GitLab 最低访问级别。有效值包括 nullmaintainerowneradmin。如果值为 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 integer/string 项目的 ID 或 URL 编码路径
package_protection_rule_id integer 要删除的软件包保护规则的 ID。

如果成功,将返回 204 No Content

可能返回的状态码:

  • 204 No Content: 软件包保护规则已成功删除。
  • 400 Bad Request: idpackage_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"