在属于组织(而不是个人)的回购中,协作者是“团队”的成员,团队可以拥有三种不同的权限:
我可以在这样的回购商上看到合作者列表:
GET /repos/:owner/:repo/collaborators
...但它没有告诉我协作者拥有什么类型的权限。
在这种特殊情况下,我是合作者之一;我不拥有存储库。
有没有办法以编程方式确定我拥有的协作者权限类型?
答案 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 members和List team repositories的端点不会返回从嵌套团队结构继承的结果。
2016年原始答案
中提到了应包含您的权限的一个查询GET /user/teams
答案如下:
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过滤该结果,然后您应该以这种方式取回与该回购相关联的权限级别。