@@ -49,6 +49,35 @@ func (s *RepositoriesService) IsCollaborator(owner, repo, user string) (bool, *R
49
49
return isCollab , resp , err
50
50
}
51
51
52
+ // RepositoryPermissionLevel represents the permission level an organization
53
+ // member has for a given repository.
54
+ type RepositoryPermissionLevel struct {
55
+ // Possible values: "admin", "write", "read", "none"
56
+ Permission string `json:"permission"`
57
+
58
+ User * User `json:"user"`
59
+ }
60
+
61
+ // GetPermissionLevel retrieves the specific permission level a collaborator has for a given repository.
62
+ // GitHub API docs: https://developer.github.com/v3/repos/collaborators/#review-a-users-permission-level
63
+ func (s * RepositoriesService ) GetPermissionLevel (owner , repo , user string ) (* RepositoryPermissionLevel , * Response , error ) {
64
+ u := fmt .Sprintf ("repos/%v/%v/collaborators/%v/permission" , owner , repo , user )
65
+ req , err := s .client .NewRequest ("GET" , u , nil )
66
+ if err != nil {
67
+ return nil , nil , err
68
+ }
69
+
70
+ // TODO: remove custom Accept header when this API fully launches.
71
+ req .Header .Set ("Accept" , mediaTypeOrgMembershipPreview )
72
+
73
+ rpl := new (RepositoryPermissionLevel )
74
+ resp , err := s .client .Do (req , rpl )
75
+ if err != nil {
76
+ return nil , resp , err
77
+ }
78
+ return rpl , resp , err
79
+ }
80
+
52
81
// RepositoryAddCollaboratorOptions specifies the optional parameters to the
53
82
// RepositoriesService.AddCollaborator method.
54
83
type RepositoryAddCollaboratorOptions struct {
0 commit comments