Skip to main content

在企业中使用审核日志 API

了解如何使用 REST API 以编程方式检索企业事件。

谁可以使用此功能?

Enterprise owners

Note

在特定用例中,Webhook 可能是审核日志或 API 轮询的良好替代方法。 Webhook 是一种 GitHub 在存储库、组织或企业发生特定事件时通知服务器的方法。 与 API 或搜索审核日志相比,如果只想了解企业、组织或存储库何时发生某些事件并进行相应记录,Webhook 效率更高。 请参阅“Webhook 文档”。

使用与审核日志相关的终结点保持合规性并确保知识产权安全。 请参阅“适用于企业审核日志的 REST API 终结点”和“适用于组织的 REST API 终结点”。

有关可以通过审核日志终结点访问的特定事件的详细信息,请参阅下面的文章。

审核日志详细信息

审核日志列出了由影响企业的活动触发的事件。 审核日志将 Git 事件保留七天。

默认情况下,仅显示过去三个月的事件。 若要查看较旧的事件,必须使用 created 参数指定日期范围。 请参阅“了解搜索语法”。

API 响应中的时间戳和日期字段以 UTC epoch 毫秒为度量单位。

你可以使用 read:audit_log 范围通过 API 访问审核日志。

速率限制

对于给定的用户和 IP 地址组合,每个审核日志 API 终结点的速率限制为每小时 1,750 次查询。 为了避免速率限制,查询审核日志 API 的集成应以每小时 1,750 次查询的最大频率进行查询。 此外,如果集成收到速率限制错误(通常是 403 或 429 响应),则应等待,然后再向 API 发出另一个请求。 请参阅“REST API 的速率限制”和“使用 REST API 的最佳做法”。

示例 1:企业中在特定日期的所有事件(使用分页显示)

可以使用基于游标的分页。 有关分页的详细信息,请参阅“在 REST API 中使用分页”。

以下查询搜索 avocado-corp 企业中于 2022 年 1 月 1 日创建的审核日志事件,并使用分页返回第一页,每页最多包含 100 个项。 有关分页的详细信息,请参阅“在 REST API 中使用分页”。 --include 标志会导致返回的响应中包含标头。

curl --include -H "Authorization: Bearer TOKEN" \
--request GET \
"https://api.github.com/enterprises/avocado-corp/audit-log?phrase=created:2022-01-01&per_page=100"

如果结果超过 100 个,则 link 标头将包含用于提取下一页、第一页和上一页结果的 URL。

link: <https://api.github.com/enterprises/13827/audit-log?%3A2022-11-01=&per_page=100&after=MS42NjQzODMzNTk5MjdlKzEyfDloQzBxdURzaFdVbVlLWjkxRU9mNXc%3D&before=>; rel="next",
<https://api.github.com/enterprises/13827/audit-log?%3A2022-11-01=&per_page=100&after=&before=>; rel="first",
<https://api.github.com/enterprises/13827/audit-log?%3A2022-11-01=&per_page=100&after=&before=MS42Njc4NDA2MjM4MzNlKzEyfExqeG5sUElvNEZMbG1XZHA5akdKTVE%3D>; rel="prev"

将相应的分页链接复制到下一个请求中。 例如:

curl -I -H "Authorization: Bearer TOKEN" \
--request GET \
"https://api.github.com/enterprises/13827/audit-log?%3A2022-11-01=&per_page=100&after=MS42Njc4NDA2MjM5NDFlKzEyfHRYa3AwSkxUd2xyRjA5bWxfOS1RbFE%3D&before="

示例 2:组织中在特定日期参与者参与的拉取请求事件

你可以指定多个搜索短语(例如 createdactor),具体方法是在 URL 格式中用 + 符号或 ASCII 字符代码 %20 分隔它们。

以下查询搜索 avocado-corp 企业中拉取请求的审核日志事件,其中事件发生在 2022 年 1 月 1 日或之后,操作由 octocat 用户执行:

curl -H "Authorization: Bearer TOKEN" \
--request GET \
"https://api.github.com/enterprises/avocado-corp/audit-log?phrase=action:pull_request+created:>=2022-01-01+actor:octocat"

示例 3:企业中特定日期和执行者的 Git 活动事件

可以通过将 include=git 添加为 URL 中的参数来搜索企业中的 Git 事件,例如克隆、提取和推送。 此外也可以使用 include=all 来搜索 Web 事件和 Git 事件。

以下查询将搜索 avocado-corp 企业中发生在 2024 年 1 月 1 日之后,并且操作由 octocat 用户执行的 Git 活动审核日志事件。

curl -H "Authorization: Bearer TOKEN" \
--request GET \
"https://api.github.com/enterprises/avocado-corp/audit-log?phrase=created:>=2024-01-01+actor:octocat&include=git"