跳至主要内容
REST API 现在已版本化。 有关更多信息,请参阅 "关于 API 版本控制."

用于仓库统计的 REST API 端点

使用 REST API 获取 GitHub 用于可视化不同类型的仓库活动的数据。

关于仓库统计

您可以使用 REST API 获取 GitHub 用于可视化不同类型的仓库活动的数据。

缓存最佳实践

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

仓库统计信息由仓库默认分支的 SHA 缓存;推送到默认分支会重置统计信息缓存。

统计信息排除某些类型的提交

API 公开的统计信息与 不同仓库图表 中显示的统计信息相匹配。

总结

  • 所有统计数据不包括合并提交。
  • 贡献者统计数据也不包括空提交。

获取每周提交活动

返回每周对推送到存储库的添加和删除数量的汇总。

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

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

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

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

  • “元数据”存储库权限(读取)

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

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

标头
名称、类型、描述
accept string

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

路径参数
名称、类型、描述
owner string 必需

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

repo string 必需

存储库的名称,不包括 .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 数组是一组每天的提交,从Sunday 开始。

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

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

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

  • “元数据”存储库权限(读取)

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

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

标头
名称、类型、描述
accept string

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

路径参数
名称、类型、描述
owner string 必需

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

repo string 必需

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

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

状态代码描述
200

OK

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 string

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

路径参数
名称、类型、描述
owner string 必需

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

repo string 必需

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

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

状态代码描述
200

OK

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包含所有人的提交次数,包括owner在过去 52 周内的提交次数。如果您想获取非owner的提交次数,可以从all中减去owner

数组的顺序是从最旧的一周(索引 0)到最新的一周。

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

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

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

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

  • “元数据”存储库权限(读取)

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

用于“获取每周提交次数”的参数

标头
名称、类型、描述
accept string

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

路径参数
名称、类型、描述
owner string 必需

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

repo string 必需

存储库的名称,不包括 .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 string

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

路径参数
名称、类型、描述
owner string 必需

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

repo string 必需

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

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

状态代码描述
200

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

204

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

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

请求示例

get/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 ] ]