跳到主要内容
REST API 现在已版本化。 更多信息,请参阅“关于 API 版本控制”。

用于代码仓库统计数据的 REST API 端点

使用 REST API 获取 GitHub 用于可视化各种代码仓库活动类型的数据。

关于代码仓库统计数据

您可以使用 REST API 获取 GitHub 用于可视化各种代码仓库活动类型的数据。

缓存最佳实践

计算代码仓库统计数据是一项代价较高的操作,因此我们尽量在可能的情况下返回缓存数据。如果在您查询代码仓库统计数据时数据尚未缓存,您将收到一个 202 响应;还会触发一个后台作业来开始编译这些统计数据。您应该允许作业完成一小段时间,然后再次提交请求。如果作业已完成,该请求将收到一个 200 响应,响应正文中包含统计数据。

代码仓库统计数据通过代码仓库默认分支的 SHA 进行缓存;向默认分支推送会重置统计数据缓存。

统计数据排除某些类型的提交

API 公开的统计数据与 不同的代码仓库图表 显示的统计数据相匹配。

总结一下

  • 所有统计数据都排除了合并提交。
  • 贡献者统计数据还排除了空提交。

获取每周提交活动

返回推送到代码仓库的添加和删除数量的每周汇总。

注意

此端点只能用于提交少于 10,000 次的代码仓库。如果代码仓库包含 10,000 次或更多提交,则将返回 422 状态代码。

“获取每周提交活动”的细粒度访问令牌

此端点可与以下细粒度令牌类型一起使用:

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

  • “元数据”代码仓库权限(读取)

如果仅请求公共资源,则无需身份验证或上述权限即可使用此端点。

“获取每周提交活动”的参数

报头
名称、类型、描述
accept 字符串

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

路径参数
名称、类型、描述
owner 字符串 必需

代码仓库的帐户所有者。名称不区分大小写。

repo 字符串 必需

代码仓库的名称,不包含 .git 扩展名。名称不区分大小写。

“获取每周提交活动”的 HTTP 响应状态代码

状态代码描述
200

返回推送到代码仓库的添加和删除数量的每周汇总。

202

已接受

204

返回一个没有内容的报头。

422

代码仓库包含超过 10,000 次提交

“获取每周提交活动”的代码示例

请求示例

get/repos/{owner}/{repo}/stats/code_frequency
curl -L \ -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/stats/code_frequency

返回推送到代码仓库的添加和删除数量的每周汇总。

状态:200
[ [ 1302998400, 1124, -435 ] ]

获取去年的提交活动

返回按周分组的过去一年的提交活动。days 数组是一组每天的提交,从星期日开始。

“获取去年的提交活动”的细粒度访问令牌

此端点可与以下细粒度令牌类型一起使用:

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

  • “元数据”代码仓库权限(读取)

如果仅请求公共资源,则无需身份验证或上述权限即可使用此端点。

“获取去年的提交活动”的参数

报头
名称、类型、描述
accept 字符串

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

路径参数
名称、类型、描述
owner 字符串 必需

代码仓库的帐户所有者。名称不区分大小写。

repo 字符串 必需

代码仓库的名称,不包含 .git 扩展名。名称不区分大小写。

“获取去年的提交活动”的 HTTP 响应状态代码

状态代码描述
200

确定

202

已接受

204

返回一个没有内容的报头。

“获取去年的提交活动”的代码示例

请求示例

get/repos/{owner}/{repo}/stats/commit_activity
curl -L \ -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/stats/commit_activity

响应

状态:200
[ { "days": [ 0, 3, 26, 20, 39, 1, 0 ], "total": 89, "week": 1336280400 } ]

获取所有贡献者的提交活动

返回贡献者创作的提交总数 (total)。此外,响应还包括一个每周哈希 (weeks 数组),其中包含以下信息

  • w - 一周的开始时间,以 Unix 时间戳 表示。
  • a - 添加的数量
  • d - 删除的数量
  • c - 提交的数量

注意

对于提交次数达 10,000 次或以上的代码仓库,此端点将为所有添加和删除计数返回 0 值。

“获取所有贡献者的提交活动”的细粒度访问令牌

此端点可与以下细粒度令牌类型一起使用:

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

  • “元数据”代码仓库权限(读取)

如果仅请求公共资源,则无需身份验证或上述权限即可使用此端点。

“获取所有贡献者的提交活动”的参数

报头
名称、类型、描述
accept 字符串

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

路径参数
名称、类型、描述
owner 字符串 必需

代码仓库的帐户所有者。名称不区分大小写。

repo 字符串 必需

代码仓库的名称,不包含 .git 扩展名。名称不区分大小写。

“获取所有贡献者的提交活动”的 HTTP 响应状态代码

状态代码描述
200

确定

202

已接受

204

返回一个没有内容的报头。

“获取所有贡献者的提交活动”的代码示例

请求示例

get/repos/{owner}/{repo}/stats/contributors
curl -L \ -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/stats/contributors

响应

状态:200
[ { "author": { "login": "octocat", "id": 1, "node_id": "MDQ6VXNlcjE=", "avatar_url": "https://github.com/images/error/octocat_happy.gif", "gravatar_id": "", "url": "https://api.github.com/users/octocat", "html_url": "https://github.com/octocat", "followers_url": "https://api.github.com/users/octocat/followers", "following_url": "https://api.github.com/users/octocat/following{/other_user}", "gists_url": "https://api.github.com/users/octocat/gists{/gist_id}", "starred_url": "https://api.github.com/users/octocat/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/octocat/subscriptions", "organizations_url": "https://api.github.com/users/octocat/orgs", "repos_url": "https://api.github.com/users/octocat/repos", "events_url": "https://api.github.com/users/octocat/events{/privacy}", "received_events_url": "https://api.github.com/users/octocat/received_events", "type": "User", "site_admin": false }, "total": 135, "weeks": [ { "w": 1367712000, "a": 6898, "d": 77, "c": 10 } ] } ]

获取每周提交计数

返回owner 的总提交计数和all 中的总提交计数。all 是所有人的总和,包括过去 52 周内的owner。如果您想获取非所有者的提交计数,您可以从all 中减去owner

数组顺序是最早的一周(索引 0)到最近的一周。

最近一周是从七天前的 UTC 午夜到今天的 UTC 午夜。

“获取每周提交计数”的细粒度访问令牌

此端点可与以下细粒度令牌类型一起使用:

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

  • “元数据”代码仓库权限(读取)

如果仅请求公共资源,则无需身份验证或上述权限即可使用此端点。

“获取每周提交计数”的参数

报头
名称、类型、描述
accept 字符串

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

路径参数
名称、类型、描述
owner 字符串 必需

代码仓库的帐户所有者。名称不区分大小写。

repo 字符串 必需

代码仓库的名称,不包含 .git 扩展名。名称不区分大小写。

“获取每周提交计数”的 HTTP 响应状态代码

状态代码描述
200

数组顺序是最早的一周(索引 0)到最近的一周。

404

资源未找到

“获取每周提交计数”的代码示例

请求示例

get/repos/{owner}/{repo}/stats/participation
curl -L \ -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/stats/participation

数组顺序是最早的一周(索引 0)到最近的一周。

状态:200
{ "all": [ 11, 21, 15, 2, 8, 1, 8, 23, 17, 21, 11, 10, 33, 91, 38, 34, 22, 23, 32, 3, 43, 87, 71, 18, 13, 5, 13, 16, 66, 27, 12, 45, 110, 117, 13, 8, 18, 9, 19, 26, 39, 12, 20, 31, 46, 91, 45, 10, 24, 9, 29, 7 ], "owner": [ 3, 2, 3, 0, 2, 0, 5, 14, 7, 9, 1, 5, 0, 48, 19, 2, 0, 1, 10, 2, 23, 40, 35, 8, 8, 2, 10, 6, 30, 0, 2, 9, 53, 104, 3, 3, 10, 4, 7, 11, 21, 4, 4, 22, 26, 63, 11, 2, 14, 1, 10, 3 ] }

获取每天的小时提交计数

每个数组包含日期数字、小时数字和提交数量

  • 0-6:星期日 - 星期六
  • 0-23:一天中的小时
  • 提交数量

例如,[2, 14, 25] 表示在周二下午 2:00 的时间段内共有 25 次提交。所有时间都基于各个提交的时间区域。

获取“每天每小时的提交次数”的细粒度访问令牌

此端点可与以下细粒度令牌类型一起使用:

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

  • “元数据”代码仓库权限(读取)

如果仅请求公共资源,则无需身份验证或上述权限即可使用此端点。

“获取每天每小时的提交次数”的参数

报头
名称、类型、描述
accept 字符串

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

路径参数
名称、类型、描述
owner 字符串 必需

代码仓库的帐户所有者。名称不区分大小写。

repo 字符串 必需

代码仓库的名称,不包含 .git 扩展名。名称不区分大小写。

“获取每天每小时的提交次数”的 HTTP 响应状态码

状态代码描述
200

例如,[2, 14, 25] 表示在周二下午 2:00 的时间段内共有 25 次提交。所有时间都基于各个提交的时间区域。

204

返回一个没有内容的报头。

“获取每天每小时的提交次数”的代码示例

请求示例

获取/repos/{owner}/{repo}/stats/punch_card
curl -L \ -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/stats/punch_card

例如,[2, 14, 25] 表示在周二下午 2:00 的时间段内共有 25 次提交。所有时间都基于各个提交的时间区域。

状态:200
[ [ 0, 0, 5 ], [ 0, 1, 43 ], [ 0, 2, 21 ] ]