通过API确定协作者对组织仓库的权限?

11

在属于组织(而不是个人)的代码库中,协作者是“团队”的成员,并且团队可以拥有三种不同的权限:

  • 只读取
  • 读取和写入
  • 读取、写入和管理

我可以像这样查看代码库上的协作者列表:

GET /repos/:owner/:repo/collaborators

...但它没有告诉我协作者拥有哪种类型的权限。

在这种情况下,我是其中一个协作者;我不拥有该代码库。

是否有一种方法可以通过编程方式确定我拥有的协作者权限类型?


实际上,它确实会返回权限至少在某些条件下 - Jesse Glick
2个回答

13
如果您想检查自己是否拥有GitHub存储库的推送权限,可以使用repo端点:

GET /repos/:owner/:repo

如果您的请求包含授权信息(包括您的账户凭据或OAuth访问令牌),则permissions字段将为您提供所需的信息:

{ 'admin': False, 'push': False, 'pull': True }


更加关注特定仓库的个人,而不是我的答案(阅读所有团队的管理员权限)。有趣。+1 - VonC

1

2017年6月更新:您现在可以使用嵌套团队
然而,orgs/teams API提到:

REST API v3尚未完全支持嵌套团队。
例如,列出团队成员列出团队存储库的端点不返回继承自嵌套团队结构的结果。

警告:自2020年1月起,团队API将从顶级路径/teams/:team_id移动到由拥有团队的组织控制的作用域路径下,路径格式为/organizations/:org_id/team/:team_id
请参见Dirkjan Bussink的 "移动团队API"。


原始回答2016年

应该包含您许可的唯一查询在“列出用户团队”中提到

GET /user/teams

列出经过身份验证的用户所属组织中的所有团队。使用OAuth进行身份验证时,此方法需要用户或repo scope。答案看起来像:
Status: 200 OK
X-RateLimit-Limit: 5000
X-RateLimit-Remaining: 4999

[
  {
    "url": "https://api.github.com/teams/1",
    "name": "Owners",
    "id": 1,
    "permission": "admin",                     <============
    "members_count": 3,
    "repos_count": 10,
    "organization": {
      "login": "github",
      "id": 1,
      "url": "https://api.github.com/orgs/github",
      "avatar_url": "https://github.com/images/error/octocat_happy.gif"
    }
  }
]

你需要过滤结果以匹配正确的团队仓库,这样就可以获得与该仓库相关联的权限级别。

请注意,/user/teams 假定正在查找此信息的用户与正在检查权限的用户相同。 - Jesse Glick

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接