GitHub API:列出组织内的用户团队



在GitHub中,当查看我的组织的用户列表时,我能够看到用户是多少个团队的成员。

点击这个计数显示了用户所在的团队,把我放在下面的页面:https://github.com/orgs/my-org/teams?query=%40username

然而,我试图通过GitHub API实现相同的功能,但我一直无法找到一个端点,列出哪些团队(在一个组织内)的用户目前是成员。

一种解决方法是遍历组织中的所有团队并获取其成员列表,但这很快就会超过我的速率限制,因此能够在一个请求中完成此操作将是有用的。

您可以使用GraphQL API v4来过滤组织中具有userLogins的团队中的用户:

{
  organization(login: "my-org") {
    teams(first: 100, userLogins: ["johndoe"]) {
      totalCount
      edges {
        node {
          name
          description
        }
      }
    }
  }
}

给出例如:

{
  "data": {
    "organization": {
      "teams": {
        "totalCount": 2,
        "edges": [
          {
            "node": {
              "name": "Employees",
              "description": "org employees"
            }
          },
          {
            "node": {
              "name": "Developers",
              "description": "active developers"
            }
          }
        ]
      }
    }
  }
}

来源:platform.github.community forum

不幸的是,GitHub还没有提供这样做的方法。

目前,就像您建议的那样,您必须遍历组织中的每个团队以获取每个团队中的所有成员,然后您需要遍历所有用户,并检查用户是否是这些团队的成员。

如果你使用API令牌,你可以增加你的速率限制,但是如果你有一个大的组织,这个解决方案仍然很糟糕。

小心!提供无效/未知的"用户登录";有时会导致所有团队都返回。

也许我做错了什么,但我开了一张票GH关于这个,所以让我们看看:https://github.community/t/teams-userlogins-filter-is-not-working-as-expected/206251

最新更新