github.com/google/go-github/v49@v49.1.0/github/teams_members.go (about) 1 // Copyright 2018 The go-github AUTHORS. All rights reserved. 2 // 3 // Use of this source code is governed by a BSD-style 4 // license that can be found in the LICENSE file. 5 6 package github 7 8 import ( 9 "context" 10 "fmt" 11 ) 12 13 // TeamListTeamMembersOptions specifies the optional parameters to the 14 // TeamsService.ListTeamMembers method. 15 type TeamListTeamMembersOptions struct { 16 // Role filters members returned by their role in the team. Possible 17 // values are "all", "member", "maintainer". Default is "all". 18 Role string `url:"role,omitempty"` 19 20 ListOptions 21 } 22 23 // ListTeamMembersByID lists all of the users who are members of a team, given a specified 24 // organization ID, by team ID. 25 // 26 // GitHub API docs: https://docs.github.com/en/rest/teams/members#list-team-members 27 func (s *TeamsService) ListTeamMembersByID(ctx context.Context, orgID, teamID int64, opts *TeamListTeamMembersOptions) ([]*User, *Response, error) { 28 u := fmt.Sprintf("organizations/%v/team/%v/members", orgID, teamID) 29 u, err := addOptions(u, opts) 30 if err != nil { 31 return nil, nil, err 32 } 33 34 req, err := s.client.NewRequest("GET", u, nil) 35 if err != nil { 36 return nil, nil, err 37 } 38 39 var members []*User 40 resp, err := s.client.Do(ctx, req, &members) 41 if err != nil { 42 return nil, resp, err 43 } 44 45 return members, resp, nil 46 } 47 48 // ListTeamMembersBySlug lists all of the users who are members of a team, given a specified 49 // organization name, by team slug. 50 // 51 // GitHub API docs: https://docs.github.com/en/rest/teams/members#list-team-members 52 func (s *TeamsService) ListTeamMembersBySlug(ctx context.Context, org, slug string, opts *TeamListTeamMembersOptions) ([]*User, *Response, error) { 53 u := fmt.Sprintf("orgs/%v/teams/%v/members", org, slug) 54 u, err := addOptions(u, opts) 55 if err != nil { 56 return nil, nil, err 57 } 58 59 req, err := s.client.NewRequest("GET", u, nil) 60 if err != nil { 61 return nil, nil, err 62 } 63 64 var members []*User 65 resp, err := s.client.Do(ctx, req, &members) 66 if err != nil { 67 return nil, resp, err 68 } 69 70 return members, resp, nil 71 } 72 73 // GetTeamMembershipByID returns the membership status for a user in a team, given a specified 74 // organization ID, by team ID. 75 // 76 // GitHub API docs: https://docs.github.com/en/rest/teams/members#list-team-members 77 func (s *TeamsService) GetTeamMembershipByID(ctx context.Context, orgID, teamID int64, user string) (*Membership, *Response, error) { 78 u := fmt.Sprintf("organizations/%v/team/%v/memberships/%v", orgID, teamID, user) 79 req, err := s.client.NewRequest("GET", u, nil) 80 if err != nil { 81 return nil, nil, err 82 } 83 84 t := new(Membership) 85 resp, err := s.client.Do(ctx, req, t) 86 if err != nil { 87 return nil, resp, err 88 } 89 90 return t, resp, nil 91 } 92 93 // GetTeamMembershipBySlug returns the membership status for a user in a team, given a specified 94 // organization name, by team slug. 95 // 96 // GitHub API docs: https://docs.github.com/en/rest/teams/members#get-team-membership-for-a-user 97 func (s *TeamsService) GetTeamMembershipBySlug(ctx context.Context, org, slug, user string) (*Membership, *Response, error) { 98 u := fmt.Sprintf("orgs/%v/teams/%v/memberships/%v", org, slug, user) 99 req, err := s.client.NewRequest("GET", u, nil) 100 if err != nil { 101 return nil, nil, err 102 } 103 104 t := new(Membership) 105 resp, err := s.client.Do(ctx, req, t) 106 if err != nil { 107 return nil, resp, err 108 } 109 110 return t, resp, nil 111 } 112 113 // TeamAddTeamMembershipOptions specifies the optional 114 // parameters to the TeamsService.AddTeamMembership method. 115 type TeamAddTeamMembershipOptions struct { 116 // Role specifies the role the user should have in the team. Possible 117 // values are: 118 // member - a normal member of the team 119 // maintainer - a team maintainer. Able to add/remove other team 120 // members, promote other team members to team 121 // maintainer, and edit the team’s name and description 122 // 123 // Default value is "member". 124 Role string `json:"role,omitempty"` 125 } 126 127 // AddTeamMembershipByID adds or invites a user to a team, given a specified 128 // organization ID, by team ID. 129 // 130 // GitHub API docs: https://docs.github.com/en/rest/teams/members#add-or-update-team-membership-for-a-user 131 func (s *TeamsService) AddTeamMembershipByID(ctx context.Context, orgID, teamID int64, user string, opts *TeamAddTeamMembershipOptions) (*Membership, *Response, error) { 132 u := fmt.Sprintf("organizations/%v/team/%v/memberships/%v", orgID, teamID, user) 133 req, err := s.client.NewRequest("PUT", u, opts) 134 if err != nil { 135 return nil, nil, err 136 } 137 138 t := new(Membership) 139 resp, err := s.client.Do(ctx, req, t) 140 if err != nil { 141 return nil, resp, err 142 } 143 144 return t, resp, nil 145 } 146 147 // AddTeamMembershipBySlug adds or invites a user to a team, given a specified 148 // organization name, by team slug. 149 // 150 // GitHub API docs: https://docs.github.com/en/rest/teams/members#add-or-update-team-membership-for-a-user 151 func (s *TeamsService) AddTeamMembershipBySlug(ctx context.Context, org, slug, user string, opts *TeamAddTeamMembershipOptions) (*Membership, *Response, error) { 152 u := fmt.Sprintf("orgs/%v/teams/%v/memberships/%v", org, slug, user) 153 req, err := s.client.NewRequest("PUT", u, opts) 154 if err != nil { 155 return nil, nil, err 156 } 157 158 t := new(Membership) 159 resp, err := s.client.Do(ctx, req, t) 160 if err != nil { 161 return nil, resp, err 162 } 163 164 return t, resp, nil 165 } 166 167 // RemoveTeamMembershipByID removes a user from a team, given a specified 168 // organization ID, by team ID. 169 // 170 // GitHub API docs: https://docs.github.com/en/rest/teams/members#remove-team-membership-for-a-user 171 func (s *TeamsService) RemoveTeamMembershipByID(ctx context.Context, orgID, teamID int64, user string) (*Response, error) { 172 u := fmt.Sprintf("organizations/%v/team/%v/memberships/%v", orgID, teamID, user) 173 req, err := s.client.NewRequest("DELETE", u, nil) 174 if err != nil { 175 return nil, err 176 } 177 178 return s.client.Do(ctx, req, nil) 179 } 180 181 // RemoveTeamMembershipBySlug removes a user from a team, given a specified 182 // organization name, by team slug. 183 // 184 // GitHub API docs: https://docs.github.com/en/rest/teams/members#remove-team-membership-for-a-user 185 func (s *TeamsService) RemoveTeamMembershipBySlug(ctx context.Context, org, slug, user string) (*Response, error) { 186 u := fmt.Sprintf("orgs/%v/teams/%v/memberships/%v", org, slug, user) 187 req, err := s.client.NewRequest("DELETE", u, nil) 188 if err != nil { 189 return nil, err 190 } 191 192 return s.client.Do(ctx, req, nil) 193 } 194 195 // ListPendingTeamInvitationsByID gets pending invitation list of a team, given a specified 196 // organization ID, by team ID. 197 // 198 // GitHub API docs: https://docs.github.com/en/rest/teams/members#list-pending-team-invitations 199 func (s *TeamsService) ListPendingTeamInvitationsByID(ctx context.Context, orgID, teamID int64, opts *ListOptions) ([]*Invitation, *Response, error) { 200 u := fmt.Sprintf("organizations/%v/team/%v/invitations", orgID, teamID) 201 u, err := addOptions(u, opts) 202 if err != nil { 203 return nil, nil, err 204 } 205 206 req, err := s.client.NewRequest("GET", u, nil) 207 if err != nil { 208 return nil, nil, err 209 } 210 211 var pendingInvitations []*Invitation 212 resp, err := s.client.Do(ctx, req, &pendingInvitations) 213 if err != nil { 214 return nil, resp, err 215 } 216 217 return pendingInvitations, resp, nil 218 } 219 220 // ListPendingTeamInvitationsBySlug get pending invitation list of a team, given a specified 221 // organization name, by team slug. 222 // 223 // GitHub API docs: https://docs.github.com/en/rest/teams/members#list-pending-team-invitations 224 func (s *TeamsService) ListPendingTeamInvitationsBySlug(ctx context.Context, org, slug string, opts *ListOptions) ([]*Invitation, *Response, error) { 225 u := fmt.Sprintf("orgs/%v/teams/%v/invitations", org, slug) 226 u, err := addOptions(u, opts) 227 if err != nil { 228 return nil, nil, err 229 } 230 231 req, err := s.client.NewRequest("GET", u, nil) 232 if err != nil { 233 return nil, nil, err 234 } 235 236 var pendingInvitations []*Invitation 237 resp, err := s.client.Do(ctx, req, &pendingInvitations) 238 if err != nil { 239 return nil, resp, err 240 } 241 242 return pendingInvitations, resp, nil 243 }