我有一个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
但我只想列出合作者,即user1和user2;而不是所有者。
有人能帮我一下吗。。!
您可以传递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)
}
}
});