通过api确定协作者的权限(到组织回购)?

Dan*_*aum 10 api github

在属于组织(而不是个人)的回购中,协作者是"团队"的成员,团队可以拥有三种不同的权限:

  • 只拉
  • 推拉
  • 推,拉和管理

我可以在这样的repos上看到一个协作者列表:

GET /repos/:owner/:repo/collaborators
Run Code Online (Sandbox Code Playgroud)

...但它并没有告诉我协作者拥有什么类型的权限.

在这个特殊情况下,我是合作者之一; 我不拥有存储库.

有没有办法以编程方式确定我的协作者权限类型?

小智 11

如果要检查是否具有对GitHub存储库的推送访问权限,可以使用repo端点:

GET /repos/:owner/:repo

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

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


Von*_*onC 1

2017 年 6 月更新:您现在拥有嵌套团队
然而,orgs/teamsAPI提到:

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

警告:自 2020 年 1 月起,团队 API 将从顶级路径转移/teams/:team_id到拥有团队的组织下的范围路径,路径类似于/organizations/:org_id/team/:team_id. 请参阅Dirkjan Bussink
的 “移动团队 API


原答案2016年

“列出用户团队”中提到了一个应包含您的权限的查询

GET /user/teams
Run Code Online (Sandbox Code Playgroud)

列出经过身份验证的用户所属的所有组织中的所有团队。通过OAuth进行身份验证时,此方法需要用户或存储库范围

答案看起来像:

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"
    }
  }
]
Run Code Online (Sandbox Code Playgroud)

您需要过滤该结果,以便将团队与正确的存储库相匹配,并且您应该以这种方式取回与该存储库关联的权限级别。