依赖项列表导出 API

对此端点的每次调用都需要身份验证。

创建流水线级别的依赖项列表导出 (EXPERIMENT)

引入于极狐GitLab 16.4,功能标志merge_sbom_api。默认启用。此功能处于实验阶段。

在私有化部署的极狐GitLab 上,默认情况下此功能可用。 要隐藏该功能,管理员可以禁用名为 merge_sbom_api功能标志。 在 JihuLab.com 上,此功能可用。
caution此功能是一个实验性功能,如有更改,恕不另行通知。

为流水线中检测到的所有项目依赖项创建新的 CycloneDX JSON 导出。

如果经过身份验证的用户没有读取依赖项的权限,则此请求将返回 403 Forbidden 状态码。

SBOM 导出只能由导出作者访问。

POST /pipelines/:id/dependency_list_exports
参数 类型 是否必需 描述
id integer yes 经过身份验证的用户可以访问的流水线的 ID
export_type string yes 必须设置为 sbom
curl --request POST --header "PRIVATE-TOKEN: <private_token>" "https://gitlab.example.com/api/v4/pipelines/1/dependency_list_exports" --data "export_type=sbom"

创建的依赖项列表导出 1 小时后自动删除。

响应示例:

{
  "id": 2,
  "has_finished": false,
  "self": "http://gitlab.example.com/api/v4/dependency_list_exports/2",
  "download": "http://gitlab.example.com/api/v4/dependency_list_exports/2/download"
}

获取单个依赖项列表导出

获取单个依赖项列表导出。

GET /security/dependency_list_exports/:id
参数 类型 是否必需 描述
id integer yes 依赖项列表导出 ID
curl --header "PRIVATE-TOKEN: <private_token>" "https://gitlab.example.com/api/v4/security/dependency_list_exports/2"

正在生成依赖项列表导出时,状态码为 202 Accepted;准备就绪时,状态码为 200 OK

响应示例:

{
  "id": 4,
  "has_finished": true,
  "self": "http://gitlab.example.com/api/v4/dependency_list_exports/4",
  "download": "http://gitlab.example.com/api/v4/dependency_list_exports/4/download"
}

下载依赖项列表导出

下载单个依赖项列表导出。

GET /security/dependency_list_exports/:id/download
参数 类型 是否必需 描述
id integer yes 依赖项列表导出 ID
curl --header "PRIVATE-TOKEN: <private_token>" "https://gitlab.example.com/api/v4/security/dependency_list_exports/2/download"

当依赖项列表导出未完成或未找到,响应为 404 Not Found

响应示例:

{
  "bomFormat": "CycloneDX",
  "specVersion": "1.4",
  "serialNumber": "urn:uuid:aec33827-20ae-40d0-ae83-18ee846364d2",
  "version": 1,
  "metadata": {
    "tools": [
      {
        "vendor": "Gitlab",
        "name": "Gemnasium",
        "version": "2.34.0"
      }
    ],
    "authors": [
      {
        "name": "Gitlab",
        "email": "support@gitlab.com"
      }
    ],
    "properties": [
      {
        "name": "gitlab:dependency_scanning:input_file",
        "value": "package-lock.json"
      }
    ]
  },
  "components": [
    {
      "name": "com.fasterxml.jackson.core/jackson-core",
      "purl": "pkg:maven/com.fasterxml.jackson.core/jackson-core@2.9.2",
      "version": "2.9.2",
      "type": "library",
      "licenses": [
        {
          "license": {
            "id": "MIT",
            "url": "https://spdx.org/licenses/MIT.html"
          }
        },
        {
          "license": {
            "id": "BSD-3-Clause",
            "url": "https://spdx.org/licenses/BSD-3-Clause.html"
          }
        }
      ]
    }
  ]
}