仅获取协作者,而不是 github 存储库的 ORG 的所有者
Get only the collaborators, not the owners of the ORG of the github repo
我有 Github 个组织,其所有者为 Owner1 和 Owner2,成员为 Member1 和 Member2。
现在,我在该组织中创建了一个新存储库,并添加了两个用户作为该存储库的协作者(user1 和 user2)。
现在 postman
与以下 GET 请求的结果将导致以下结果:
Owner1
Owner2
user1
user2
POSTMAN 请求:https://<github-host>/api/v3/repos/<my-gihub-org>/<my-github-repo>/collaborators?per_page=100
但我只想列出协作者,即 user1 和 user2;不是所有者。
有人可以帮我吗..!
默认情况下,所有者是协作者,因此它始终是 return 所有者,您可以检查关闭管理员标记的用户,如果这就是所有者的意思
我不确定一个存储库怎么会有两个所有者
使用最新的 git api:
https://api.github.com/repos/{owner}/{repo}/collaborators
您可以在邮递员中使用以下预请求脚本来仅打印非所有者:
const postRequest = {
url: ' https://api.github.com/orgs/<org>/members\role=admin',
method: 'GET',
header: {
'Content-Type': 'application/json',
'Accept': 'application/vnd.github.v3+json'
},
auth: {
"type": "basic",
"basic": [
{ "key": "username", "value": "<yourusername>" },
{ "key": "password", "value": "<yourtoken>" }
]
}
};
pm.sendRequest(postRequest, (error, responseOwner) => {
if (error) {
console.log("THe errror is : " + JSON.stringify(error))
} else {
for (let i of pm.response.json()) {
let found = 0;
for (let j of responseOwner.json()) {
i.login === j.login ? found = 1 : null
}
found === 1 ? null : console.log(i)
}
}
});
您可以传递affiliation
参数,以过滤掉直接在某个项目上工作的任何协作者。
curl -H "Authorization: <bearer KEY>" \
-H "Accept: application/vnd.github.v3+json" \
-XGET https://api.github.com/repos/:org/:repo/collaborators\?affiliation\=direct
这应该 return 只是项目的工作人员,而不是 协作者和所有者。
GitHub 表示:
affiliation | string | query
Filter collaborators returned by their affiliation. Can be one of:
- outside: All outside collaborators of an organization-owned repository.
- direct: All collaborators with permissions to an organization-owned repository, regardless of organization membership status.
- all: All collaborators the authenticated user can see.
如果碰巧所有者也是这个仓库的直接合作者,那么你必须做另一个请求,其中您检查谁是所有者,然后从协作者请求中过滤掉他们。
curl -H "Authorization: <bearer KEY>" \
-H "Accept: application/vnd.github.v3+json" \
-XGET https://api.github.com/orgs/:org/members\?role\=admin
通过此请求,您可以检查组织的所有者。
如果您喜欢使用新的 graphql 功能,那么您可以查询
{
organization(login: "org_name") {
id
name
repository(name: "repo_name") {
collaborators(affiliation: DIRECT, first: N) {
edges {
permission
node {
name
}
}
}
}
}
}
我有 Github 个组织,其所有者为 Owner1 和 Owner2,成员为 Member1 和 Member2。 现在,我在该组织中创建了一个新存储库,并添加了两个用户作为该存储库的协作者(user1 和 user2)。
现在 postman
与以下 GET 请求的结果将导致以下结果:
Owner1
Owner2
user1
user2
POSTMAN 请求:https://<github-host>/api/v3/repos/<my-gihub-org>/<my-github-repo>/collaborators?per_page=100
但我只想列出协作者,即 user1 和 user2;不是所有者。
有人可以帮我吗..!
默认情况下,所有者是协作者,因此它始终是 return 所有者,您可以检查关闭管理员标记的用户,如果这就是所有者的意思
我不确定一个存储库怎么会有两个所有者
使用最新的 git api:
https://api.github.com/repos/{owner}/{repo}/collaborators
您可以在邮递员中使用以下预请求脚本来仅打印非所有者:
const postRequest = {
url: ' https://api.github.com/orgs/<org>/members\role=admin',
method: 'GET',
header: {
'Content-Type': 'application/json',
'Accept': 'application/vnd.github.v3+json'
},
auth: {
"type": "basic",
"basic": [
{ "key": "username", "value": "<yourusername>" },
{ "key": "password", "value": "<yourtoken>" }
]
}
};
pm.sendRequest(postRequest, (error, responseOwner) => {
if (error) {
console.log("THe errror is : " + JSON.stringify(error))
} else {
for (let i of pm.response.json()) {
let found = 0;
for (let j of responseOwner.json()) {
i.login === j.login ? found = 1 : null
}
found === 1 ? null : console.log(i)
}
}
});
您可以传递affiliation
参数,以过滤掉直接在某个项目上工作的任何协作者。
curl -H "Authorization: <bearer KEY>" \
-H "Accept: application/vnd.github.v3+json" \
-XGET https://api.github.com/repos/:org/:repo/collaborators\?affiliation\=direct
这应该 return 只是项目的工作人员,而不是 协作者和所有者。
GitHub 表示:
affiliation | string | query
Filter collaborators returned by their affiliation. Can be one of:
- outside: All outside collaborators of an organization-owned repository.
- direct: All collaborators with permissions to an organization-owned repository, regardless of organization membership status.
- all: All collaborators the authenticated user can see.
如果碰巧所有者也是这个仓库的直接合作者,那么你必须做另一个请求,其中您检查谁是所有者,然后从协作者请求中过滤掉他们。
curl -H "Authorization: <bearer KEY>" \
-H "Accept: application/vnd.github.v3+json" \
-XGET https://api.github.com/orgs/:org/members\?role\=admin
通过此请求,您可以检查组织的所有者。
如果您喜欢使用新的 graphql 功能,那么您可以查询
{
organization(login: "org_name") {
id
name
repository(name: "repo_name") {
collaborators(affiliation: DIRECT, first: N) {
edges {
permission
node {
name
}
}
}
}
}
}