您可以传递affiliation
参数,以过滤掉直接在某个项目上工作的任何协作者。
curl -H "Authorization: <bearer KEY>" \
-H "Accept: application/vnd.github.v3+json" \
-XGET https://api.github.com/repos/:org/:repo/collaborators\?affiliation\=direct
这应该只返回从事项目工作的人,而不是合作者和所有者。
GitHub 声明:
隶属关系 | 字符串 | 查询
过滤由其隶属关系返回的合作者。可以是以下之一:
- 外部:组织拥有的存储库的所有外部协作者。
- 直接:对组织拥有的存储库具有权限的所有协作者,无论组织成员身份如何。
- all:经过身份验证的用户可以看到的所有协作者。
如果碰巧所有者也是此 repo 的直接合作者,那么您必须执行另一个请求,检查哪个人是所有者,然后从合作者请求中过滤掉他们。
curl -H "Authorization: <bearer KEY>" \
-H "Accept: application/vnd.github.v3+json" \
-XGET https://api.github.com/orgs/:org/members\?role\=admin
通过此请求,您可以检查哪些是组织的所有者。
如果您喜欢使用新的 graphql 功能,那么您可以查询
{
organization(login: "org_name") {
id
name
repository(name: "repo_name") {
collaborators(affiliation: DIRECT, first: N) {
edges {
permission
node {
name
}
}
}
}
}
}