用于仓库统计的 REST API 端点
使用 REST API 获取 GitHub 用于可视化不同类型的仓库活动的数据。
关于仓库统计
您可以使用 REST API 获取 GitHub 用于可视化不同类型的仓库活动的数据。
缓存最佳实践
计算仓库统计是一个昂贵的操作,因此我们尽可能返回缓存数据。如果在您查询仓库统计信息时数据尚未缓存,您将收到 202
响应;还会触发一个后台作业来开始编译这些统计信息。您应该允许该作业完成一小段时间,然后再次提交请求。如果该作业已完成,该请求将收到 200
响应,并在响应主体中包含统计信息。
仓库统计信息由仓库默认分支的 SHA 缓存;推送到默认分支会重置统计信息缓存。
统计信息排除某些类型的提交
API 公开的统计信息与 不同仓库图表 中显示的统计信息相匹配。
总结
- 所有统计数据不包括合并提交。
- 贡献者统计数据也不包括空提交。
获取每周提交活动
返回每周对推送到存储库的添加和删除数量的汇总。
注意:此端点只能用于提交次数少于 10,000 个的存储库。如果存储库包含 10,000 个或更多提交,则将返回 422 状态代码。
用于“获取每周提交活动”的细粒度访问令牌
此端点适用于以下细粒度令牌类型
细粒度令牌必须具有以下权限集
- “元数据”存储库权限(读取)
如果仅请求公共资源,则无需身份验证或上述权限即可使用此端点。
用于“获取每周提交活动”的参数
名称、类型、描述 |
---|
accept string 建议设置为 |
名称、类型、描述 |
---|
owner string 必需存储库的帐户所有者。名称不区分大小写。 |
repo string 必需存储库的名称,不包括 |
用于“获取每周提交活动”的 HTTP 响应状态代码
状态代码 | 描述 |
---|---|
200 | 返回每周对推送到存储库的添加和删除数量的汇总。 |
202 | 已接受 |
204 | 返回一个没有内容的标头。 |
422 | 存储库包含超过 10,000 个提交 |
用于“获取每周提交活动”的代码示例
请求示例
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
返回每周对推送到存储库的添加和删除数量的汇总。
获取过去一年的提交活动
返回过去一年的提交活动,按周分组。days
数组是一组每天的提交,从Sunday
开始。
“获取过去一年的提交活动”的细粒度访问令牌
此端点适用于以下细粒度令牌类型
细粒度令牌必须具有以下权限集
- “元数据”存储库权限(读取)
如果仅请求公共资源,则无需身份验证或上述权限即可使用此端点。
“获取过去一年的提交活动”的参数
名称、类型、描述 |
---|
accept string 建议设置为 |
名称、类型、描述 |
---|
owner string 必需存储库的帐户所有者。名称不区分大小写。 |
repo string 必需存储库的名称,不包括 |
“获取过去一年的提交活动”的 HTTP 响应状态码
状态代码 | 描述 |
---|---|
200 | OK |
202 | 已接受 |
204 | 返回一个没有内容的标头。 |
“获取过去一年的提交活动”的代码示例
请求示例
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
响应
获取所有贡献者的提交活动
返回由贡献者创作的total
提交数量。此外,响应还包括一个每周哈希(weeks
数组),其中包含以下信息
w
- 星期开始时间,以 Unix 时间戳 表示。a
- 添加次数d
- 删除次数c
- 提交次数
注意:对于提交次数超过 10,000 的仓库,此端点将为所有添加和删除计数返回0
值。
“获取所有贡献者的提交活动”的细粒度访问令牌
此端点适用于以下细粒度令牌类型
细粒度令牌必须具有以下权限集
- “元数据”存储库权限(读取)
如果仅请求公共资源,则无需身份验证或上述权限即可使用此端点。
“获取所有贡献者的提交活动”的参数
名称、类型、描述 |
---|
accept string 建议设置为 |
名称、类型、描述 |
---|
owner string 必需存储库的帐户所有者。名称不区分大小写。 |
repo string 必需存储库的名称,不包括 |
“获取所有贡献者的提交活动”的 HTTP 响应状态码
状态代码 | 描述 |
---|---|
200 | OK |
202 | 已接受 |
204 | 返回一个没有内容的标头。 |
“获取所有贡献者的提交活动”的代码示例
请求示例
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 建议设置为 |
名称、类型、描述 |
---|
owner string 必需存储库的帐户所有者。名称不区分大小写。 |
repo string 必需存储库的名称,不包括 |
用于“获取每周提交次数”的 HTTP 响应状态码
状态代码 | 描述 |
---|---|
200 | 数组的顺序是从最旧的一周(索引 0)到最新的一周。 |
404 | 资源未找到 |
用于“获取每周提交次数”的代码示例
请求示例
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 建议设置为 |
名称、类型、描述 |
---|
owner string 必需存储库的帐户所有者。名称不区分大小写。 |
repo string 必需存储库的名称,不包括 |
用于“获取每天每小时的提交次数”的 HTTP 响应状态代码
状态代码 | 描述 |
---|---|
200 | 例如, |
204 | 返回一个没有内容的标头。 |
用于“获取每天每小时的提交次数”的代码示例
请求示例
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 次提交。所有时间都基于各个提交的时间区域。