2013-11-22 34 views
7

可以很容易地確定一個用戶是一個團隊if you know the id成員的所有者:GitHub的API第3版:確定用戶的組織

GET /teams/:id/members/:user 

但如何可以很容易地確定特殊的ID「業主「團隊,每個組織都有?

據我所知,唯一的辦法是檢索所有團隊的完整列​​表(我假設可能是多個頁面?),並通過它們,直到找到名爲「所有者」的人。

這當然是可以做到的,但它對於GitHub的其他奇妙的API來說是非常不方便的。 ;)

對於它的價值,我已經試過以下(沒有運氣):

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)。乾杯〜 – 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一員,但它確實表示他們有該組織的行政權力。