Получите только соавторов, а не владельцев ORG репозитория github.

У меня есть организация Github с владельцами Owner1 и Owner2 и участниками Member1 и Member2. Теперь я создал новый репозиторий в этой организации и добавил двух пользователей в качестве соавторов (user1 и user2) этого репозитория.

Теперь результат postman с приведенным ниже запросом GET приведет к следующему:

Owner1
Owner2
user1
user2

Запрос почтальона: https://<github-host>/api/v3/repos/<my-gihub-org>/<my-github-repo>/collaborators?per_page=100

Но мне интересно перечислить только соавторов, то есть user1 и user2; Не владельцы.

Может кто-нибудь, пожалуйста, помогите мне здесь ..!


person Rohith    schedule 01.12.2020    source источник
comment
привет, как возможно иметь двух владельцев для репозитория? а владелец по умолчанию является соавтором   -  person PDHide    schedule 01.12.2020
comment
Владельцы за полную организацию; Я добавил двух участников в качестве роли владельца.   -  person Rohith    schedule 01.12.2020


Ответы (2)


Вы можете передать параметр 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 заявляет, что:

принадлежность | строка | query
Отфильтровать соавторов по их принадлежности. Может быть одним из:

  • снаружи: все внешние соавторы репозитория, принадлежащего организации.
  • прямой: все соавторы с разрешениями на доступ к репозиторию, принадлежащему организации, независимо от статуса членства в организации.
  • 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
          }
        }
      }
    }
  }
}

person mnestorov    schedule 01.12.2020

Владелец по умолчанию является соавтором, поэтому он всегда возвращает владельца, вы можете проверить пользователей с отключенным флагом администратора, если это то, что вы имели в виду под владельцем

Я не уверен, как репозиторий может иметь двух владельцев

Используйте последний 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)
        }

    }
});
person PDHide    schedule 01.12.2020
comment
Владельцы за полную организацию; Я добавил двух участников в качестве роли владельца. Я знаю, что владельцы являются соавторами по умолчанию для любого репо, созданного в рамках этой организации. Но я заинтересован в получении только тех соавторов, которые добавлены здесь: https://<github-host>/<org>/<repo>/settings/access - person Rohith; 01.12.2020
comment
/orgs/{org}/members?role=admin предоставляет администраторов. Может быть, вы можете отфильтровать пользователей, которые не являются общими для обоих? - person PDHide; 01.12.2020
comment
Добавлен предварительный сценарий, который поможет вам отфильтровать, используя URL-адрес участников. - person PDHide; 01.12.2020