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 organization 和 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"
}
}
]
}
}
}
}
注意!
提供 invalid/unknown“userLogin”有时会导致返回所有团队。
可能是我做错了什么,但是我已经和GH开了工单,所以让我们看看:
https://github.community/t/teams-userlogins-filter-is-not-working-as-expected/206251
在 GitHub 中,当查看我的组织的用户列表时,我能够看到用户是多少个团队的成员。
单击此计数会显示用户所在的团队,并将我带到以下页面:
https://github.com/orgs/my-org/teams?query=%40username
但是,我试图通过 GitHub API 实现相同的功能,但我一直无法找到一个端点来列出哪些团队(组织内)用户目前是成员。
一种解决方法是遍历组织中的所有团队并获取他们的成员列表,但这会很快超过我的速率限制,因此能够在一个请求中执行此操作会很有用。
遗憾的是,GitHub 尚未提供执行此操作的方法。
目前,正如您建议的那样,您必须遍历组织中的每个团队以获取每个团队中的所有成员,然后您需要遍历所有用户,并检查用户是否是那些球队。
如果您使用 API 令牌,您可以提高速率限制,但如果您有一个大型组织,解决方案仍然很糟糕。
你可以用 GraphQL API v4 filtering users in teams within an organization 和 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"
}
}
]
}
}
}
}
注意! 提供 invalid/unknown“userLogin”有时会导致返回所有团队。
可能是我做错了什么,但是我已经和GH开了工单,所以让我们看看: https://github.community/t/teams-userlogins-filter-is-not-working-as-expected/206251