只获取合作者,而不是github repo的ORG的所有者



我有一个Github组织,所有者为Owner1和Owner2,成员为Member1和Member2。现在,我在这个组织中创建了一个新的存储库,并添加了两个用户作为这个repo的合作者(user1和user2(。

现在,具有以下GET请求的postman的结果将导致以下结果:

Owner1
Owner2
user1
user2

POSTMAN请求:https://<github-host>/api/v3/repos/<my-gihub-org>/<my-github-repo>/collaborators?per_page=100

但我只想列出合作者,即user1user2;而不是所有者

有人能帮我一下吗。。!

您可以传递affiliation参数,以便筛选出直接参与某个项目的任何合作者。

curl -H "Authorization: <bearer KEY>" 
-H "Accept: application/vnd.github.v3+json" 
-XGET https://api.github.com/repos/:org/:repo/collaborators?affiliation=direct

这应该只返回参与项目的人员,而不是合作者和所有者。

GitHub声明:

隶属关系|string|query
根据其隶属关系筛选合作者。可以是以下之一:

  • outside:组织拥有的存储库的所有外部合作者
  • direct:所有对组织拥有的存储库具有权限的合作者,无论组织成员身份如何
  • all:经过身份验证的用户可以看到的所有合作者

如果碰巧所有者也是此回购的直接合作者,则您必须执行另一个请求,在该请求中,您检查哪个人是所有者,然后从合作者请求中筛选出他们。


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
}
}
}
}
}
}

默认情况下,所有者是合作者,因此它将始终返回所有者,如果这就是所有者的意思,您可以检查关闭管理标志的用户

我不确定一个存储库怎么会有两个所有者

使用最新的git-api:

https://api.github.com/repos/{owner}/{repo}/collaborators

您可以在poster中使用以下pre-requestt脚本只打印非所有者:

const postRequest = {
url: ' https://api.github.com/orgs/<org>/membersrole=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)
}
}
});

相关内容

  • 没有找到相关文章

最新更新