github.com/google/go-github/v60@v60.0.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  }