2013-11-22 2 views
7

Это легко определить, если пользователь является членом команды if you know the id:GitHub API v3: Определить, если пользователь является владельцем организации

GET /teams/:id/members/:user 

Но как можно легко определить идентификатор специального " Владельцы ", которые есть у каждой Организации?

Насколько я могу судить, единственный способ - получить полный список всех команд (которые, как я полагаю, может быть несколько страниц?), И пройтись по ним до тех пор, пока вы не найдете имя с именем «Владельцы».

Это выполнимо, конечно, но это нехарактерно неудобно для фантастического API GitHub. ;)

Для чего это стоит, я попытался следующие (не повезло):

GET /orgs/:organization/teams?name=Owners # Lists all teams 
GET /orgs/:organization/owners   # 404 

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

ответ

5

В настоящее время нет простого способа проверить, находится ли пользователь в команде владельцев. Спасибо за замечательное предложение, хотя! ;)

Хакерное обходное решение предполагает выполнение неразрушающей операции, разрешенной только владельцам. Если операция завершается успешно - аутентифицированный пользователь является владельцем.

Например, вы могли бы попробовать редактирования параметров организации, отправив пустое JSON хэш:

$ curl -v -X PATCH -d '{}' https://api.github.com/orgs/:org?access_token=TOKEN 

Если это возвращает код статуса 200, пользователь является владельцем. Сигнал статуса 404 сигнализирует иначе.

Надеюсь, мы сможем предложить более элегантное решение в будущем.

+0

Отлично! Это гораздо лучшая альтернатива тому, что я делаю в настоящее время. – namuol

+0

отлично, спасибо! –

+0

Похоже, [API членства] (https://developer.github.com/v3/orgs/members/#list-your-organization-memberships) делает то, что мне нужно сейчас. [Я добавил/принял новый ответ] (http://stackoverflow.com/a/28190753/742156). Cheers ~ – namuol

0

Просто определить, если они являются частью команды под названием «хозяев» для этого орг https://developer.github.com/v3/orgs/teams/#list-team-members

Владельцы специальная команда для GitHub только с владельцами.

screen shot 2014-10-31 at 9 39 30 am

https://github.com/orgs/YOURORG/teams/owners См

+0

К сожалению, вам нужно найти идентификатор команды Owners, прежде чем вы сможете запросить, являются ли они членом, который включает в себя переход по потенциально разбиваемому по страницам списку команд ... – namuol

1

В качестве альтернативы, быстрое решение, вы можете использовать memberships API, чтобы получить сведение о членстве одноразового пользователя в каждую организацию, к которой они принадлежат.

Запрос просто GET /user/memberships/orgs?state=active, и ответ выглядит следующим образом:

[ 
    { 
    "state": "active", 
    "role": "admin", 
    "organization": { 
     "login": "octocat", 
     "id": 1, 
    }, 
    "user": { 
     "login": "defunkt", 
     "id": 3, 
     "gravatar_id": "", 
     "type": "User", 
     "site_admin": false 
    } 
    }, 
    { 
    "state": "active", 
    "role": "member", 
    "organization": { 
     "login": "invitocat", 
     "id": 2, 
    }, 
    "user": { 
     "login": "defunkt", 
     "id": 3, 
     "gravatar_id": "", 
     "type": "User", 
     "site_admin": false 
    } 
    } 
] 

Важное поле следует отметить, роль; мы только хотим "role": "admin".

Я не уверен, что это гарантирует, что пользователь является членом Owners, но он делает, указав, что у них есть административные полномочия организации.

Смежные вопросы