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

GitHub API: List a users teams within an organization

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

单击此计数会显示用户所在的团队,并将我带到以下页面: https://github.com/orgs/my-org/teams?query=%40username

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

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

遗憾的是,GitHub 尚未提供执行此操作的方法。

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

如果您使用 API 令牌,您可以提高速率限制,但如果您有一个大型组织,解决方案仍然很糟糕。

你可以用 GraphQL API v4 filtering users in teams within an organizationuserLogins 来做到这一点:

{
  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

注意! 提供 invalid/unknown“userLogin”有时会导致返回所有团队。

可能是我做错了什么,但是我已经和GH开了工单,所以让我们看看: https://github.community/t/teams-userlogins-filter-is-not-working-as-expected/206251