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

时间:2013-12-22 19:33:44

标签: api github

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

  • 仅限拉
  • Push&拉
  • 推,拉,&行政

我可以在这样的回购商上看到合作者列表:

GET /repos/:owner/:repo/collaborators

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

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

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

2 个答案:

答案 0 :(得分:11)

如果您想检查是否具有对GitHub仓库的推送访问权限,可以使用repo endpoint

GET /repos/:owner/:repo

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

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

答案 1 :(得分:1)

2017年6月更新:您现在有 nested teams 但是,orgs/teams API提及:

  

REST API v3尚未完全支持嵌套团队   例如,List team membersList team repositories的端点不会返回从嵌套团队结构继承的结果。


2016年原始答案

List User Teams

中提到了应包含您的权限的一个查询
GET /user/teams
  

列出经过身份验证的用户所属的所有组织中的所有团队。通过scope进行身份验证时,此方法需要用户或仓库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"
    }
  }
]

您需要按照match the team with the right repo过滤该结果,然后您应该以这种方式取回与该回购相关联的权限级别。