GitHub API v3:确定用户是否是组织的所有者

时间:2013-11-22 11:52:51

标签: github-api

很容易确定用户是否是团队成员if you know the id

GET /teams/:id/members/:user

但是,如何才能轻松确定每个组织拥有的特殊“业主”团队的ID?

据我所知,唯一的方法是检索所有团队的完整列​​表(我假设可能是多个页面?)并浏览它们,直到找到名为“所有者”的团队。

当然这是可行的,但对于GitHub的其他奇妙的API来说,这是非常不方便的。 ;)

为了它的价值,我尝试了以下(没有运气):

GET /orgs/:organization/teams?name=Owners # Lists all teams
GET /orgs/:organization/owners            # 404

为了清楚起见,我确保使用与拥有相关组织的用户相关联的令牌,因此不应存在任何授权问题。

3 个答案:

答案 0 :(得分:5)

目前还没有简单的方法来检查用户是否在所有者团队中。不过,感谢酷炫的功能建议! ;)

hacky解决方法将涉及执行仅允许所有者执行的非破坏性操作。如果操作成功 - 经过身份验证的用户是所有者。

例如,您可以尝试通过发送空的JSON哈希来编辑组织的设置:

$ curl -v -X PATCH -d '{}' https://api.github.com/orgs/:org?access_token=TOKEN

如果返回200状态代码,则该用户是所有者。否则404状态代码发出信号。

希望我们能够在未来提供更优雅的解决方案。

答案 1 :(得分:2)

作为替代方案,更快的解决方案,您可以使用memberships API获取有关其所属的每个组织的经过身份验证的用户的成员资格的详细信息。

请求只是GET /user/memberships/orgs?state=active,响应如下:

[
  {
    "state": "active",
    "role": "admin",
    "organization": {
      "login": "octocat",
      "id": 1,
    },
    "user": {
      "login": "defunkt",
      "id": 3,
      "gravatar_id": "",
      "type": "User",
      "site_admin": false
    }
  },
  {
    "state": "active",
    "role": "member",
    "organization": {
      "login": "invitocat",
      "id": 2,
    },
    "user": {
      "login": "defunkt",
      "id": 3,
      "gravatar_id": "",
      "type": "User",
      "site_admin": false
    }
  }
]

需要注意的重要字段是角色;我们只想要"role": "admin"

我不确定这可以保证用户是Owners的成员,但确实表示他们拥有该组织的管理权限。

答案 2 :(得分:0)

只需确定他们是否属于名为"所有者"对于那个组织https://developer.github.com/v3/orgs/teams/#list-team-members

所有者是GitHub的特殊团队,只有所有者。

screen shot 2014-10-31 at 9 39 30 am

请参阅https://github.com/orgs/YOURORG/teams/owners