跳至主要内容
REST API 现在已版本化。 有关详细信息,请参阅“关于 API 版本化”。

用于提交依赖项的 REST API 端点

使用 REST API 提交依赖项。

关于依赖项提交

注意:目前,使用 REST API 提交依赖项的功能处于公开测试阶段,可能会发生变化。

你可以使用 REST API 为项目提交依赖项。这使你能够将依赖项(例如在编译或构建软件时解决的依赖项)添加到 GitHub 的依赖项图功能中,从而更全面地了解项目的全部依赖项。

依赖关系图显示使用 API 提交的任何依赖关系,以及从存储库中的清单或锁定文件中识别出的任何依赖关系(例如,JavaScript 项目中的 `package-lock.json` 文件)。有关查看依赖关系图的详细信息,请参阅“探索存储库的依赖关系”。

提交的依赖关系将收到 Dependabot 警报和 Dependabot 安全更新,以了解任何已知的漏洞。你只会收到来自 GitHub Advisory Database 支持的生态系统之一的依赖关系的 Dependabot 警报。有关这些生态系统的详细信息,请参阅“关于 GitHub Advisory 数据库”。对于通过依赖关系提交 API 提交的传递依赖关系,如果存在更新,Dependabot 将自动打开拉取请求以更新父依赖关系。

提交的依赖关系将显示在依赖关系审查中,但在组织的依赖关系见解中可用。

注意:依赖关系审查 API 和依赖关系提交 API 协同工作。这意味着依赖关系审查 API 将包括通过依赖关系提交 API 提交的依赖关系。此功能目前处于公开测试阶段,可能会发生更改。

你可以以快照的形式提交依赖关系。快照是一组与提交 SHA 和其他元数据关联的依赖关系,它反映了提交时存储库的当前状态。你可以选择使用预制操作或创建自己的操作,以便在每次构建项目时以所需格式提交依赖关系。有关详细信息,请参阅“使用依赖关系提交 API”。

你可以提交多组依赖关系以包含在依赖关系图中。REST API 使用快照的 `job.correlator` 属性和 `detector.name` 类别,以确保显示每个工作流的最新提交。`correlator` 属性本身是你将用来保持独立提交不同的主要字段。一个示例 `correlator` 可以是操作运行中可用的两个变量的简单组合:`<GITHUB_WORKFLOW> <GITHUB_JOB>`。

为存储库创建依赖关系快照

创建存储库依赖关系的新快照。

经过身份验证的用户必须有权访问存储库。

OAuth 应用令牌和个人访问令牌(经典)需要 `repo` 范围才能使用此端点。

用于“为存储库创建依赖关系快照”的细粒度访问令牌

此端点适用于以下细粒度令牌类型

细粒度令牌必须具有以下权限设置

  • “内容”存储库权限(写入)

“为存储库创建依赖项快照”的参数

标头
名称、类型、说明
accept string

建议设置为 application/vnd.github+json

路径参数
名称、类型、说明
owner string 必需

存储库的帐户所有者。名称不区分大小写。

repo string 必需

不带 .git 扩展名的存储库名称。名称不区分大小写。

正文参数
名称、类型、说明
version integer 必需

存储库快照提交的版本。

job object 必需
名称、类型、说明
id string 必需

作业的外部 ID。

correlator string 必需

Correlator 提供了一个键,用于对随时间提交的快照进行分组。在计算存储库的当前依赖项时,仅考虑给定的 job.correlatordetector.name 组合的“最新”提交的快照。Correlator 应尽可能唯一,以区分您运行的 CI 工作流的给定“波次”的所有检测运行。如果您使用 GitHub Actions,则此项的良好默认值可以是环境变量 GITHUB_WORKFLOW 和 GITHUB_JOB 连接在一起。如果您使用构建矩阵,则还需要添加其他键来区分矩阵变量中的每个提交。

html_url string

作业的 URL。

sha string 必需

与此依赖项快照关联的提交 SHA。最大长度:40 个字符。

ref string 必需

触发此快照的存储库分支。

detector object 必需

所用探测器的说明。

名称、类型、说明
name string 必需

所用探测器的名称。

version string 必需

所用探测器的版本。

url string 必需

所用探测器的 URL。

metadata object

用户定义的元数据,用于存储仅限于 8 个键(具有标量值)的特定于域的信息。

manifests object

一组包清单,它们是一组在文件中声明或表示一组逻辑依赖项的关联依赖项。

名称、类型、说明
key object

用于表示 manifests 中项的用户定义键。

名称、类型、说明
name string 必需

清单的名称。

file object
名称、类型、说明
source_location string

相对于 Git 存储库根目录的清单文件路径。

metadata object

用户定义的元数据,用于存储仅限于 8 个键(具有标量值)的特定于域的信息。

resolved object

一组已解析的包依赖项。

名称、类型、说明
key object

用于表示 resolved 中项的用户定义键。

名称、类型、说明
package_url string

依赖项的包 URL (PURL)。有关更多详细信息,请参阅 https://github.com/package-url/purl-spec

metadata object

用户定义的元数据,用于存储仅限于 8 个键(具有标量值)的特定于域的信息。

关系 字符串

此清单直接请求依赖项还是其他依赖项的依赖项的符号。

可以是以下之一: 直接, 间接

范围 字符串

依赖项是主构建工件(运行时)所需还是仅用于开发的符号。此规范的未来版本可能允许更细粒度的范围。

可以是以下之一: 运行时, 开发

依赖项 字符串数组

直接子依赖项的包 URL (PURL) 数组。

已扫描 字符串 必需

扫描快照时的时间。

“为存储库创建依赖项快照”的 HTTP 响应状态代码

状态代码描述
201

已创建

“为存储库创建依赖项快照”的代码示例

请求示例

post/repos/{owner}/{repo}/dependency-graph/snapshots
curl -L \ -X POST \ -H "Accept: application/vnd.github+json" \ -H "Authorization: Bearer <YOUR-TOKEN>" \ -H "X-GitHub-Api-Version: 2022-11-28" \ https://api.github.com/repos/OWNER/REPO/dependency-graph/snapshots \ -d '{"version":0,"sha":"ce587453ced02b1526dfb4cb910479d431683101","ref":"refs/heads/main","job":{"correlator":"yourworkflowname_youractionname","id":"yourrunid"},"detector":{"name":"octo-detector","version":"0.0.1","url":"https://github.com/octo-org/octo-repo"},"scanned":"2022-06-14T20:25:00Z","manifests":{"package-lock.json":{"name":"package-lock.json","file":{"source_location":"src/package-lock.json"},"resolved":{"@actions/core":{"package_url":"pkg:/npm/%40actions/[email protected]","dependencies":["@actions/http-client"]},"@actions/http-client":{"package_url":"pkg:/npm/%40actions/[email protected]","dependencies":["tunnel"]},"tunnel":{"package_url":"pkg:/npm/[email protected]"}}}}}'

响应

状态:201
{ "id": 12345, "created_at": "2018-05-04T01:14:52Z", "message": "存储库的依赖项结果已成功更新。", "result": "SUCCESS" }