Определите разрешения соавторов (в организации-репозитории) через api?

В репозициях, принадлежащих организации (в отличие от человека), коллабораторы являются членами "команд", а команды могут иметь три разных разрешения:

  • Только Pull
  • Push and Pull
  • Push, Pull и Administrative

Я вижу список соавторов в репозиториях, подобных этому:

GET /repos/:owner/:repo/collaborators

... но он не говорит мне, какие типы разрешений имеет соавтор.

В этом конкретном случае я являюсь одним из сотрудников; Я не являюсь владельцем репозитория.

Есть ли способ программно определить тип разрешения соавтора, который у меня есть?

Ответ 1

Обновление июня 2017 года. Теперь у вас есть вложенные команды.
Тем не менее, orgs/teams API упоминает:

REST API v3 еще не полностью поддерживает вложенные команды.
Например, конечные точки для Список участников группы и Список репозиториев групп не возвращать результаты, унаследованные от вложенной структуры команды.


Оригинальный ответ 2016

Один запрос, который должен включать ваше разрешение, упоминается в "Список пользовательских групп "

GET /user/teams

Перечислите все команды во всех организациях, к которым принадлежит аутентифицированный пользователь. Этот метод требует от пользователя или репо scope при аутентификации через OAuth.

Ответ выглядит так:

Status: 200 OK
X-RateLimit-Limit: 5000
X-RateLimit-Remaining: 4999

[
  {
    "url": "https://api.github.com/teams/1",
    "name": "Owners",
    "id": 1,
    "permission": "admin",                     <============
    "members_count": 3,
    "repos_count": 10,
    "organization": {
      "login": "github",
      "id": 1,
      "url": "https://api.github.com/orgs/github",
      "avatar_url": "https://github.com/images/error/octocat_happy.gif"
    }
  }
]

Вам нужно отфильтровать этот результат, чтобы сопоставить команду с правильной репо, и вы должны вернуть уровень разрешений, связанный с это репо таким образом.

Ответ 2

Если вы хотите проверить, есть ли у вас доступ к репозиторию GitHub, вы можете использовать repo конечная точка:

GET /repos/:owner/:repo

Если ваш запрос включает вашу информацию авторизации (включая учетные данные вашей учетной записи или токен доступа OAuth), поле permissions предоставит вам информацию, которую вы ищете:

{ 'admin': False, 'push': False, 'pull': True }