Commit 55832598 authored by Patrick Rice's avatar Patrick Rice 🫖
Browse files

Merge branch 'refac8' into 'main'

refactor: moved comments to interface

Closes #2210

See merge request !2716
parents 38542ba3 b77b5f8d
Loading
Loading
Loading
Loading
Loading
+32 −32
Original line number Diff line number Diff line
@@ -21,13 +21,45 @@ import (

type (
	GeoSitesServiceInterface interface {
		// CreateGeoSite creates a new Geo Site.
		//
		// GitLab API docs:
		// https://docs.gitlab.com/api/geo_sites/#create-a-new-geo-site
		CreateGeoSite(*CreateGeoSitesOptions, ...RequestOptionFunc) (*GeoSite, *Response, error)
		// ListGeoSites gets a list of geo sites.
		//
		// GitLab API docs:
		// https://docs.gitlab.com/api/geo_sites/#retrieve-configuration-about-all-geo-sites
		ListGeoSites(*ListGeoSitesOptions, ...RequestOptionFunc) ([]*GeoSite, *Response, error)
		// GetGeoSite gets a specific geo site.
		//
		// GitLab API docs:
		// https://docs.gitlab.com/api/geo_sites/#retrieve-configuration-about-a-specific-geo-site
		GetGeoSite(int64, ...RequestOptionFunc) (*GeoSite, *Response, error)
		// EditGeoSite updates settings of an existing Geo site.
		//
		// GitLab API docs:
		// https://docs.gitlab.com/api/geo_sites/#edit-a-geo-site
		EditGeoSite(int64, *EditGeoSiteOptions, ...RequestOptionFunc) (*GeoSite, *Response, error)
		// DeleteGeoSite removes the Geo site.
		//
		// GitLab API docs:
		// https://docs.gitlab.com/api/geo_sites/#delete-a-geo-site
		DeleteGeoSite(int64, ...RequestOptionFunc) (*Response, error)
		// RepairGeoSite to repair the OAuth authentication of a Geo site.
		//
		// GitLab API docs:
		// https://docs.gitlab.com/api/geo_sites/#repair-a-geo-site
		RepairGeoSite(int64, ...RequestOptionFunc) (*GeoSite, *Response, error)
		// ListStatusOfAllGeoSites get the list of status of all Geo Sites.
		//
		// GitLab API docs:
		// https://docs.gitlab.com/api/geo_sites/#retrieve-status-about-all-geo-sites
		ListStatusOfAllGeoSites(*ListStatusOfAllGeoSitesOptions, ...RequestOptionFunc) ([]*GeoSiteStatus, *Response, error)
		// GetStatusOfGeoSite gets the status of a specific Geo Site.
		//
		// GitLab API docs:
		// https://docs.gitlab.com/api/geo_sites/#retrieve-status-about-a-specific-geo-site
		GetStatusOfGeoSite(int64, ...RequestOptionFunc) (*GeoSiteStatus, *Response, error)
	}

@@ -97,10 +129,6 @@ type CreateGeoSitesOptions struct {
	MinimumReverificationInterval    *int64    `url:"minimum_reverification_interval,omitempty" json:"minimum_reverification_interval,omitempty"`
}

// CreateGeoSite creates a new Geo Site.
//
// GitLab API docs:
// https://docs.gitlab.com/api/geo_sites/#create-a-new-geo-site
func (s *GeoSitesService) CreateGeoSite(opt *CreateGeoSitesOptions, options ...RequestOptionFunc) (*GeoSite, *Response, error) {
	return do[*GeoSite](s.client,
		withMethod(http.MethodPost),
@@ -118,10 +146,6 @@ type ListGeoSitesOptions struct {
	ListOptions
}

// ListGeoSites gets a list of geo sites.
//
// GitLab API docs:
// https://docs.gitlab.com/api/geo_sites/#retrieve-configuration-about-all-geo-sites
func (s *GeoSitesService) ListGeoSites(opt *ListGeoSitesOptions, options ...RequestOptionFunc) ([]*GeoSite, *Response, error) {
	return do[[]*GeoSite](s.client,
		withPath("geo_sites"),
@@ -130,10 +154,6 @@ func (s *GeoSitesService) ListGeoSites(opt *ListGeoSitesOptions, options ...Requ
	)
}

// GetGeoSite gets a specific geo site.
//
// GitLab API docs:
// https://docs.gitlab.com/api/geo_sites/#retrieve-configuration-about-a-specific-geo-site
func (s *GeoSitesService) GetGeoSite(id int64, options ...RequestOptionFunc) (*GeoSite, *Response, error) {
	return do[*GeoSite](s.client,
		withPath("geo_sites/%d", id),
@@ -160,10 +180,6 @@ type EditGeoSiteOptions struct {
	MinimumReverificationInterval    *int64    `url:"minimum_reverification_interval,omitempty" json:"minimum_reverification_interval,omitempty"`
}

// EditGeoSite updates settings of an existing Geo site.
//
// GitLab API docs:
// https://docs.gitlab.com/api/geo_sites/#edit-a-geo-site
func (s *GeoSitesService) EditGeoSite(id int64, opt *EditGeoSiteOptions, options ...RequestOptionFunc) (*GeoSite, *Response, error) {
	return do[*GeoSite](s.client,
		withMethod(http.MethodPut),
@@ -173,10 +189,6 @@ func (s *GeoSitesService) EditGeoSite(id int64, opt *EditGeoSiteOptions, options
	)
}

// DeleteGeoSite removes the Geo site.
//
// GitLab API docs:
// https://docs.gitlab.com/api/geo_sites/#delete-a-geo-site
func (s *GeoSitesService) DeleteGeoSite(id int64, options ...RequestOptionFunc) (*Response, error) {
	_, resp, err := do[none](s.client,
		withMethod(http.MethodDelete),
@@ -186,10 +198,6 @@ func (s *GeoSitesService) DeleteGeoSite(id int64, options ...RequestOptionFunc)
	return resp, err
}

// RepairGeoSite to repair the OAuth authentication of a Geo site.
//
// GitLab API docs:
// https://docs.gitlab.com/api/geo_sites/#repair-a-geo-site
func (s *GeoSitesService) RepairGeoSite(id int64, options ...RequestOptionFunc) (*GeoSite, *Response, error) {
	return do[*GeoSite](s.client,
		withMethod(http.MethodPost),
@@ -433,10 +441,6 @@ type ListStatusOfAllGeoSitesOptions struct {
	ListOptions
}

// ListStatusOfAllGeoSites get the list of status of all Geo Sites.
//
// GitLab API docs:
// https://docs.gitlab.com/api/geo_sites/#retrieve-status-about-all-geo-sites
func (s *GeoSitesService) ListStatusOfAllGeoSites(opt *ListStatusOfAllGeoSitesOptions, options ...RequestOptionFunc) ([]*GeoSiteStatus, *Response, error) {
	return do[[]*GeoSiteStatus](s.client,
		withPath("geo_sites/status"),
@@ -445,10 +449,6 @@ func (s *GeoSitesService) ListStatusOfAllGeoSites(opt *ListStatusOfAllGeoSitesOp
	)
}

// GetStatusOfGeoSite get the of status of a specific Geo Sites.
//
// GitLab API docs:
// https://docs.gitlab.com/api/geo_sites/#retrieve-status-about-a-specific-geo-site
func (s *GeoSitesService) GetStatusOfGeoSite(id int64, options ...RequestOptionFunc) (*GeoSiteStatus, *Response, error) {
	return do[*GeoSiteStatus](s.client,
		withPath("geo_sites/%d/status", id),
+37 −37
Original line number Diff line number Diff line
@@ -22,14 +22,51 @@ import (

type (
	GroupIssueBoardsServiceInterface interface {
		// ListGroupIssueBoards gets a list of all issue boards in a group.
		//
		// GitLab API docs:
		// https://docs.gitlab.com/api/group_boards/#list-all-group-issue-boards-in-a-group
		ListGroupIssueBoards(gid any, opt *ListGroupIssueBoardsOptions, options ...RequestOptionFunc) ([]*GroupIssueBoard, *Response, error)
		// CreateGroupIssueBoard creates a new issue board.
		//
		// GitLab API docs:
		// https://docs.gitlab.com/api/group_boards/#create-a-group-issue-board
		CreateGroupIssueBoard(gid any, opt *CreateGroupIssueBoardOptions, options ...RequestOptionFunc) (*GroupIssueBoard, *Response, error)
		// GetGroupIssueBoard gets a single issue board of a group.
		//
		// GitLab API docs:
		// https://docs.gitlab.com/api/group_boards/#single-group-issue-board
		GetGroupIssueBoard(gid any, board int64, options ...RequestOptionFunc) (*GroupIssueBoard, *Response, error)
		// UpdateIssueBoard updates a single issue board of a group.
		//
		// GitLab API docs:
		// https://docs.gitlab.com/api/group_boards/#update-a-group-issue-board
		UpdateIssueBoard(gid any, board int64, opt *UpdateGroupIssueBoardOptions, options ...RequestOptionFunc) (*GroupIssueBoard, *Response, error)
		// DeleteIssueBoard deletes a single issue board of a group.
		//
		// GitLab API docs:
		// https://docs.gitlab.com/api/group_boards/#delete-a-group-issue-board
		DeleteIssueBoard(gid any, board int64, options ...RequestOptionFunc) (*Response, error)
		// ListGroupIssueBoardLists gets a list of the issue board's lists. Does not include
		// backlog and closed lists.
		//
		// GitLab API docs: https://docs.gitlab.com/api/group_boards/#list-group-issue-board-lists
		ListGroupIssueBoardLists(gid any, board int64, opt *ListGroupIssueBoardListsOptions, options ...RequestOptionFunc) ([]*BoardList, *Response, error)
		// GetGroupIssueBoardList gets a single issue board list.
		//
		// GitLab API docs:
		// https://docs.gitlab.com/api/group_boards/#single-group-issue-board-list
		GetGroupIssueBoardList(gid any, board, list int64, options ...RequestOptionFunc) (*BoardList, *Response, error)
		// CreateGroupIssueBoardList creates a new issue board list.
		//
		// GitLab API docs:
		// https://docs.gitlab.com/api/group_boards/#new-group-issue-board-list
		CreateGroupIssueBoardList(gid any, board int64, opt *CreateGroupIssueBoardListOptions, options ...RequestOptionFunc) (*BoardList, *Response, error)
		// UpdateIssueBoardList updates the position of an existing
		// group issue board list.
		//
		// GitLab API docs:
		// https://docs.gitlab.com/api/group_boards/#edit-group-issue-board-list
		UpdateIssueBoardList(gid any, board, list int64, opt *UpdateGroupIssueBoardListOptions, options ...RequestOptionFunc) ([]*BoardList, *Response, error)
		DeleteGroupIssueBoardList(gid any, board, list int64, options ...RequestOptionFunc) (*Response, error)
	}
@@ -72,10 +109,6 @@ type ListGroupIssueBoardsOptions struct {
	ListOptions
}

// ListGroupIssueBoards gets a list of all issue boards in a group.
//
// GitLab API docs:
// https://docs.gitlab.com/api/group_boards/#list-all-group-issue-boards-in-a-group
func (s *GroupIssueBoardsService) ListGroupIssueBoards(gid any, opt *ListGroupIssueBoardsOptions, options ...RequestOptionFunc) ([]*GroupIssueBoard, *Response, error) {
	return do[[]*GroupIssueBoard](s.client,
		withMethod(http.MethodGet),
@@ -94,10 +127,6 @@ type CreateGroupIssueBoardOptions struct {
	Name *string `url:"name" json:"name"`
}

// CreateGroupIssueBoard creates a new issue board.
//
// GitLab API docs:
// https://docs.gitlab.com/api/group_boards/#create-a-group-issue-board
func (s *GroupIssueBoardsService) CreateGroupIssueBoard(gid any, opt *CreateGroupIssueBoardOptions, options ...RequestOptionFunc) (*GroupIssueBoard, *Response, error) {
	return do[*GroupIssueBoard](s.client,
		withMethod(http.MethodPost),
@@ -107,10 +136,6 @@ func (s *GroupIssueBoardsService) CreateGroupIssueBoard(gid any, opt *CreateGrou
	)
}

// GetGroupIssueBoard gets a single issue board of a group.
//
// GitLab API docs:
// https://docs.gitlab.com/api/group_boards/#single-group-issue-board
func (s *GroupIssueBoardsService) GetGroupIssueBoard(gid any, board int64, options ...RequestOptionFunc) (*GroupIssueBoard, *Response, error) {
	return do[*GroupIssueBoard](s.client,
		withMethod(http.MethodGet),
@@ -131,10 +156,6 @@ type UpdateGroupIssueBoardOptions struct {
	Weight      *int64        `url:"weight,omitempty" json:"weight,omitempty"`
}

// UpdateIssueBoard updates a single issue board of a group.
//
// GitLab API docs:
// https://docs.gitlab.com/api/group_boards/#update-a-group-issue-board
func (s *GroupIssueBoardsService) UpdateIssueBoard(gid any, board int64, opt *UpdateGroupIssueBoardOptions, options ...RequestOptionFunc) (*GroupIssueBoard, *Response, error) {
	return do[*GroupIssueBoard](s.client,
		withMethod(http.MethodPut),
@@ -144,10 +165,6 @@ func (s *GroupIssueBoardsService) UpdateIssueBoard(gid any, board int64, opt *Up
	)
}

// DeleteIssueBoard delete a single issue board of a group.
//
// GitLab API docs:
// https://docs.gitlab.com/api/group_boards/#delete-a-group-issue-board
func (s *GroupIssueBoardsService) DeleteIssueBoard(gid any, board int64, options ...RequestOptionFunc) (*Response, error) {
	_, resp, err := do[none](s.client,
		withMethod(http.MethodDelete),
@@ -166,10 +183,6 @@ type ListGroupIssueBoardListsOptions struct {
	ListOptions
}

// ListGroupIssueBoardLists gets a list of the issue board's lists. Does not include
// backlog and closed lists.
//
// GitLab API docs: https://docs.gitlab.com/api/group_boards/#list-group-issue-board-lists
func (s *GroupIssueBoardsService) ListGroupIssueBoardLists(gid any, board int64, opt *ListGroupIssueBoardListsOptions, options ...RequestOptionFunc) ([]*BoardList, *Response, error) {
	return do[[]*BoardList](s.client,
		withMethod(http.MethodGet),
@@ -179,10 +192,6 @@ func (s *GroupIssueBoardsService) ListGroupIssueBoardLists(gid any, board int64,
	)
}

// GetGroupIssueBoardList gets a single issue board list.
//
// GitLab API docs:
// https://docs.gitlab.com/api/group_boards/#single-group-issue-board-list
func (s *GroupIssueBoardsService) GetGroupIssueBoardList(gid any, board, list int64, options ...RequestOptionFunc) (*BoardList, *Response, error) {
	return do[*BoardList](s.client,
		withMethod(http.MethodGet),
@@ -200,10 +209,6 @@ type CreateGroupIssueBoardListOptions struct {
	LabelID *int64 `url:"label_id" json:"label_id"`
}

// CreateGroupIssueBoardList creates a new issue board list.
//
// GitLab API docs:
// https://docs.gitlab.com/api/group_boards/#new-group-issue-board-list
func (s *GroupIssueBoardsService) CreateGroupIssueBoardList(gid any, board int64, opt *CreateGroupIssueBoardListOptions, options ...RequestOptionFunc) (*BoardList, *Response, error) {
	return do[*BoardList](s.client,
		withMethod(http.MethodPost),
@@ -222,11 +227,6 @@ type UpdateGroupIssueBoardListOptions struct {
	Position *int64 `url:"position" json:"position"`
}

// UpdateIssueBoardList updates the position of an existing
// group issue board list.
//
// GitLab API docs:
// https://docs.gitlab.com/api/group_boards/#edit-group-issue-board-list
func (s *GroupIssueBoardsService) UpdateIssueBoardList(gid any, board, list int64, opt *UpdateGroupIssueBoardListOptions, options ...RequestOptionFunc) ([]*BoardList, *Response, error) {
	return do[[]*BoardList](s.client,
		withMethod(http.MethodPut),
+29 −29
Original line number Diff line number Diff line
@@ -23,12 +23,41 @@ import (

type (
	GroupMembersServiceInterface interface {
		// GetGroupMember gets a member of a group.
		//
		// GitLab API docs:
		// https://docs.gitlab.com/api/members/#get-a-member-of-a-group-or-project
		GetGroupMember(gid any, user int64, options ...RequestOptionFunc) (*GroupMember, *Response, error)
		// GetInheritedGroupMember gets a member of a group or project, including
		// inherited and invited members
		//
		// GitLab API docs:
		// https://docs.gitlab.com/api/members/#get-a-member-of-a-group-or-project-including-inherited-and-invited-members
		GetInheritedGroupMember(gid any, user int64, options ...RequestOptionFunc) (*GroupMember, *Response, error)
		// AddGroupMember adds a user to the list of group members.
		//
		// GitLab API docs:
		// https://docs.gitlab.com/api/members/#add-a-member-to-a-group-or-project
		AddGroupMember(gid any, opt *AddGroupMemberOptions, options ...RequestOptionFunc) (*GroupMember, *Response, error)
		// ShareWithGroup shares a group with the group.
		//
		// GitLab API docs:
		// https://docs.gitlab.com/api/groups/#create-a-link-to-share-a-group-with-another-group
		ShareWithGroup(gid any, opt *ShareWithGroupOptions, options ...RequestOptionFunc) (*Group, *Response, error)
		// DeleteShareWithGroup allows to unshare a group from a group.
		//
		// GitLab API docs:
		// https://docs.gitlab.com/api/groups/#delete-the-link-that-shares-a-group-with-another-group
		DeleteShareWithGroup(gid any, groupID int64, options ...RequestOptionFunc) (*Response, error)
		// EditGroupMember updates a member of a group.
		//
		// GitLab API docs:
		// https://docs.gitlab.com/api/members/#edit-a-member-of-a-group-or-project
		EditGroupMember(gid any, user int64, opt *EditGroupMemberOptions, options ...RequestOptionFunc) (*GroupMember, *Response, error)
		// RemoveGroupMember removes user from user team.
		//
		// GitLab API docs:
		// https://docs.gitlab.com/api/members/#remove-a-member-from-a-group-or-project
		RemoveGroupMember(gid any, user int64, opt *RemoveGroupMemberOptions, options ...RequestOptionFunc) (*Response, error)
	}

@@ -158,10 +187,6 @@ type AddGroupMemberOptions struct {
	MemberRoleID *int64            `url:"member_role_id,omitempty" json:"member_role_id,omitempty"`
}

// GetGroupMember gets a member of a group.
//
// GitLab API docs:
// https://docs.gitlab.com/api/members/#get-a-member-of-a-group-or-project
func (s *GroupMembersService) GetGroupMember(gid any, user int64, options ...RequestOptionFunc) (*GroupMember, *Response, error) {
	return do[*GroupMember](s.client,
		withPath("groups/%s/members/%d", GroupID{gid}, user),
@@ -169,11 +194,6 @@ func (s *GroupMembersService) GetGroupMember(gid any, user int64, options ...Req
	)
}

// GetInheritedGroupMember get a member of a group or project, including
// inherited and invited members
//
// GitLab API docs:
// https://docs.gitlab.com/api/members/#get-a-member-of-a-group-or-project-including-inherited-and-invited-members
func (s *GroupMembersService) GetInheritedGroupMember(gid any, user int64, options ...RequestOptionFunc) (*GroupMember, *Response, error) {
	return do[*GroupMember](s.client,
		withPath("groups/%s/members/all/%d", GroupID{gid}, user),
@@ -240,10 +260,6 @@ func (s *GroupsService) RemoveBillableGroupMember(gid any, user int64, options .
	return resp, err
}

// AddGroupMember adds a user to the list of group members.
//
// GitLab API docs:
// https://docs.gitlab.com/api/members/#add-a-member-to-a-group-or-project
func (s *GroupMembersService) AddGroupMember(gid any, opt *AddGroupMemberOptions, options ...RequestOptionFunc) (*GroupMember, *Response, error) {
	return do[*GroupMember](s.client,
		withMethod(http.MethodPost),
@@ -253,10 +269,6 @@ func (s *GroupMembersService) AddGroupMember(gid any, opt *AddGroupMemberOptions
	)
}

// ShareWithGroup shares a group with the group.
//
// GitLab API docs:
// https://docs.gitlab.com/api/groups/#create-a-link-to-share-a-group-with-another-group
func (s *GroupMembersService) ShareWithGroup(gid any, opt *ShareWithGroupOptions, options ...RequestOptionFunc) (*Group, *Response, error) {
	return do[*Group](s.client,
		withMethod(http.MethodPost),
@@ -266,10 +278,6 @@ func (s *GroupMembersService) ShareWithGroup(gid any, opt *ShareWithGroupOptions
	)
}

// DeleteShareWithGroup allows to unshare a group from a group.
//
// GitLab API docs:
// https://docs.gitlab.com/api/groups/#delete-the-link-that-shares-a-group-with-another-group
func (s *GroupMembersService) DeleteShareWithGroup(gid any, groupID int64, options ...RequestOptionFunc) (*Response, error) {
	_, resp, err := do[none](s.client,
		withMethod(http.MethodDelete),
@@ -290,10 +298,6 @@ type EditGroupMemberOptions struct {
	MemberRoleID *int64            `url:"member_role_id,omitempty" json:"member_role_id,omitempty"`
}

// EditGroupMember updates a member of a group.
//
// GitLab API docs:
// https://docs.gitlab.com/api/members/#edit-a-member-of-a-group-or-project
func (s *GroupMembersService) EditGroupMember(gid any, user int64, opt *EditGroupMemberOptions, options ...RequestOptionFunc) (*GroupMember, *Response, error) {
	return do[*GroupMember](s.client,
		withMethod(http.MethodPut),
@@ -312,10 +316,6 @@ type RemoveGroupMemberOptions struct {
	UnassignIssuables *bool `url:"unassign_issuables,omitempty" json:"unassign_issuables,omitempty"`
}

// RemoveGroupMember removes user from user team.
//
// GitLab API docs:
// https://docs.gitlab.com/api/members/#remove-a-member-from-a-group-or-project
func (s *GroupMembersService) RemoveGroupMember(gid any, user int64, opt *RemoveGroupMemberOptions, options ...RequestOptionFunc) (*Response, error) {
	_, resp, err := do[none](s.client,
		withMethod(http.MethodDelete),
+20 −21
Original line number Diff line number Diff line
@@ -24,10 +24,30 @@ import (
type (
	// GroupVariablesServiceInterface defines methods for the GroupVariablesService.
	GroupVariablesServiceInterface interface {
		// ListVariables gets a list of all variables for a group.
		//
		// GitLab API docs:
		// https://docs.gitlab.com/api/group_level_variables/#list-group-variables
		ListVariables(gid any, opt *ListGroupVariablesOptions, options ...RequestOptionFunc) ([]*GroupVariable, *Response, error)
		// GetVariable gets a variable.
		//
		// GitLab API docs:
		// https://docs.gitlab.com/api/group_level_variables/#show-variable-details
		GetVariable(gid any, key string, opt *GetGroupVariableOptions, options ...RequestOptionFunc) (*GroupVariable, *Response, error)
		// CreateVariable creates a new group variable.
		//
		// GitLab API docs:
		// https://docs.gitlab.com/api/group_level_variables/#create-variable
		CreateVariable(gid any, opt *CreateGroupVariableOptions, options ...RequestOptionFunc) (*GroupVariable, *Response, error)
		// UpdateVariable updates an existing group variable.
		//
		// GitLab API docs:
		// https://docs.gitlab.com/api/group_level_variables/#update-variable
		UpdateVariable(gid any, key string, opt *UpdateGroupVariableOptions, options ...RequestOptionFunc) (*GroupVariable, *Response, error)
		// RemoveVariable removes a group's variable.
		//
		// GitLab API docs:
		// https://docs.gitlab.com/api/group_level_variables/#remove-variable
		RemoveVariable(gid any, key string, opt *RemoveGroupVariableOptions, options ...RequestOptionFunc) (*Response, error)
	}

@@ -72,10 +92,6 @@ type ListGroupVariablesOptions struct {
	ListOptions
}

// ListVariables gets a list of all variables for a group.
//
// GitLab API docs:
// https://docs.gitlab.com/api/group_level_variables/#list-group-variables
func (s *GroupVariablesService) ListVariables(gid any, opt *ListGroupVariablesOptions, options ...RequestOptionFunc) ([]*GroupVariable, *Response, error) {
	return do[[]*GroupVariable](s.client,
		withPath("groups/%s/variables", GroupID{gid}),
@@ -93,10 +109,6 @@ type GetGroupVariableOptions struct {
	Filter *VariableFilter `url:"filter,omitempty" json:"filter,omitempty"`
}

// GetVariable gets a variable.
//
// GitLab API docs:
// https://docs.gitlab.com/api/group_level_variables/#show-variable-details
func (s *GroupVariablesService) GetVariable(gid any, key string, opt *GetGroupVariableOptions, options ...RequestOptionFunc) (*GroupVariable, *Response, error) {
	return do[*GroupVariable](s.client,
		withPath("groups/%s/variables/%s", GroupID{gid}, url.PathEscape(key)),
@@ -122,10 +134,6 @@ type CreateGroupVariableOptions struct {
	VariableType     *VariableTypeValue `url:"variable_type,omitempty" json:"variable_type,omitempty"`
}

// CreateVariable creates a new group variable.
//
// GitLab API docs:
// https://docs.gitlab.com/api/group_level_variables/#create-variable
func (s *GroupVariablesService) CreateVariable(gid any, opt *CreateGroupVariableOptions, options ...RequestOptionFunc) (*GroupVariable, *Response, error) {
	return do[*GroupVariable](s.client,
		withMethod(http.MethodPost),
@@ -151,11 +159,6 @@ type UpdateGroupVariableOptions struct {
	VariableType     *VariableTypeValue `url:"variable_type,omitempty" json:"variable_type,omitempty"`
}

// UpdateVariable updates the position of an existing
// group issue board list.
//
// GitLab API docs:
// https://docs.gitlab.com/api/group_level_variables/#update-variable
func (s *GroupVariablesService) UpdateVariable(gid any, key string, opt *UpdateGroupVariableOptions, options ...RequestOptionFunc) (*GroupVariable, *Response, error) {
	return do[*GroupVariable](s.client,
		withMethod(http.MethodPut),
@@ -174,10 +177,6 @@ type RemoveGroupVariableOptions struct {
	Filter *VariableFilter `url:"filter,omitempty" json:"filter,omitempty"`
}

// RemoveVariable removes a group's variable.
//
// GitLab API docs:
// https://docs.gitlab.com/api/group_level_variables/#remove-variable
func (s *GroupVariablesService) RemoveVariable(gid any, key string, opt *RemoveGroupVariableOptions, options ...RequestOptionFunc) (*Response, error) {
	_, resp, err := do[none](s.client,
		withMethod(http.MethodDelete),
+13 −13
Original line number Diff line number Diff line
@@ -22,8 +22,21 @@ import (

type (
	IssuesStatisticsServiceInterface interface {
		// GetIssuesStatistics gets issues statistics on all issues the authenticated
		// user has access to.
		//
		// GitLab API docs:
		// https://docs.gitlab.com/api/issues_statistics/#get-issues-statistics
		GetIssuesStatistics(opt *GetIssuesStatisticsOptions, options ...RequestOptionFunc) (*IssuesStatistics, *Response, error)
		// GetGroupIssuesStatistics gets issues count statistics for given group.
		//
		// GitLab API docs:
		// https://docs.gitlab.com/api/issues_statistics/#get-group-issues-statistics
		GetGroupIssuesStatistics(gid any, opt *GetGroupIssuesStatisticsOptions, options ...RequestOptionFunc) (*IssuesStatistics, *Response, error)
		// GetProjectIssuesStatistics gets issues count statistics for given project.
		//
		// GitLab API docs:
		// https://docs.gitlab.com/api/issues_statistics/#get-project-issues-statistics
		GetProjectIssuesStatistics(pid any, opt *GetProjectIssuesStatisticsOptions, options ...RequestOptionFunc) (*IssuesStatistics, *Response, error)
	}

@@ -88,11 +101,6 @@ type GetIssuesStatisticsOptions struct {
	Confidential     *bool         `url:"confidential,omitempty" json:"confidential,omitempty"`
}

// GetIssuesStatistics gets issues statistics on all issues the authenticated
// user has access to.
//
// GitLab API docs:
// https://docs.gitlab.com/api/issues_statistics/#get-issues-statistics
func (s *IssuesStatisticsService) GetIssuesStatistics(opt *GetIssuesStatisticsOptions, options ...RequestOptionFunc) (*IssuesStatistics, *Response, error) {
	return do[*IssuesStatistics](s.client,
		withPath("issues_statistics"),
@@ -124,10 +132,6 @@ type GetGroupIssuesStatisticsOptions struct {
	Confidential     *bool         `url:"confidential,omitempty" json:"confidential,omitempty"`
}

// GetGroupIssuesStatistics gets issues count statistics for given group.
//
// GitLab API docs:
// https://docs.gitlab.com/api/issues_statistics/#get-group-issues-statistics
func (s *IssuesStatisticsService) GetGroupIssuesStatistics(gid any, opt *GetGroupIssuesStatisticsOptions, options ...RequestOptionFunc) (*IssuesStatistics, *Response, error) {
	return do[*IssuesStatistics](s.client,
		withPath("groups/%s/issues_statistics", GroupID{gid}),
@@ -159,10 +163,6 @@ type GetProjectIssuesStatisticsOptions struct {
	Confidential     *bool         `url:"confidential,omitempty" json:"confidential,omitempty"`
}

// GetProjectIssuesStatistics gets issues count statistics for given project.
//
// GitLab API docs:
// https://docs.gitlab.com/api/issues_statistics/#get-project-issues-statistics
func (s *IssuesStatisticsService) GetProjectIssuesStatistics(pid any, opt *GetProjectIssuesStatisticsOptions, options ...RequestOptionFunc) (*IssuesStatistics, *Response, error) {
	return do[*IssuesStatistics](s.client,
		withPath("projects/%s/issues_statistics", ProjectID{pid}),
Loading