github.com/google/go-github/v69@v69.2.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/rest/teams/members#list-team-members 27 // 28 //meta:operation GET /orgs/{org}/teams/{team_slug}/members 29 func (s *TeamsService) ListTeamMembersByID(ctx context.Context, orgID, teamID int64, opts *TeamListTeamMembersOptions) ([]*User, *Response, error) { 30 u := fmt.Sprintf("organizations/%v/team/%v/members", orgID, teamID) 31 u, err := addOptions(u, opts) 32 if err != nil { 33 return nil, nil, err 34 } 35 36 req, err := s.client.NewRequest("GET", u, nil) 37 if err != nil { 38 return nil, nil, err 39 } 40 41 var members []*User 42 resp, err := s.client.Do(ctx, req, &members) 43 if err != nil { 44 return nil, resp, err 45 } 46 47 return members, resp, nil 48 } 49 50 // ListTeamMembersBySlug lists all of the users who are members of a team, given a specified 51 // organization name, by team slug. 52 // 53 // GitHub API docs: https://docs.github.com/rest/teams/members#list-team-members 54 // 55 //meta:operation GET /orgs/{org}/teams/{team_slug}/members 56 func (s *TeamsService) ListTeamMembersBySlug(ctx context.Context, org, slug string, opts *TeamListTeamMembersOptions) ([]*User, *Response, error) { 57 u := fmt.Sprintf("orgs/%v/teams/%v/members", org, slug) 58 u, err := addOptions(u, opts) 59 if err != nil { 60 return nil, nil, err 61 } 62 63 req, err := s.client.NewRequest("GET", u, nil) 64 if err != nil { 65 return nil, nil, err 66 } 67 68 var members []*User 69 resp, err := s.client.Do(ctx, req, &members) 70 if err != nil { 71 return nil, resp, err 72 } 73 74 return members, resp, nil 75 } 76 77 // GetTeamMembershipByID returns the membership status for a user in a team, given a specified 78 // organization ID, by team ID. 79 // 80 // GitHub API docs: https://docs.github.com/rest/teams/members#list-team-members 81 // 82 //meta:operation GET /orgs/{org}/teams/{team_slug}/members 83 func (s *TeamsService) GetTeamMembershipByID(ctx context.Context, orgID, teamID int64, user string) (*Membership, *Response, error) { 84 u := fmt.Sprintf("organizations/%v/team/%v/memberships/%v", orgID, teamID, user) 85 req, err := s.client.NewRequest("GET", u, nil) 86 if err != nil { 87 return nil, nil, err 88 } 89 90 t := new(Membership) 91 resp, err := s.client.Do(ctx, req, t) 92 if err != nil { 93 return nil, resp, err 94 } 95 96 return t, resp, nil 97 } 98 99 // GetTeamMembershipBySlug returns the membership status for a user in a team, given a specified 100 // organization name, by team slug. 101 // 102 // GitHub API docs: https://docs.github.com/rest/teams/members#get-team-membership-for-a-user 103 // 104 //meta:operation GET /orgs/{org}/teams/{team_slug}/memberships/{username} 105 func (s *TeamsService) GetTeamMembershipBySlug(ctx context.Context, org, slug, user string) (*Membership, *Response, error) { 106 u := fmt.Sprintf("orgs/%v/teams/%v/memberships/%v", org, slug, user) 107 req, err := s.client.NewRequest("GET", u, nil) 108 if err != nil { 109 return nil, nil, err 110 } 111 112 t := new(Membership) 113 resp, err := s.client.Do(ctx, req, t) 114 if err != nil { 115 return nil, resp, err 116 } 117 118 return t, resp, nil 119 } 120 121 // TeamAddTeamMembershipOptions specifies the optional 122 // parameters to the TeamsService.AddTeamMembership method. 123 type TeamAddTeamMembershipOptions struct { 124 // Role specifies the role the user should have in the team. Possible 125 // values are: 126 // member - a normal member of the team 127 // maintainer - a team maintainer. Able to add/remove other team 128 // members, promote other team members to team 129 // maintainer, and edit the team’s name and description 130 // 131 // Default value is "member". 132 Role string `json:"role,omitempty"` 133 } 134 135 // AddTeamMembershipByID adds or invites a user to a team, given a specified 136 // organization ID, by team ID. 137 // 138 // GitHub API docs: https://docs.github.com/rest/teams/members#add-or-update-team-membership-for-a-user 139 // 140 //meta:operation PUT /orgs/{org}/teams/{team_slug}/memberships/{username} 141 func (s *TeamsService) AddTeamMembershipByID(ctx context.Context, orgID, teamID int64, user string, opts *TeamAddTeamMembershipOptions) (*Membership, *Response, error) { 142 u := fmt.Sprintf("organizations/%v/team/%v/memberships/%v", orgID, teamID, user) 143 req, err := s.client.NewRequest("PUT", u, opts) 144 if err != nil { 145 return nil, nil, err 146 } 147 148 t := new(Membership) 149 resp, err := s.client.Do(ctx, req, t) 150 if err != nil { 151 return nil, resp, err 152 } 153 154 return t, resp, nil 155 } 156 157 // AddTeamMembershipBySlug adds or invites a user to a team, given a specified 158 // organization name, by team slug. 159 // 160 // GitHub API docs: https://docs.github.com/rest/teams/members#add-or-update-team-membership-for-a-user 161 // 162 //meta:operation PUT /orgs/{org}/teams/{team_slug}/memberships/{username} 163 func (s *TeamsService) AddTeamMembershipBySlug(ctx context.Context, org, slug, user string, opts *TeamAddTeamMembershipOptions) (*Membership, *Response, error) { 164 u := fmt.Sprintf("orgs/%v/teams/%v/memberships/%v", org, slug, user) 165 req, err := s.client.NewRequest("PUT", u, opts) 166 if err != nil { 167 return nil, nil, err 168 } 169 170 t := new(Membership) 171 resp, err := s.client.Do(ctx, req, t) 172 if err != nil { 173 return nil, resp, err 174 } 175 176 return t, resp, nil 177 } 178 179 // RemoveTeamMembershipByID removes a user from a team, given a specified 180 // organization ID, by team ID. 181 // 182 // GitHub API docs: https://docs.github.com/rest/teams/members#remove-team-membership-for-a-user 183 // 184 //meta:operation DELETE /orgs/{org}/teams/{team_slug}/memberships/{username} 185 func (s *TeamsService) RemoveTeamMembershipByID(ctx context.Context, orgID, teamID int64, user string) (*Response, error) { 186 u := fmt.Sprintf("organizations/%v/team/%v/memberships/%v", orgID, teamID, 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 // RemoveTeamMembershipBySlug removes a user from a team, given a specified 196 // organization name, by team slug. 197 // 198 // GitHub API docs: https://docs.github.com/rest/teams/members#remove-team-membership-for-a-user 199 // 200 //meta:operation DELETE /orgs/{org}/teams/{team_slug}/memberships/{username} 201 func (s *TeamsService) RemoveTeamMembershipBySlug(ctx context.Context, org, slug, user string) (*Response, error) { 202 u := fmt.Sprintf("orgs/%v/teams/%v/memberships/%v", org, slug, user) 203 req, err := s.client.NewRequest("DELETE", u, nil) 204 if err != nil { 205 return nil, err 206 } 207 208 return s.client.Do(ctx, req, nil) 209 } 210 211 // ListPendingTeamInvitationsByID gets pending invitation list of a team, given a specified 212 // organization ID, by team ID. 213 // 214 // GitHub API docs: https://docs.github.com/rest/teams/members#list-pending-team-invitations 215 // 216 //meta:operation GET /orgs/{org}/teams/{team_slug}/invitations 217 func (s *TeamsService) ListPendingTeamInvitationsByID(ctx context.Context, orgID, teamID int64, opts *ListOptions) ([]*Invitation, *Response, error) { 218 u := fmt.Sprintf("organizations/%v/team/%v/invitations", orgID, teamID) 219 u, err := addOptions(u, opts) 220 if err != nil { 221 return nil, nil, err 222 } 223 224 req, err := s.client.NewRequest("GET", u, nil) 225 if err != nil { 226 return nil, nil, err 227 } 228 229 var pendingInvitations []*Invitation 230 resp, err := s.client.Do(ctx, req, &pendingInvitations) 231 if err != nil { 232 return nil, resp, err 233 } 234 235 return pendingInvitations, resp, nil 236 } 237 238 // ListPendingTeamInvitationsBySlug get pending invitation list of a team, given a specified 239 // organization name, by team slug. 240 // 241 // GitHub API docs: https://docs.github.com/rest/teams/members#list-pending-team-invitations 242 // 243 //meta:operation GET /orgs/{org}/teams/{team_slug}/invitations 244 func (s *TeamsService) ListPendingTeamInvitationsBySlug(ctx context.Context, org, slug string, opts *ListOptions) ([]*Invitation, *Response, error) { 245 u := fmt.Sprintf("orgs/%v/teams/%v/invitations", org, slug) 246 u, err := addOptions(u, opts) 247 if err != nil { 248 return nil, nil, err 249 } 250 251 req, err := s.client.NewRequest("GET", u, nil) 252 if err != nil { 253 return nil, nil, err 254 } 255 256 var pendingInvitations []*Invitation 257 resp, err := s.client.Do(ctx, req, &pendingInvitations) 258 if err != nil { 259 return nil, resp, err 260 } 261 262 return pendingInvitations, resp, nil 263 }