Documentation
¶
Overview ¶
Package groups implements MCP tools for GitLab group operations.
The package wraps client-go group APIs for listing groups, retrieving group details, listing members and subgroups, and managing group webhooks through list, get, add, edit, and delete operations. It also provides Markdown formatting for group tool outputs.
Group-adjacent domains such as labels, milestones, boards, variables, service accounts, SAML, LDAP, protected environments, protected branches, epics, group wikis, and group releases live in dedicated sibling packages and share the same catalog-first registration path.
GitLab API References ¶
The package wraps the GitLab Groups API:
Index ¶
- func ActionSpecs(client *gitlabclient.Client) []toolutil.ActionSpec
- func Archive(ctx context.Context, client *gitlabclient.Client, input ArchiveInput) error
- func ArchiveOutput(ctx context.Context, client *gitlabclient.Client, input ArchiveInput) (toolutil.DeleteOutput, error)
- func Delete(ctx context.Context, client *gitlabclient.Client, input DeleteInput) error
- func DeleteHook(ctx context.Context, client *gitlabclient.Client, input DeleteHookInput) error
- func DeleteHookCustomHeader(ctx context.Context, client *gitlabclient.Client, ...) error
- func DeleteHookURLVariable(ctx context.Context, client *gitlabclient.Client, ...) error
- func DeletePushRule(ctx context.Context, client *gitlabclient.Client, input DeletePushRuleInput) error
- func DeletePushRuleOutput(ctx context.Context, client *gitlabclient.Client, input DeletePushRuleInput) (toolutil.DeleteOutput, error)
- func FormatHookListMarkdown(out HookListOutput) string
- func FormatHookMarkdown(h HookOutput) string
- func FormatListMarkdown(out ListOutput) string
- func FormatListProjectsMarkdown(out ListProjectsOutput) string
- func FormatMemberListMarkdown(out MemberListOutput) string
- func FormatOutputMarkdown(g Output) string
- func FormatProvisionedUsersListMarkdown(out ProvisionedUsersListOutput) string
- func FormatPushRuleMarkdown(r PushRuleOutput) string
- func FormatShareGroupMarkdown(out ShareGroupOutput) string
- func FormatSharedProjectsListMarkdown(out SharedProjectsListOutput) string
- func FormatTransferLocationsListMarkdown(out TransferLocationsListOutput) string
- func ResendHookEvent(ctx context.Context, client *gitlabclient.Client, input ResendHookEventInput) error
- func ResendHookEventOutput(ctx context.Context, client *gitlabclient.Client, input ResendHookEventInput) (toolutil.VoidOutput, error)
- func SetHookCustomHeader(ctx context.Context, client *gitlabclient.Client, ...) error
- func SetHookCustomHeaderOutput(ctx context.Context, client *gitlabclient.Client, ...) (toolutil.VoidOutput, error)
- func SetHookURLVariable(ctx context.Context, client *gitlabclient.Client, ...) error
- func SetHookURLVariableOutput(ctx context.Context, client *gitlabclient.Client, ...) (toolutil.VoidOutput, error)
- func TestHook(ctx context.Context, client *gitlabclient.Client, input TestHookInput) error
- func TestHookOutput(ctx context.Context, client *gitlabclient.Client, input TestHookInput) (toolutil.VoidOutput, error)
- func Unarchive(ctx context.Context, client *gitlabclient.Client, input ArchiveInput) error
- func UnarchiveOutput(ctx context.Context, client *gitlabclient.Client, input ArchiveInput) (toolutil.DeleteOutput, error)
- func UnshareGroupFromGroup(ctx context.Context, client *gitlabclient.Client, input UnshareGroupInput) error
- type AddHookInput
- type AddPushRuleInput
- type ArchiveInput
- type BranchProtectionDefaults
- type BranchProtectionDefaultsInput
- type CreateInput
- type CustomAttributeOutput
- type DeleteHookCustomHeaderInput
- type DeleteHookInput
- type DeleteHookURLVariableInput
- type DeleteInput
- type DeletePushRuleInput
- type EditHookInput
- type EditPushRuleInput
- type GetHookInput
- type GetInput
- type GetPushRulesInput
- type GroupAccessLevelOutput
- type HookCustomHeaderInput
- type HookCustomHeaderOutput
- type HookInput
- type HookListOutput
- type HookOutput
- func AddHook(ctx context.Context, client *gitlabclient.Client, input AddHookInput) (HookOutput, error)
- func EditHook(ctx context.Context, client *gitlabclient.Client, input EditHookInput) (HookOutput, error)
- func GetHook(ctx context.Context, client *gitlabclient.Client, input GetHookInput) (HookOutput, error)
- type HookURLVariable
- type InvitedListInput
- type LDAPGroupLinkOutput
- type ListHooksInput
- type ListInput
- type ListOutput
- func InvitedList(ctx context.Context, client *gitlabclient.Client, input InvitedListInput) (ListOutput, error)
- func List(ctx context.Context, client *gitlabclient.Client, input ListInput) (ListOutput, error)
- func Search(ctx context.Context, client *gitlabclient.Client, input SearchInput) (ListOutput, error)
- func SharedWithList(ctx context.Context, client *gitlabclient.Client, input SharedWithListInput) (ListOutput, error)
- func SubgroupsList(ctx context.Context, client *gitlabclient.Client, input SubgroupsListInput) (ListOutput, error)
- type ListProjectsInput
- type ListProjectsOutput
- type ListProvisionedUsersInput
- type ListSharedProjectsInput
- type MemberListOutput
- type MemberOutput
- type MemberRoleOutput
- type MemberUserOutput
- type MembersListInput
- type Output
- func Create(ctx context.Context, client *gitlabclient.Client, input CreateInput) (Output, error)
- func Get(ctx context.Context, client *gitlabclient.Client, input GetInput) (Output, error)
- func Restore(ctx context.Context, client *gitlabclient.Client, input RestoreInput) (Output, error)
- func ToOutput(g *gl.Group) Output
- func TransferProject(ctx context.Context, client *gitlabclient.Client, input TransferInput) (Output, error)
- func TransferSubGroup(ctx context.Context, client *gitlabclient.Client, input TransferSubGroupInput) (Output, error)
- func Update(ctx context.Context, client *gitlabclient.Client, input UpdateInput) (Output, error)
- func UploadAvatar(ctx context.Context, client *gitlabclient.Client, input UploadAvatarInput) (Output, error)
- type ProjectItem
- type ProvisionedUserBasicUser
- type ProvisionedUserCustomAttribute
- type ProvisionedUserIdentity
- type ProvisionedUserOutput
- type ProvisionedUserSCIMIdentity
- type ProvisionedUsersListOutput
- type PushRuleOutput
- func AddPushRule(ctx context.Context, client *gitlabclient.Client, input AddPushRuleInput) (PushRuleOutput, error)
- func EditPushRule(ctx context.Context, client *gitlabclient.Client, input EditPushRuleInput) (PushRuleOutput, error)
- func GetPushRules(ctx context.Context, client *gitlabclient.Client, input GetPushRulesInput) (PushRuleOutput, error)
- type ResendHookEventInput
- type RestoreInput
- type SAMLGroupLinkOutput
- type SAMLIdentityOutput
- type SearchInput
- type SetHookCustomHeaderInput
- type SetHookURLVariableInput
- type ShareGroupInput
- type ShareGroupOutput
- type SharedProjectsListOutput
- type SharedWithGroupOutput
- type SharedWithListInput
- type StatisticsOutput
- type SubgroupsListInput
- type TestHookInput
- type TransferInput
- type TransferLocationOutput
- type TransferLocationsListInput
- type TransferLocationsListOutput
- type TransferSubGroupInput
- type UnshareGroupInput
- type UpdateInput
- type UploadAvatarInput
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func ActionSpecs ¶
func ActionSpecs(client *gitlabclient.Client) []toolutil.ActionSpec
ActionSpecs returns canonical specs for core group and group hook actions.
func Archive ¶
func Archive(ctx context.Context, client *gitlabclient.Client, input ArchiveInput) error
Archive archives a GitLab group. Requires Owner role or administrator.
func ArchiveOutput ¶
func ArchiveOutput(ctx context.Context, client *gitlabclient.Client, input ArchiveInput) (toolutil.DeleteOutput, error)
ArchiveOutput archives a GitLab group and returns the legacy success message shape.
func Delete ¶
func Delete(ctx context.Context, client *gitlabclient.Client, input DeleteInput) error
Delete removes a GitLab group.
func DeleteHook ¶
func DeleteHook(ctx context.Context, client *gitlabclient.Client, input DeleteHookInput) error
DeleteHook removes a webhook from a group.
func DeleteHookCustomHeader ¶ added in v2.3.0
func DeleteHookCustomHeader(ctx context.Context, client *gitlabclient.Client, input DeleteHookCustomHeaderInput) error
DeleteHookCustomHeader removes a custom header from a group webhook.
func DeleteHookURLVariable ¶ added in v2.3.0
func DeleteHookURLVariable(ctx context.Context, client *gitlabclient.Client, input DeleteHookURLVariableInput) error
DeleteHookURLVariable removes a templated URL variable from a group webhook.
func DeletePushRule ¶ added in v2.3.0
func DeletePushRule(ctx context.Context, client *gitlabclient.Client, input DeletePushRuleInput) error
DeletePushRule deletes the push-rule configuration from a group.
func DeletePushRuleOutput ¶ added in v2.3.0
func DeletePushRuleOutput(ctx context.Context, client *gitlabclient.Client, input DeletePushRuleInput) (toolutil.DeleteOutput, error)
DeletePushRuleOutput deletes a group's push rules and returns the legacy success message shape.
func FormatHookListMarkdown ¶
func FormatHookListMarkdown(out HookListOutput) string
FormatHookListMarkdown renders a paginated list of group hooks as a Markdown table.
func FormatHookMarkdown ¶
func FormatHookMarkdown(h HookOutput) string
FormatHookMarkdown renders a single group hook as a Markdown summary.
func FormatListMarkdown ¶
func FormatListMarkdown(out ListOutput) string
FormatListMarkdown renders a list of groups as a Markdown table.
func FormatListProjectsMarkdown ¶
func FormatListProjectsMarkdown(out ListProjectsOutput) string
FormatListProjectsMarkdown renders a list of group projects as a Markdown table.
func FormatMemberListMarkdown ¶
func FormatMemberListMarkdown(out MemberListOutput) string
FormatMemberListMarkdown renders a list of group members as a Markdown table.
func FormatOutputMarkdown ¶
FormatOutputMarkdown renders a single group as a Markdown summary.
func FormatProvisionedUsersListMarkdown ¶ added in v2.3.0
func FormatProvisionedUsersListMarkdown(out ProvisionedUsersListOutput) string
FormatProvisionedUsersListMarkdown renders a paginated list of users provisioned for a group through SAML/SCIM as a Markdown table.
func FormatPushRuleMarkdown ¶ added in v2.3.0
func FormatPushRuleMarkdown(r PushRuleOutput) string
FormatPushRuleMarkdown renders a group's push-rule configuration as Markdown.
func FormatShareGroupMarkdown ¶ added in v2.3.0
func FormatShareGroupMarkdown(out ShareGroupOutput) string
FormatShareGroupMarkdown renders the result of a group-to-group share.
func FormatSharedProjectsListMarkdown ¶ added in v2.3.0
func FormatSharedProjectsListMarkdown(out SharedProjectsListOutput) string
FormatSharedProjectsListMarkdown renders the projects shared with a group.
func FormatTransferLocationsListMarkdown ¶ added in v2.3.0
func FormatTransferLocationsListMarkdown(out TransferLocationsListOutput) string
FormatTransferLocationsListMarkdown renders the candidate parent groups for a group transfer.
func ResendHookEvent ¶ added in v2.3.0
func ResendHookEvent(ctx context.Context, client *gitlabclient.Client, input ResendHookEventInput) error
ResendHookEvent resends a specific previously-delivered group hook event.
func ResendHookEventOutput ¶ added in v2.3.0
func ResendHookEventOutput(ctx context.Context, client *gitlabclient.Client, input ResendHookEventInput) (toolutil.VoidOutput, error)
ResendHookEventOutput resends a group hook event and returns the legacy success message shape.
func SetHookCustomHeader ¶ added in v2.3.0
func SetHookCustomHeader(ctx context.Context, client *gitlabclient.Client, input SetHookCustomHeaderInput) error
SetHookCustomHeader creates or updates a custom header on a group webhook.
func SetHookCustomHeaderOutput ¶ added in v2.3.0
func SetHookCustomHeaderOutput(ctx context.Context, client *gitlabclient.Client, input SetHookCustomHeaderInput) (toolutil.VoidOutput, error)
SetHookCustomHeaderOutput sets a group webhook custom header and returns the legacy success message shape.
func SetHookURLVariable ¶ added in v2.3.0
func SetHookURLVariable(ctx context.Context, client *gitlabclient.Client, input SetHookURLVariableInput) error
SetHookURLVariable creates or updates a templated URL variable on a group webhook.
func SetHookURLVariableOutput ¶ added in v2.3.0
func SetHookURLVariableOutput(ctx context.Context, client *gitlabclient.Client, input SetHookURLVariableInput) (toolutil.VoidOutput, error)
SetHookURLVariableOutput sets a group webhook URL variable and returns the legacy success message shape.
func TestHook ¶ added in v2.3.0
func TestHook(ctx context.Context, client *gitlabclient.Client, input TestHookInput) error
TestHook triggers a test event for a group webhook.
func TestHookOutput ¶ added in v2.3.0
func TestHookOutput(ctx context.Context, client *gitlabclient.Client, input TestHookInput) (toolutil.VoidOutput, error)
TestHookOutput triggers a test group hook event and returns the legacy success message shape.
func Unarchive ¶
func Unarchive(ctx context.Context, client *gitlabclient.Client, input ArchiveInput) error
Unarchive unarchives a GitLab group. Requires Owner role or administrator.
func UnarchiveOutput ¶
func UnarchiveOutput(ctx context.Context, client *gitlabclient.Client, input ArchiveInput) (toolutil.DeleteOutput, error)
UnarchiveOutput unarchives a GitLab group and returns the legacy success message shape.
func UnshareGroupFromGroup ¶ added in v2.3.0
func UnshareGroupFromGroup(ctx context.Context, client *gitlabclient.Client, input UnshareGroupInput) error
UnshareGroupFromGroup removes a group-to-group share.
Types ¶
type AddHookInput ¶
type AddHookInput struct {
GroupID toolutil.StringOrInt `json:"group_id" jsonschema:"Group ID or URL-encoded path,required"`
HookInput
}
AddHookInput defines parameters for adding a new group hook.
type AddPushRuleInput ¶ added in v2.3.0
type AddPushRuleInput struct {
GroupID toolutil.StringOrInt `json:"group_id" jsonschema:"Group ID or URL-encoded path,required"`
AuthorEmailRegex string `json:"author_email_regex,omitempty" jsonschema:"Regex to validate author email addresses"`
BranchNameRegex string `json:"branch_name_regex,omitempty" jsonschema:"Regex to validate branch names"`
CommitCommitterCheck *bool `json:"commit_committer_check,omitempty" jsonschema:"Reject commits where committer is not a group member"`
CommitCommitterNameCheck *bool `json:"commit_committer_name_check,omitempty" jsonschema:"Reject commits where committer name does not match user name"`
CommitMessageNegativeRegex string `json:"commit_message_negative_regex,omitempty" jsonschema:"Regex that commit messages must NOT match"`
CommitMessageRegex string `json:"commit_message_regex,omitempty" jsonschema:"Regex that commit messages must match"`
DenyDeleteTag *bool `json:"deny_delete_tag,omitempty" jsonschema:"Deny tag deletion"`
FileNameRegex string `json:"file_name_regex,omitempty" jsonschema:"Regex for disallowed file names"`
MaxFileSize *int64 `json:"max_file_size,omitempty" jsonschema:"Maximum file size (MB). 0 means unlimited"`
MemberCheck *bool `json:"member_check,omitempty" jsonschema:"Only allow commits from group members"`
PreventSecrets *bool `json:"prevent_secrets,omitempty" jsonschema:"Reject files that are likely to contain secrets"`
RejectUnsignedCommits *bool `json:"reject_unsigned_commits,omitempty" jsonschema:"Reject commits that are not GPG signed"`
RejectNonDCOCommits *bool `json:"reject_non_dco_commits,omitempty" jsonschema:"Reject commits without DCO certification"`
}
AddPushRuleInput defines parameters for adding push rules to a group.
type ArchiveInput ¶
type ArchiveInput struct {
GroupID toolutil.StringOrInt `json:"group_id" jsonschema:"Group ID or URL-encoded path,required"`
}
ArchiveInput defines parameters for archiving or unarchiving a group.
type BranchProtectionDefaults ¶ added in v2.3.0
type BranchProtectionDefaults struct {
AllowedToPush []GroupAccessLevelOutput `json:"allowed_to_push,omitempty"`
AllowForcePush bool `json:"allow_force_push,omitempty"`
AllowedToMerge []GroupAccessLevelOutput `json:"allowed_to_merge,omitempty"`
DeveloperCanInitialPush bool `json:"developer_can_initial_push,omitempty"`
CodeOwnerApprovalRequired bool `json:"code_owner_approval_required,omitempty"`
}
BranchProtectionDefaults mirrors gl.BranchProtectionDefaults (the default_branch_protection_defaults object).
type BranchProtectionDefaultsInput ¶ added in v2.3.0
type BranchProtectionDefaultsInput struct {
AllowedToPush []int `` /* 155-byte string literal not displayed */
AllowForcePush *bool `json:"allow_force_push,omitempty" jsonschema:"Allow force push on the default branch"`
AllowedToMerge []int `` /* 156-byte string literal not displayed */
DeveloperCanInitialPush *bool `json:"developer_can_initial_push,omitempty" jsonschema:"Allow developers to make the initial push to the default branch"`
CodeOwnerApprovalRequired *bool `json:"code_owner_approval_required,omitempty" jsonschema:"Require code owner approval before merging into the default branch"`
}
BranchProtectionDefaultsInput mirrors gl.DefaultBranchProtectionDefaultsOptions (the default_branch_protection_defaults object on create/update). Access levels in allowed_to_push / allowed_to_merge are given as a list of integer access levels; GitLab applies the highest provided level.
type CreateInput ¶
type CreateInput struct {
Name string `json:"name" jsonschema:"Group name,required"`
Path string `json:"path,omitempty" jsonschema:"Group URL path (defaults to kebab-case of name)"`
Description string `json:"description,omitempty" jsonschema:"Group description"`
Visibility string `json:"visibility,omitempty" jsonschema:"Visibility level (private, internal, public)"`
ParentID int64 `json:"parent_id,omitempty" jsonschema:"Parent group ID (creates a subgroup)"`
OrganizationID *int64 `` /* 158-byte string literal not displayed */
RequestAccessEnabled *bool `json:"request_access_enabled,omitempty" jsonschema:"Allow users to request access"`
LFSEnabled *bool `json:"lfs_enabled,omitempty" jsonschema:"Enable Git LFS"`
DefaultBranch string `json:"default_branch,omitempty" jsonschema:"Default branch name"`
MathRenderingLimitsEnabled *bool `json:"math_rendering_limits_enabled,omitempty" jsonschema:"Enable math rendering limits"`
WebBasedCommitSigningEnabled *bool `json:"web_based_commit_signing_enabled,omitempty" jsonschema:"Enable web-based commit signing for projects in this group"`
AllowPersonalSnippets *bool `json:"allow_personal_snippets,omitempty" jsonschema:"Allow members to create personal snippets"`
AutoDevopsEnabled *bool `json:"auto_devops_enabled,omitempty" jsonschema:"Enable Auto DevOps for projects in this group"`
DefaultBranchProtection *int64 `` /* 210-byte string literal not displayed */
DefaultBranchProtectionDefaults *BranchProtectionDefaultsInput `json:"default_branch_protection_defaults,omitempty" jsonschema:"Default branch protection settings object"`
DuoAvailability string `json:"duo_availability,omitempty" jsonschema:"GitLab Duo availability (default_on, default_off, never_on)"`
EmailsEnabled *bool `json:"emails_enabled,omitempty" jsonschema:"Enable email notifications"`
EmailsDisabled *bool `` /* 127-byte string literal not displayed */
EnabledGitAccessProtocol string `json:"enabled_git_access_protocol,omitempty" jsonschema:"Allowed Git access protocol (ssh, http, all)"`
ExperimentFeaturesEnabled *bool `json:"experiment_features_enabled,omitempty" jsonschema:"Enable experimental features"`
MembershipLock *bool `json:"membership_lock,omitempty" jsonschema:"Prevent members from being added to projects in this group"`
MentionsDisabled *bool `json:"mentions_disabled,omitempty" jsonschema:"Disable @-mention notifications"`
ProjectCreationLevel string `json:"project_creation_level,omitempty" jsonschema:"Who can create projects (noone, maintainer, developer)"`
RequireTwoFactorAuth *bool `json:"require_two_factor_authentication,omitempty" jsonschema:"Require two-factor authentication for members"`
SubGroupCreationLevel string `json:"subgroup_creation_level,omitempty" jsonschema:"Who can create subgroups (owner, maintainer)"`
TwoFactorGracePeriod *int64 `` /* 131-byte string literal not displayed */
WikiAccessLevel string `json:"wiki_access_level,omitempty" jsonschema:"Wiki access level (disabled, private, enabled)"`
UniqueProjectDownloadLimit *int64 `` /* 178-byte string literal not displayed */
UniqueProjectDownloadLimitIntervalInSeconds *int64 `` /* 169-byte string literal not displayed */
UniqueProjectDownloadLimitAllowlist []string `` /* 166-byte string literal not displayed */
UniqueProjectDownloadLimitAlertlist []int64 `` /* 177-byte string literal not displayed */
AutoBanUserOnExcessiveProjectsDownload *bool `` /* 177-byte string literal not displayed */
}
CreateInput defines parameters for creating a group.
type CustomAttributeOutput ¶ added in v2.3.0
CustomAttributeOutput mirrors gl.CustomAttribute (a custom_attributes entry).
type DeleteHookCustomHeaderInput ¶ added in v2.3.0
type DeleteHookCustomHeaderInput struct {
GroupID toolutil.StringOrInt `json:"group_id" jsonschema:"Group ID or URL-encoded path,required"`
HookID int64 `json:"hook_id" jsonschema:"Webhook ID,required"`
Key string `json:"key" jsonschema:"Custom header key name to delete,required"`
}
DeleteHookCustomHeaderInput defines parameters for deleting a custom header from a group webhook.
type DeleteHookInput ¶
type DeleteHookInput struct {
GroupID toolutil.StringOrInt `json:"group_id" jsonschema:"Group ID or URL-encoded path,required"`
HookID int64 `json:"hook_id" jsonschema:"Hook ID to delete,required"`
}
DeleteHookInput defines parameters for deleting a group hook.
type DeleteHookURLVariableInput ¶ added in v2.3.0
type DeleteHookURLVariableInput struct {
GroupID toolutil.StringOrInt `json:"group_id" jsonschema:"Group ID or URL-encoded path,required"`
HookID int64 `json:"hook_id" jsonschema:"Webhook ID,required"`
Key string `json:"key" jsonschema:"URL variable key name to delete,required"`
}
DeleteHookURLVariableInput defines parameters for deleting a URL variable from a group webhook.
type DeleteInput ¶
type DeleteInput struct {
GroupID toolutil.StringOrInt `json:"group_id" jsonschema:"Group ID or URL-encoded path,required"`
PermanentlyRemove bool `json:"permanently_remove,omitempty" jsonschema:"Permanently remove instead of marking for deletion"`
FullPath string `json:"full_path,omitempty" jsonschema:"Full path (required when permanently_remove=true)"`
}
DeleteInput defines parameters for deleting a group.
type DeletePushRuleInput ¶ added in v2.3.0
type DeletePushRuleInput struct {
GroupID toolutil.StringOrInt `json:"group_id" jsonschema:"Group ID or URL-encoded path,required"`
}
DeletePushRuleInput defines parameters for deleting push rules from a group.
type EditHookInput ¶
type EditHookInput struct {
GroupID toolutil.StringOrInt `json:"group_id" jsonschema:"Group ID or URL-encoded path,required"`
HookID int64 `json:"hook_id" jsonschema:"Hook ID to edit,required"`
HookInput
}
EditHookInput defines parameters for editing an existing group hook.
type EditPushRuleInput ¶ added in v2.3.0
type EditPushRuleInput struct {
GroupID toolutil.StringOrInt `json:"group_id" jsonschema:"Group ID or URL-encoded path,required"`
AuthorEmailRegex *string `json:"author_email_regex,omitempty" jsonschema:"Regex to validate author email addresses"`
BranchNameRegex *string `json:"branch_name_regex,omitempty" jsonschema:"Regex to validate branch names"`
CommitCommitterCheck *bool `json:"commit_committer_check,omitempty" jsonschema:"Reject commits where committer is not a group member"`
CommitCommitterNameCheck *bool `json:"commit_committer_name_check,omitempty" jsonschema:"Reject commits where committer name does not match user name"`
CommitMessageNegativeRegex *string `json:"commit_message_negative_regex,omitempty" jsonschema:"Regex that commit messages must NOT match"`
CommitMessageRegex *string `json:"commit_message_regex,omitempty" jsonschema:"Regex that commit messages must match"`
DenyDeleteTag *bool `json:"deny_delete_tag,omitempty" jsonschema:"Deny tag deletion"`
FileNameRegex *string `json:"file_name_regex,omitempty" jsonschema:"Regex for disallowed file names"`
MaxFileSize *int64 `json:"max_file_size,omitempty" jsonschema:"Maximum file size (MB). 0 means unlimited"`
MemberCheck *bool `json:"member_check,omitempty" jsonschema:"Only allow commits from group members"`
PreventSecrets *bool `json:"prevent_secrets,omitempty" jsonschema:"Reject files that are likely to contain secrets"`
RejectUnsignedCommits *bool `json:"reject_unsigned_commits,omitempty" jsonschema:"Reject commits that are not GPG signed"`
RejectNonDCOCommits *bool `json:"reject_non_dco_commits,omitempty" jsonschema:"Reject commits without DCO certification"`
}
EditPushRuleInput defines parameters for editing push rules on a group.
type GetHookInput ¶
type GetHookInput struct {
GroupID toolutil.StringOrInt `json:"group_id" jsonschema:"Group ID or URL-encoded path,required"`
HookID int64 `json:"hook_id" jsonschema:"Hook ID,required"`
}
GetHookInput defines parameters for retrieving a single group hook.
type GetInput ¶
type GetInput struct {
GroupID toolutil.StringOrInt `json:"group_id" jsonschema:"Group ID or URL-encoded path,required"`
WithCustomAttributes bool `json:"with_custom_attributes,omitempty" jsonschema:"Include custom attributes in the response"`
WithProjects *bool `` /* 140-byte string literal not displayed */
OrderBy string `json:"order_by,omitempty" jsonschema:"Order embedded projects by field (only applies with with_projects)"`
Sort string `json:"sort,omitempty" jsonschema:"Sort direction for embedded projects (asc, desc)"`
toolutil.PaginationInput
toolutil.KeysetPaginationInput
}
GetInput defines parameters for retrieving a single group.
type GetPushRulesInput ¶ added in v2.3.0
type GetPushRulesInput struct {
GroupID toolutil.StringOrInt `json:"group_id" jsonschema:"Group ID or URL-encoded path,required"`
}
GetPushRulesInput defines parameters for getting a group's push rules.
type GroupAccessLevelOutput ¶ added in v2.3.0
type GroupAccessLevelOutput struct {
AccessLevel int `json:"access_level,omitempty"`
}
GroupAccessLevelOutput mirrors gl.GroupAccessLevel (an access-level entry in allowed_to_push / allowed_to_merge).
type HookCustomHeaderInput ¶ added in v2.3.0
type HookCustomHeaderInput struct {
Key string `json:"key" jsonschema:"Header name,required"`
Value string `json:"value,omitempty" jsonschema:"Header value (write-only; masked on read)"`
}
HookCustomHeaderInput is a single custom HTTP header sent with webhook requests. It mirrors gl.HookCustomHeader on add/edit.
type HookCustomHeaderOutput ¶ added in v2.3.0
type HookCustomHeaderOutput struct {
Key string `json:"key"`
Value string `json:"value,omitempty"`
}
HookCustomHeaderOutput mirrors gl.HookCustomHeader (a custom_headers entry). The value is write-only and masked on read.
type HookInput ¶
type HookInput struct {
URL string `json:"url,omitempty" jsonschema:"Webhook URL (required for add)"`
Name string `json:"name,omitempty" jsonschema:"Hook name"`
Description string `json:"description,omitempty" jsonschema:"Hook description"`
Token string `json:"token,omitempty" jsonschema:"Secret token for payload validation"`
SigningToken string `json:"signing_token,omitempty" jsonschema:"Write-only signing token for webhook signature validation"`
PushEvents *bool `json:"push_events,omitempty" jsonschema:"Trigger on push events"`
TagPushEvents *bool `json:"tag_push_events,omitempty" jsonschema:"Trigger on tag push events"`
MergeRequestsEvents *bool `json:"merge_requests_events,omitempty" jsonschema:"Trigger on merge request events"`
IssuesEvents *bool `json:"issues_events,omitempty" jsonschema:"Trigger on issue events"`
NoteEvents *bool `json:"note_events,omitempty" jsonschema:"Trigger on comment events"`
JobEvents *bool `json:"job_events,omitempty" jsonschema:"Trigger on job events"`
PipelineEvents *bool `json:"pipeline_events,omitempty" jsonschema:"Trigger on pipeline events"`
WikiPageEvents *bool `json:"wiki_page_events,omitempty" jsonschema:"Trigger on wiki page events"`
DeploymentEvents *bool `json:"deployment_events,omitempty" jsonschema:"Trigger on deployment events"`
ReleasesEvents *bool `json:"releases_events,omitempty" jsonschema:"Trigger on release events"`
MilestoneEvents *bool `json:"milestone_events,omitempty" jsonschema:"Trigger on milestone events"`
FeatureFlagEvents *bool `json:"feature_flag_events,omitempty" jsonschema:"Trigger on feature flag events"`
SubGroupEvents *bool `json:"subgroup_events,omitempty" jsonschema:"Trigger on subgroup events"`
MemberEvents *bool `json:"member_events,omitempty" jsonschema:"Trigger on member events"`
VulnerabilityEvents *bool `json:"vulnerability_events,omitempty" jsonschema:"Trigger on vulnerability events"`
ConfidentialIssuesEvents *bool `json:"confidential_issues_events,omitempty" jsonschema:"Trigger on confidential issue events"`
ConfidentialNoteEvents *bool `json:"confidential_note_events,omitempty" jsonschema:"Trigger on confidential note events"`
EnableSSLVerification *bool `json:"enable_ssl_verification,omitempty" jsonschema:"Enable SSL verification for the hook endpoint"`
PushEventsBranchFilter string `json:"push_events_branch_filter,omitempty" jsonschema:"Branch filter for push events (e.g. 'main')"`
BranchFilterStrategy string `json:"branch_filter_strategy,omitempty" jsonschema:"Branch filter strategy (wildcard, regex, all_branches)"`
EmojiEvents *bool `json:"emoji_events,omitempty" jsonschema:"Trigger on emoji events"`
ResourceAccessTokenEvents *bool `json:"resource_access_token_events,omitempty" jsonschema:"Trigger on resource access token events"`
ProjectEvents *bool `json:"project_events,omitempty" jsonschema:"Trigger on project events (group-level)"`
CustomWebhookTemplate string `` /* 130-byte string literal not displayed */
CustomHeaders []HookCustomHeaderInput `json:"custom_headers,omitempty" jsonschema:"Custom HTTP headers added to webhook requests"`
}
HookInput defines common parameters for creating or editing a group hook.
type HookListOutput ¶
type HookListOutput struct {
toolutil.HintableOutput
Hooks []HookOutput `json:"hooks"`
Pagination toolutil.PaginationOutput `json:"pagination"`
}
HookListOutput holds a paginated list of group hooks.
func ListHooks ¶
func ListHooks(ctx context.Context, client *gitlabclient.Client, input ListHooksInput) (HookListOutput, error)
ListHooks retrieves a paginated list of webhooks for a group.
type HookOutput ¶
type HookOutput struct {
toolutil.HintableOutput
ID int64 `json:"id"`
URL string `json:"url"`
Name string `json:"name,omitempty"`
Description string `json:"description,omitempty"`
GroupID int64 `json:"group_id"`
PushEvents bool `json:"push_events"`
TagPushEvents bool `json:"tag_push_events"`
MergeRequestsEvents bool `json:"merge_requests_events"`
IssuesEvents bool `json:"issues_events"`
NoteEvents bool `json:"note_events"`
JobEvents bool `json:"job_events"`
PipelineEvents bool `json:"pipeline_events"`
WikiPageEvents bool `json:"wiki_page_events"`
DeploymentEvents bool `json:"deployment_events"`
ReleasesEvents bool `json:"releases_events"`
SubGroupEvents bool `json:"subgroup_events"`
MemberEvents bool `json:"member_events"`
ConfidentialIssuesEvents bool `json:"confidential_issues_events"`
ConfidentialNoteEvents bool `json:"confidential_note_events"`
EnableSSLVerification bool `json:"enable_ssl_verification"`
AlertStatus string `json:"alert_status,omitempty"`
DisabledUntil string `json:"disabled_until,omitempty"`
URLVariables []HookURLVariable `json:"url_variables,omitempty"`
FeatureFlagEvents bool `json:"feature_flag_events"`
MilestoneEvents bool `json:"milestone_events"`
VulnerabilityEvents bool `json:"vulnerability_events"`
EmojiEvents bool `json:"emoji_events"`
ResourceAccessTokenEvents bool `json:"resource_access_token_events"`
ProjectEvents bool `json:"project_events"`
PushEventsBranchFilter string `json:"push_events_branch_filter,omitempty"`
BranchFilterStrategy string `json:"branch_filter_strategy,omitempty"`
TokenPresent bool `json:"token_present"`
SigningTokenPresent bool `json:"signing_token_present"`
CreatedAt string `json:"created_at,omitempty"`
CustomWebhookTemplate string `json:"custom_webhook_template,omitempty"`
CustomHeaders []HookCustomHeaderOutput `json:"custom_headers,omitempty"`
}
HookOutput represents a GitLab group webhook.
func AddHook ¶
func AddHook(ctx context.Context, client *gitlabclient.Client, input AddHookInput) (HookOutput, error)
AddHook adds a new webhook to a group. Requires the webhook URL.
func EditHook ¶
func EditHook(ctx context.Context, client *gitlabclient.Client, input EditHookInput) (HookOutput, error)
EditHook updates an existing group webhook configuration.
func GetHook ¶
func GetHook(ctx context.Context, client *gitlabclient.Client, input GetHookInput) (HookOutput, error)
GetHook retrieves a single group webhook by its ID.
type HookURLVariable ¶
HookURLVariable represents a templated webhook URL variable used to substitute placeholders like {var_name} in a webhook URL with secret values resolved server-side. Mirrors gl.HookURLVariable (Key + Value); the value is write-only and masked on read, so it is omitted unless GitLab returns it.
type InvitedListInput ¶ added in v2.3.0
type InvitedListInput struct {
GroupID toolutil.StringOrInt `json:"group_id" jsonschema:"Group ID or URL-encoded path,required"`
Search string `json:"search,omitempty" jsonschema:"Filter invited groups by name or path"`
MinAccessLevel int `` /* 148-byte string literal not displayed */
Relation []string `json:"relation,omitempty" jsonschema:"Filter by relation (direct, inherited)"`
WithCustomAttributes bool `json:"with_custom_attributes,omitempty" jsonschema:"Include custom attributes in the response"`
OrderBy string `json:"order_by,omitempty" jsonschema:"Order invited groups by field (name, path, id)"`
Sort string `json:"sort,omitempty" jsonschema:"Sort direction (asc, desc)"`
toolutil.PaginationInput
toolutil.KeysetPaginationInput
}
InvitedListInput defines parameters for listing groups invited to a group.
type LDAPGroupLinkOutput ¶ added in v2.3.0
type LDAPGroupLinkOutput struct {
CN string `json:"cn"`
Filter string `json:"filter,omitempty"`
GroupAccess int `json:"group_access"`
Provider string `json:"provider"`
MemberRoleID int64 `json:"member_role_id,omitempty"`
}
LDAPGroupLinkOutput mirrors gl.LDAPGroupLink (an ldap_group_links entry).
type ListHooksInput ¶
type ListHooksInput struct {
GroupID toolutil.StringOrInt `json:"group_id" jsonschema:"Group ID or URL-encoded path,required"`
OrderBy string `json:"order_by,omitempty" jsonschema:"Order hooks by field (id)"`
Sort string `json:"sort,omitempty" jsonschema:"Sort direction (asc, desc)"`
toolutil.PaginationInput
toolutil.KeysetPaginationInput
}
ListHooksInput defines parameters for listing group hooks.
type ListInput ¶
type ListInput struct {
Search string `json:"search,omitempty" jsonschema:"Filter groups by name or path"`
Owned bool `json:"owned,omitempty" jsonschema:"Limit to groups explicitly owned by the authenticated user"`
TopLevelOnly bool `json:"top_level_only,omitempty" jsonschema:"Limit to top-level groups (exclude subgroups)"`
OrderBy string `json:"order_by,omitempty" jsonschema:"Order groups by field (name, path, id, similarity)"`
Sort string `json:"sort,omitempty" jsonschema:"Sort direction (asc, desc)"`
Visibility string `json:"visibility,omitempty" jsonschema:"Filter by visibility (public, internal, private)"`
AllAvailable bool `json:"all_available,omitempty" jsonschema:"Show all groups accessible by the authenticated user"`
Statistics bool `json:"statistics,omitempty" jsonschema:"Include group statistics (storage, counts)"`
WithCustomAttributes bool `json:"with_custom_attributes,omitempty" jsonschema:"Include custom attributes in the response"`
SkipGroups []int64 `json:"skip_groups,omitempty" jsonschema:"Group IDs to exclude from results"`
MinAccessLevel int `` /* 131-byte string literal not displayed */
RepositoryStorage string `json:"repository_storage,omitempty" jsonschema:"Filter by repository storage shard (administrators only)"`
Active *bool `json:"active,omitempty" jsonschema:"Filter by active (true) or inactive/archived (false) groups"`
Archived *bool `json:"archived,omitempty" jsonschema:"Limit to archived groups (true) or non-archived (false)"`
MarkedForDeletionOn string `json:"marked_for_deletion_on,omitempty" jsonschema:"Filter to groups marked for deletion on this date (YYYY-MM-DD)"`
toolutil.PaginationInput
toolutil.KeysetPaginationInput
}
ListInput defines parameters for listing groups.
type ListOutput ¶
type ListOutput struct {
toolutil.HintableOutput
Groups []Output `json:"groups"`
Pagination toolutil.PaginationOutput `json:"pagination"`
}
ListOutput holds a paginated list of groups.
func InvitedList ¶ added in v2.3.0
func InvitedList(ctx context.Context, client *gitlabclient.Client, input InvitedListInput) (ListOutput, error)
InvitedList lists the groups invited to the given group.
func List ¶
func List(ctx context.Context, client *gitlabclient.Client, input ListInput) (ListOutput, error)
List retrieves a paginated list of GitLab groups visible to the authenticated user. Supports filtering by search term, ownership, and top-level-only restriction. Returns the groups with pagination metadata.
func Search ¶
func Search(ctx context.Context, client *gitlabclient.Client, input SearchInput) (ListOutput, error)
Search searches for groups by query string.
func SharedWithList ¶ added in v2.3.0
func SharedWithList(ctx context.Context, client *gitlabclient.Client, input SharedWithListInput) (ListOutput, error)
SharedWithList lists the groups that have been shared with the given group.
func SubgroupsList ¶
func SubgroupsList(ctx context.Context, client *gitlabclient.Client, input SubgroupsListInput) (ListOutput, error)
SubgroupsList retrieves a paginated list of descendant groups (subgroups) for a given parent group. Supports filtering by search term and pagination. Returns the subgroups with pagination metadata.
type ListProjectsInput ¶
type ListProjectsInput struct {
GroupID toolutil.StringOrInt `json:"group_id" jsonschema:"Group ID or URL-encoded path,required"`
Search string `json:"search,omitempty" jsonschema:"Filter projects by name"`
Archived *bool `json:"archived,omitempty" jsonschema:"Filter archived projects"`
Visibility string `json:"visibility,omitempty" jsonschema:"Filter by visibility (public, internal, private)"`
OrderBy string `` /* 131-byte string literal not displayed */
Sort string `json:"sort,omitempty" jsonschema:"Sort direction (asc, desc)"`
Simple bool `json:"simple,omitempty" jsonschema:"Return limited fields"`
Owned bool `json:"owned,omitempty" jsonschema:"Limit to projects owned by current user"`
Starred bool `json:"starred,omitempty" jsonschema:"Limit to starred projects"`
IncludeSubGroups bool `json:"include_subgroups,omitempty" jsonschema:"Include projects in subgroups"`
Active *bool `json:"active,omitempty" jsonschema:"Filter by active (true) or inactive/archived (false) projects"`
MinAccessLevel int `` /* 171-byte string literal not displayed */
Topic string `json:"topic,omitempty" jsonschema:"Filter projects by topic"`
WithCustomAttributes bool `json:"with_custom_attributes,omitempty" jsonschema:"Include custom attributes in the response"`
WithIssuesEnabled *bool `json:"with_issues_enabled,omitempty" jsonschema:"Limit to projects with issues enabled"`
WithMergeRequestsEnabled *bool `json:"with_merge_requests_enabled,omitempty" jsonschema:"Limit to projects with merge requests enabled"`
WithSecurityReports *bool `json:"with_security_reports,omitempty" jsonschema:"Limit to projects with security reports (Ultimate)"`
toolutil.PaginationInput
toolutil.KeysetPaginationInput
}
ListProjectsInput defines parameters for listing group projects.
type ListProjectsOutput ¶
type ListProjectsOutput struct {
toolutil.HintableOutput
Projects []ProjectItem `json:"projects"`
Pagination toolutil.PaginationOutput `json:"pagination"`
}
ListProjectsOutput holds a paginated list of group projects.
func ListProjects ¶
func ListProjects(ctx context.Context, client *gitlabclient.Client, input ListProjectsInput) (ListProjectsOutput, error)
ListProjects retrieves projects belonging to a group.
type ListProvisionedUsersInput ¶ added in v2.3.0
type ListProvisionedUsersInput struct {
GroupID toolutil.StringOrInt `json:"group_id" jsonschema:"Group ID or URL-encoded path,required"`
Username string `json:"username,omitempty" jsonschema:"Filter provisioned users by exact username"`
Search string `json:"search,omitempty" jsonschema:"Search provisioned users by name, username, or email"`
Active *bool `json:"active,omitempty" jsonschema:"Filter to active (true) or inactive (false) users"`
Blocked *bool `json:"blocked,omitempty" jsonschema:"Filter to blocked (true) or unblocked (false) users"`
CreatedAfter string `json:"created_after,omitempty" jsonschema:"Return users created after this RFC3339 timestamp (e.g. 2024-01-02T15:04:05Z)"`
CreatedBefore string `json:"created_before,omitempty" jsonschema:"Return users created before this RFC3339 timestamp (e.g. 2024-12-31T23:59:59Z)"`
OrderBy string `json:"order_by,omitempty" jsonschema:"Column to order provisioned users by (e.g. id, name, username, created_at, updated_at)"`
Sort string `json:"sort,omitempty" jsonschema:"Sort direction: asc or desc"`
toolutil.PaginationInput
toolutil.KeysetPaginationInput
}
ListProvisionedUsersInput defines parameters for listing the users provisioned for a group through SAML/SCIM. Mirrors gl.ListProvisionedUsersOptions filters plus offset and keyset pagination.
type ListSharedProjectsInput ¶ added in v2.3.0
type ListSharedProjectsInput struct {
}
ListSharedProjectsInput defines parameters for listing projects shared with a group.
type MemberListOutput ¶
type MemberListOutput struct {
toolutil.HintableOutput
Members []MemberOutput `json:"members"`
Pagination toolutil.PaginationOutput `json:"pagination"`
}
MemberListOutput holds a paginated list of group members.
func MembersList ¶
func MembersList(ctx context.Context, client *gitlabclient.Client, input MembersListInput) (MemberListOutput, error)
MembersList retrieves all members of a GitLab group, including inherited members from parent groups. Supports filtering by name or username and pagination. Returns the member list with pagination metadata.
type MemberOutput ¶
type MemberOutput struct {
ID int64 `json:"id"`
Username string `json:"username"`
Name string `json:"name"`
State string `json:"state"`
AvatarURL string `json:"avatar_url,omitempty"`
AccessLevel int `json:"access_level"`
WebURL string `json:"web_url"`
CreatedAt string `json:"created_at,omitempty"`
CreatedBy *MemberUserOutput `json:"created_by,omitempty"`
ExpiresAt string `json:"expires_at,omitempty"`
Email string `json:"email,omitempty"`
PublicEmail string `json:"public_email,omitempty"`
GroupSAMLIdentity *SAMLIdentityOutput `json:"group_saml_identity,omitempty"`
MemberRole *MemberRoleOutput `json:"member_role,omitempty"`
IsUsingSeat bool `json:"is_using_seat,omitempty"`
}
MemberOutput represents a GitLab group member.
Fields mirror gl.GroupMember (1:1 audit policy: full nested objects). The created_by, group_saml_identity, and member_role sub-objects are surfaced as full local mirrors on their canonical json keys (C-IMPORTS: replicated here rather than imported from sibling packages to preserve the zero-import-cycle constraint).
func MemberToOutput ¶
func MemberToOutput(m *gl.GroupMember) MemberOutput
MemberToOutput converts a GitLab API gl.GroupMember to the MCP tool output format, surfacing the full created_by, group_saml_identity, and member_role sub-objects (1:1 audit policy: full nested objects).
type MemberRoleOutput ¶ added in v2.3.0
type MemberRoleOutput = toolutil.MemberRoleOutput
MemberRoleOutput mirrors gl.MemberRole (the member_role object). Custom member roles are an Enterprise (Premium/Ultimate) feature; the object is nil on instances or members without a custom role. Canonical shape shared via toolutil.
type MemberUserOutput ¶ added in v2.3.0
type MemberUserOutput = toolutil.MemberUserOutput
MemberUserOutput mirrors gl.MemberCreatedBy (the created_by object); canonical shape shared via toolutil.
type MembersListInput ¶
type MembersListInput struct {
GroupID toolutil.StringOrInt `json:"group_id" jsonschema:"Group ID or URL-encoded path,required"`
Query string `json:"query,omitempty" jsonschema:"Filter members by name or username"`
UserIDs []int64 `json:"user_ids,omitempty" jsonschema:"Filter the result to the given user IDs"`
ShowSeatInfo *bool `json:"show_seat_info,omitempty" jsonschema:"Include seat information for each member (Premium/Ultimate)"`
OrderBy string `json:"order_by,omitempty" jsonschema:"Order members by field (id, name, username, access_level, last_activity_on)"`
Sort string `json:"sort,omitempty" jsonschema:"Sort direction (asc, desc)"`
toolutil.PaginationInput
toolutil.KeysetPaginationInput
}
MembersListInput defines parameters for listing group members.
type Output ¶
type Output struct {
toolutil.HintableOutput
ID int64 `json:"id"`
Name string `json:"name"`
Path string `json:"path"`
FullPath string `json:"full_path"`
FullName string `json:"full_name,omitempty"`
Description string `json:"description,omitempty"`
Visibility string `json:"visibility"`
WebURL string `json:"web_url"`
ParentID int64 `json:"parent_id,omitempty"`
OrganizationID int64 `json:"organization_id,omitempty"`
DefaultBranch string `json:"default_branch,omitempty"`
RequestAccessEnabled bool `json:"request_access_enabled"`
CreatedAt string `json:"created_at,omitempty"`
MarkedForDeletion string `json:"marked_for_deletion_on,omitempty"`
AvatarURL string `json:"avatar_url,omitempty"`
ProjectCreationLevel string `json:"project_creation_level,omitempty"`
SubGroupCreationLevel string `json:"subgroup_creation_level,omitempty"`
LFSEnabled bool `json:"lfs_enabled"`
// Fields added in client-go v2.41.0.
Archived bool `json:"archived"`
PreventSharingGroupsOutsideHierarchy bool `json:"prevent_sharing_groups_outside_hierarchy"`
EnabledGitAccessProtocol string `json:"enabled_git_access_protocol,omitempty"`
MathRenderingLimitsEnabled bool `json:"math_rendering_limits_enabled"`
LockMathRenderingLimitsEnabled bool `json:"lock_math_rendering_limits_enabled"`
DuoAvailability string `json:"duo_availability,omitempty" tier:"premium"`
DuoFeaturesEnabled bool `json:"duo_features_enabled" tier:"premium"`
LockDuoFeaturesEnabled bool `json:"lock_duo_features_enabled" tier:"premium"`
ExperimentFeaturesEnabled bool `json:"experiment_features_enabled" tier:"premium"`
// Remaining gl.Group fields (1:1 audit).
MembershipLock bool `json:"membership_lock" tier:"premium"`
MaxArtifactsSize int64 `json:"max_artifacts_size,omitempty"`
DefaultBranchProtectionDefaults *BranchProtectionDefaults `json:"default_branch_protection_defaults,omitempty"`
RepositoryStorage string `json:"repository_storage,omitempty" tier:"premium"`
FileTemplateProjectID int64 `json:"file_template_project_id,omitempty" tier:"premium"`
Statistics *StatisticsOutput `json:"statistics,omitempty"`
CustomAttributes []CustomAttributeOutput `json:"custom_attributes,omitempty"`
RequireTwoFactorAuth bool `json:"require_two_factor_authentication"`
TwoFactorGracePeriod int64 `json:"two_factor_grace_period,omitempty"`
AutoDevopsEnabled bool `json:"auto_devops_enabled"`
EmailsEnabled bool `json:"emails_enabled"`
EmailsDisabled bool `json:"emails_disabled"`
MentionsDisabled bool `json:"mentions_disabled"`
RunnersToken string `json:"runners_token,omitempty"`
LDAPCN string `json:"ldap_cn,omitempty" tier:"premium"`
LDAPAccess int `json:"ldap_access,omitempty" tier:"premium"`
LDAPGroupLinks []LDAPGroupLinkOutput `json:"ldap_group_links,omitempty"`
SAMLGroupLinks []SAMLGroupLinkOutput `json:"saml_group_links,omitempty"`
PreventForkingOutsideGroup bool `json:"prevent_forking_outside_group" tier:"premium"`
IPRestrictionRanges string `json:"ip_restriction_ranges,omitempty" tier:"premium"`
AllowedEmailDomainsList string `json:"allowed_email_domains_list,omitempty" tier:"premium"`
WikiAccessLevel string `json:"wiki_access_level,omitempty" tier:"premium"`
OnlyAllowMergeIfPipelineSucceeds bool `json:"only_allow_merge_if_pipeline_succeeds" tier:"premium"`
AllowMergeOnSkippedPipeline bool `json:"allow_merge_on_skipped_pipeline" tier:"premium"`
OnlyAllowMergeIfAllDiscussionsAreResolved bool `json:"only_allow_merge_if_all_discussions_are_resolved" tier:"premium"`
DefaultBranchProtection int64 `json:"default_branch_protection,omitempty"`
Projects []ProjectItem `json:"projects,omitempty"`
}
Output represents a GitLab group.
Fields mirror gl.Group (1:1 audit policy: full nested objects). Nested sub-objects (statistics, custom_attributes, default_branch_protection_defaults, shared_with_groups, ldap_group_links, saml_group_links, projects, shared_projects) are surfaced as full local mirrors on their canonical json keys (C-IMPORTS: replicated here rather than imported from sibling packages to preserve the zero-import-cycle constraint).
func Create ¶
func Create(ctx context.Context, client *gitlabclient.Client, input CreateInput) (Output, error)
Create creates a new GitLab group.
func Get ¶
Get retrieves a single GitLab group by its ID or URL-encoded path. Returns the group details or an error if the group is not found.
func Restore ¶
func Restore(ctx context.Context, client *gitlabclient.Client, input RestoreInput) (Output, error)
Restore restores a group that was marked for deletion.
func ToOutput ¶
ToOutput converts a GitLab API gl.Group to the MCP tool output format, extracting identifier, path, visibility, and parent information.
func TransferProject ¶
func TransferProject(ctx context.Context, client *gitlabclient.Client, input TransferInput) (Output, error)
TransferProject transfers a project into the group namespace.
func TransferSubGroup ¶ added in v2.3.0
func TransferSubGroup(ctx context.Context, client *gitlabclient.Client, input TransferSubGroupInput) (Output, error)
TransferSubGroup moves a group under a new parent group, or promotes a subgroup to a top-level group when parent_id is omitted.
func Update ¶
func Update(ctx context.Context, client *gitlabclient.Client, input UpdateInput) (Output, error)
Update modifies an existing GitLab group.
func UploadAvatar ¶ added in v2.3.0
func UploadAvatar(ctx context.Context, client *gitlabclient.Client, input UploadAvatarInput) (Output, error)
UploadAvatar uploads or replaces the avatar for a group.
It accepts either file_path (a local file the MCP server reads) or content_base64 (base64-encoded bytes), exactly one of which must be set, and streams the image to the GitLab Groups UploadAvatar endpoint as a multipart upload. The updated group is returned in the full group output shape.
type ProjectItem ¶
type ProjectItem struct {
ID int64 `json:"id"`
Name string `json:"name"`
PathWithNamespace string `json:"path_with_namespace"`
Description string `json:"description,omitempty"`
Visibility string `json:"visibility"`
WebURL string `json:"web_url"`
DefaultBranch string `json:"default_branch,omitempty"`
Archived bool `json:"archived"`
CreatedAt string `json:"created_at,omitempty"`
}
ProjectItem is a simplified project representation for group context.
type ProvisionedUserBasicUser ¶ added in v2.3.0
type ProvisionedUserBasicUser struct {
ID int64 `json:"id"`
Username string `json:"username"`
Name string `json:"name"`
State string `json:"state,omitempty"`
CreatedAt string `json:"created_at,omitempty"`
AvatarURL string `json:"avatar_url,omitempty"`
WebURL string `json:"web_url,omitempty"`
}
ProvisionedUserBasicUser mirrors gl.BasicUser (the created_by object).
type ProvisionedUserCustomAttribute ¶ added in v2.3.0
ProvisionedUserCustomAttribute mirrors gl.CustomAttribute (custom_attributes).
type ProvisionedUserIdentity ¶ added in v2.3.0
type ProvisionedUserIdentity struct {
Provider string `json:"provider"`
ExternUID string `json:"extern_uid"`
}
ProvisionedUserIdentity mirrors gl.UserIdentity (the identities object).
type ProvisionedUserOutput ¶ added in v2.3.0
type ProvisionedUserOutput struct {
ID int64 `json:"id"`
Username string `json:"username"`
Email string `json:"email,omitempty"`
Name string `json:"name"`
State string `json:"state"`
WebURL string `json:"web_url,omitempty"`
CreatedAt string `json:"created_at,omitempty"`
Bio string `json:"bio,omitempty"`
Bot bool `json:"bot,omitempty"`
Location string `json:"location,omitempty"`
PublicEmail string `json:"public_email,omitempty"`
Skype string `json:"skype,omitempty"`
Linkedin string `json:"linkedin,omitempty"`
Twitter string `json:"twitter,omitempty"`
WebsiteURL string `json:"website_url,omitempty"`
Organization string `json:"organization,omitempty"`
JobTitle string `json:"job_title,omitempty"`
ExternUID string `json:"extern_uid,omitempty"`
Provider string `json:"provider,omitempty"`
ThemeID int64 `json:"theme_id,omitempty"`
LastActivityOn string `json:"last_activity_on,omitempty"`
ColorSchemeID int64 `json:"color_scheme_id,omitempty"`
IsAdmin bool `json:"is_admin,omitempty"`
IsAuditor bool `json:"is_auditor,omitempty"`
AvatarURL string `json:"avatar_url,omitempty"`
CanCreateGroup bool `json:"can_create_group,omitempty"`
CanCreateProject bool `json:"can_create_project,omitempty"`
CanCreateOrganization bool `json:"can_create_organization,omitempty"`
ProjectsLimit int64 `json:"projects_limit,omitempty"`
CurrentSignInAt string `json:"current_sign_in_at,omitempty"`
CurrentSignInIP string `json:"current_sign_in_ip,omitempty"`
LastSignInAt string `json:"last_sign_in_at,omitempty"`
LastSignInIP string `json:"last_sign_in_ip,omitempty"`
ConfirmedAt string `json:"confirmed_at,omitempty"`
TwoFactorEnabled bool `json:"two_factor_enabled,omitempty"`
Note string `json:"note,omitempty"`
Identities []ProvisionedUserIdentity `json:"identities,omitempty"`
SCIMIdentities []ProvisionedUserSCIMIdentity `json:"scim_identities,omitempty"`
External bool `json:"external,omitempty"`
PrivateProfile bool `json:"private_profile,omitempty"`
UsingLicenseSeat bool `json:"using_license_seat,omitempty"`
CustomAttributes []ProvisionedUserCustomAttribute `json:"custom_attributes,omitempty"`
NamespaceID int64 `json:"namespace_id,omitempty"`
Locked bool `json:"locked,omitempty"`
CreatedBy *ProvisionedUserBasicUser `json:"created_by,omitempty"`
}
ProvisionedUserOutput mirrors gl.User 1:1 for users provisioned through SAML/SCIM. Nested identities (identities, scim_identities, custom_attributes, created_by) are surfaced as full local mirrors on their canonical json keys (C-IMPORTS: replicated here rather than imported from sibling packages to preserve the zero-import-cycle constraint).
func ProvisionedUserToOutput ¶ added in v2.3.0
func ProvisionedUserToOutput(u *gl.User) ProvisionedUserOutput
ProvisionedUserToOutput converts a gl.User to the full provisioned-user output shape (1:1 audit policy: full nested objects).
type ProvisionedUserSCIMIdentity ¶ added in v2.3.0
type ProvisionedUserSCIMIdentity struct {
ExternUID string `json:"extern_uid"`
GroupID int64 `json:"group_id"`
Active bool `json:"active"`
}
ProvisionedUserSCIMIdentity mirrors gl.SCIMIdentity (the scim_identities object).
type ProvisionedUsersListOutput ¶ added in v2.3.0
type ProvisionedUsersListOutput struct {
toolutil.HintableOutput
Users []ProvisionedUserOutput `json:"users"`
Pagination toolutil.PaginationOutput `json:"pagination"`
}
ProvisionedUsersListOutput holds a paginated list of provisioned users.
func ListProvisionedUsers ¶ added in v2.3.0
func ListProvisionedUsers(ctx context.Context, client *gitlabclient.Client, input ListProvisionedUsersInput) (ProvisionedUsersListOutput, error)
ListProvisionedUsers lists the users provisioned for a group through SAML/SCIM (Premium/Ultimate). Supports username/search/active/blocked/created_after/ created_before filters plus offset and keyset pagination.
type PushRuleOutput ¶ added in v2.3.0
type PushRuleOutput struct {
toolutil.HintableOutput
ID int64 `json:"id"`
CommitMessageRegex string `json:"commit_message_regex,omitempty"`
CommitMessageNegativeRegex string `json:"commit_message_negative_regex,omitempty"`
BranchNameRegex string `json:"branch_name_regex,omitempty"`
DenyDeleteTag bool `json:"deny_delete_tag"`
MemberCheck bool `json:"member_check"`
PreventSecrets bool `json:"prevent_secrets"`
AuthorEmailRegex string `json:"author_email_regex,omitempty"`
FileNameRegex string `json:"file_name_regex,omitempty"`
MaxFileSize int64 `json:"max_file_size"`
CommitCommitterCheck bool `json:"commit_committer_check"`
CommitCommitterNameCheck bool `json:"commit_committer_name_check"`
RejectUnsignedCommits bool `json:"reject_unsigned_commits"`
RejectNonDCOCommits bool `json:"reject_non_dco_commits"`
CreatedAt string `json:"created_at,omitempty"`
}
PushRuleOutput represents a group's push-rule configuration. It mirrors gl.GroupPushRules 1:1 (1:1 audit output-fidelity policy).
func AddPushRule ¶ added in v2.3.0
func AddPushRule(ctx context.Context, client *gitlabclient.Client, input AddPushRuleInput) (PushRuleOutput, error)
AddPushRule adds push-rule configuration to a group.
func EditPushRule ¶ added in v2.3.0
func EditPushRule(ctx context.Context, client *gitlabclient.Client, input EditPushRuleInput) (PushRuleOutput, error)
EditPushRule modifies the push-rule configuration for a group.
func GetPushRules ¶ added in v2.3.0
func GetPushRules(ctx context.Context, client *gitlabclient.Client, input GetPushRulesInput) (PushRuleOutput, error)
GetPushRules retrieves the push-rule configuration for a group.
type ResendHookEventInput ¶ added in v2.3.0
type ResendHookEventInput struct {
GroupID toolutil.StringOrInt `json:"group_id" jsonschema:"Group ID or URL-encoded path,required"`
HookID int64 `json:"hook_id" jsonschema:"Webhook ID,required"`
HookEventID int64 `json:"hook_event_id" jsonschema:"ID of the hook event to resend,required"`
}
ResendHookEventInput defines parameters for resending a group hook event.
type RestoreInput ¶
type RestoreInput struct {
GroupID toolutil.StringOrInt `json:"group_id" jsonschema:"Group ID or URL-encoded path,required"`
}
RestoreInput defines parameters for restoring a group marked for deletion.
type SAMLGroupLinkOutput ¶ added in v2.3.0
type SAMLGroupLinkOutput struct {
Name string `json:"name"`
AccessLevel int `json:"access_level"`
MemberRoleID int64 `json:"member_role_id,omitempty"`
Provider string `json:"provider,omitempty"`
}
SAMLGroupLinkOutput mirrors gl.SAMLGroupLink (a saml_group_links entry).
type SAMLIdentityOutput ¶ added in v2.3.0
type SAMLIdentityOutput = toolutil.SAMLIdentityOutput
SAMLIdentityOutput mirrors gl.GroupMemberSAMLIdentity (the group_saml_identity object); canonical shape shared via toolutil.
type SearchInput ¶
type SearchInput struct {
Query string `json:"query" jsonschema:"Search query string,required"`
}
SearchInput defines parameters for searching groups.
type SetHookCustomHeaderInput ¶ added in v2.3.0
type SetHookCustomHeaderInput struct {
GroupID toolutil.StringOrInt `json:"group_id" jsonschema:"Group ID or URL-encoded path,required"`
HookID int64 `json:"hook_id" jsonschema:"Webhook ID,required"`
Key string `json:"key" jsonschema:"Custom header key name,required"`
Value string `json:"value" jsonschema:"Custom header value (write-only),required"`
}
SetHookCustomHeaderInput defines parameters for setting a custom header on a group webhook.
type SetHookURLVariableInput ¶ added in v2.3.0
type SetHookURLVariableInput struct {
GroupID toolutil.StringOrInt `json:"group_id" jsonschema:"Group ID or URL-encoded path,required"`
HookID int64 `json:"hook_id" jsonschema:"Webhook ID,required"`
Key string `` /* 131-byte string literal not displayed */
Value string `json:"value" jsonschema:"URL variable value (write-only) — must be non-empty,required"`
}
SetHookURLVariableInput defines parameters for setting a URL variable on a group webhook.
type ShareGroupInput ¶ added in v2.3.0
type ShareGroupInput struct {
}
ShareGroupInput defines parameters for sharing a group with another group.
type ShareGroupOutput ¶ added in v2.3.0
type ShareGroupOutput struct {
}
ShareGroupOutput holds the result of sharing a group with another group.
func ShareGroupWithGroup ¶ added in v2.3.0
func ShareGroupWithGroup(ctx context.Context, client *gitlabclient.Client, input ShareGroupInput) (ShareGroupOutput, error)
ShareGroupWithGroup shares a group with another group.
type SharedProjectsListOutput ¶ added in v2.3.0
type SharedProjectsListOutput struct {
}
SharedProjectsListOutput holds a paginated list of projects shared with a group.
func ListSharedProjects ¶ added in v2.3.0
func ListSharedProjects(ctx context.Context, client *gitlabclient.Client, input ListSharedProjectsInput) (SharedProjectsListOutput, error)
ListSharedProjects retrieves projects shared with a group.
type SharedWithGroupOutput ¶ added in v2.3.0
type SharedWithGroupOutput struct {
}
SharedWithGroupOutput mirrors gl.SharedWithGroup (a shared_with_groups entry).
type SharedWithListInput ¶ added in v2.3.0
type SharedWithListInput struct {
}
SharedWithListInput defines parameters for listing groups shared with a group.
type StatisticsOutput ¶ added in v2.3.0
type StatisticsOutput struct {
CommitCount int64 `json:"commit_count"`
StorageSize int64 `json:"storage_size"`
RepositorySize int64 `json:"repository_size"`
WikiSize int64 `json:"wiki_size"`
LFSObjectsSize int64 `json:"lfs_objects_size"`
JobArtifactsSize int64 `json:"job_artifacts_size"`
PipelineArtifactsSize int64 `json:"pipeline_artifacts_size"`
PackagesSize int64 `json:"packages_size"`
SnippetsSize int64 `json:"snippets_size"`
UploadsSize int64 `json:"uploads_size"`
ContainerRegistrySize int64 `json:"container_registry_size"`
}
StatisticsOutput mirrors gl.Statistics (the statistics object, returned when statistics=true is requested by an Owner).
type SubgroupsListInput ¶
type SubgroupsListInput struct {
GroupID toolutil.StringOrInt `json:"group_id" jsonschema:"Group ID or URL-encoded path,required"`
Search string `json:"search,omitempty" jsonschema:"Filter subgroups by name or path"`
AllAvailable bool `json:"all_available,omitempty" jsonschema:"Show all subgroups accessible by the authenticated user"`
Owned bool `json:"owned,omitempty" jsonschema:"Limit to subgroups explicitly owned by the authenticated user"`
MinAccessLevel int `` /* 237-byte string literal not displayed */
OrderBy string `json:"order_by,omitempty" jsonschema:"Order subgroups by field (name, path, id, similarity)"`
Sort string `json:"sort,omitempty" jsonschema:"Sort direction (asc, desc)"`
Statistics bool `json:"statistics,omitempty" jsonschema:"Include group statistics (storage, counts)"`
Visibility string `json:"visibility,omitempty" jsonschema:"Filter by visibility (public, internal, private)"`
TopLevelOnly bool `json:"top_level_only,omitempty" jsonschema:"Limit to top-level subgroups (exclude nested descendants)"`
WithCustomAttributes bool `json:"with_custom_attributes,omitempty" jsonschema:"Include custom attributes in the response"`
SkipGroups []int64 `json:"skip_groups,omitempty" jsonschema:"Group IDs to exclude from results"`
RepositoryStorage string `json:"repository_storage,omitempty" jsonschema:"Filter by repository storage shard (administrators only)"`
Active *bool `json:"active,omitempty" jsonschema:"Filter by active (true) or inactive/archived (false) subgroups"`
Archived *bool `json:"archived,omitempty" jsonschema:"Limit to archived subgroups (true) or non-archived (false)"`
MarkedForDeletionOn string `json:"marked_for_deletion_on,omitempty" jsonschema:"Filter to subgroups marked for deletion on this date (YYYY-MM-DD)"`
toolutil.PaginationInput
toolutil.KeysetPaginationInput
}
SubgroupsListInput defines parameters for listing subgroups.
type TestHookInput ¶ added in v2.3.0
type TestHookInput struct {
GroupID toolutil.StringOrInt `json:"group_id" jsonschema:"Group ID or URL-encoded path,required"`
HookID int64 `json:"hook_id" jsonschema:"Webhook ID,required"`
Trigger string `` /* 274-byte string literal not displayed */
}
TestHookInput defines parameters for triggering a test group hook event.
type TransferInput ¶
type TransferInput struct {
GroupID toolutil.StringOrInt `json:"group_id" jsonschema:"Group ID or URL-encoded path,required"`
ProjectID toolutil.StringOrInt `json:"project_id" jsonschema:"Project ID or URL-encoded path to transfer,required"`
}
TransferInput defines parameters for transferring a project to a group.
type TransferLocationOutput ¶ added in v2.3.0
type TransferLocationOutput struct {
ID int64 `json:"id"`
Name string `json:"name"`
FullName string `json:"full_name,omitempty"`
FullPath string `json:"full_path,omitempty"`
WebURL string `json:"web_url,omitempty"`
AvatarURL string `json:"avatar_url,omitempty"`
}
TransferLocationOutput represents a candidate parent group for a transfer.
type TransferLocationsListInput ¶ added in v2.3.0
type TransferLocationsListInput struct {
GroupID toolutil.StringOrInt `json:"group_id" jsonschema:"Group ID or URL-encoded path,required"`
Search string `json:"search,omitempty" jsonschema:"Filter candidate parent groups by name or path"`
OrderBy string `json:"order_by,omitempty" jsonschema:"Order candidate parent groups by field (name, path, id)"`
Sort string `json:"sort,omitempty" jsonschema:"Sort direction (asc, desc)"`
toolutil.PaginationInput
toolutil.KeysetPaginationInput
}
TransferLocationsListInput defines parameters for listing possible transfer locations.
type TransferLocationsListOutput ¶ added in v2.3.0
type TransferLocationsListOutput struct {
toolutil.HintableOutput
Locations []TransferLocationOutput `json:"locations"`
Pagination toolutil.PaginationOutput `json:"pagination"`
}
TransferLocationsListOutput holds a paginated list of transfer locations.
func TransferLocationsList ¶ added in v2.3.0
func TransferLocationsList(ctx context.Context, client *gitlabclient.Client, input TransferLocationsListInput) (TransferLocationsListOutput, error)
TransferLocationsList lists the parent groups available for transferring the given group.
type TransferSubGroupInput ¶ added in v2.3.0
type TransferSubGroupInput struct {
GroupID toolutil.StringOrInt `json:"group_id" jsonschema:"Group ID or URL-encoded path of the group to move,required"`
ParentID *int64 `json:"parent_id,omitempty" jsonschema:"ID of the new parent group; omit to turn the subgroup into a top-level group"`
}
TransferSubGroupInput defines parameters for transferring a group under a new parent group or to the top level.
type UnshareGroupInput ¶ added in v2.3.0
type UnshareGroupInput struct {
}
UnshareGroupInput defines parameters for revoking a group-to-group share.
type UpdateInput ¶
type UpdateInput struct {
GroupID toolutil.StringOrInt `json:"group_id" jsonschema:"Group ID or URL-encoded path,required"`
Name string `json:"name,omitempty" jsonschema:"Group name"`
Path string `json:"path,omitempty" jsonschema:"Group URL path"`
Description string `json:"description,omitempty" jsonschema:"Group description"`
Visibility string `json:"visibility,omitempty" jsonschema:"Visibility level (private, internal, public)"`
RequestAccessEnabled *bool `json:"request_access_enabled,omitempty" jsonschema:"Allow users to request access"`
LFSEnabled *bool `json:"lfs_enabled,omitempty" jsonschema:"Enable Git LFS"`
DefaultBranch string `json:"default_branch,omitempty" jsonschema:"Default branch name"`
MathRenderingLimitsEnabled *bool `json:"math_rendering_limits_enabled,omitempty" jsonschema:"Enable math rendering limits"`
WebBasedCommitSigningEnabled *bool `json:"web_based_commit_signing_enabled,omitempty" jsonschema:"Enable web-based commit signing for projects in this group"`
AllowPersonalSnippets *bool `json:"allow_personal_snippets,omitempty" jsonschema:"Allow members to create personal snippets"`
AutoDevopsEnabled *bool `json:"auto_devops_enabled,omitempty" jsonschema:"Enable Auto DevOps for projects in this group"`
DefaultBranchProtection *int64 `` /* 210-byte string literal not displayed */
DefaultBranchProtectionDefaults *BranchProtectionDefaultsInput `json:"default_branch_protection_defaults,omitempty" jsonschema:"Default branch protection settings object"`
DuoAvailability string `json:"duo_availability,omitempty" jsonschema:"GitLab Duo availability (default_on, default_off, never_on)"`
DuoFeaturesEnabled *bool `json:"duo_features_enabled,omitempty" jsonschema:"Enable GitLab Duo features"`
LockDuoFeaturesEnabled *bool `json:"lock_duo_features_enabled,omitempty" jsonschema:"Prevent subgroups from changing the Duo features setting"`
EmailsEnabled *bool `json:"emails_enabled,omitempty" jsonschema:"Enable email notifications"`
EmailsDisabled *bool `` /* 127-byte string literal not displayed */
EnabledGitAccessProtocol string `json:"enabled_git_access_protocol,omitempty" jsonschema:"Allowed Git access protocol (ssh, http, all)"`
ExperimentFeaturesEnabled *bool `json:"experiment_features_enabled,omitempty" jsonschema:"Enable experimental features"`
FileTemplateProjectID *int64 `` /* 134-byte string literal not displayed */
IPRestrictionRanges string `` /* 139-byte string literal not displayed */
AllowedEmailDomainsList string `` /* 141-byte string literal not displayed */
LockMathRenderingLimitsEnabled *bool `` /* 130-byte string literal not displayed */
MaxArtifactsSize *int64 `json:"max_artifacts_size,omitempty" jsonschema:"Maximum job artifacts size in MB (administrators only)"`
MembershipLock *bool `json:"membership_lock,omitempty" jsonschema:"Prevent members from being added to projects in this group"`
MentionsDisabled *bool `json:"mentions_disabled,omitempty" jsonschema:"Disable @-mention notifications"`
PreventForkingOutsideGroup *bool `` /* 126-byte string literal not displayed */
PreventSharingGroupsOutside *bool `json:"prevent_sharing_groups_outside_hierarchy,omitempty" jsonschema:"Prevent inviting groups outside this group's hierarchy"`
ProjectCreationLevel string `json:"project_creation_level,omitempty" jsonschema:"Who can create projects (noone, maintainer, developer)"`
RequireTwoFactorAuth *bool `json:"require_two_factor_authentication,omitempty" jsonschema:"Require two-factor authentication for members"`
SubGroupCreationLevel string `json:"subgroup_creation_level,omitempty" jsonschema:"Who can create subgroups (owner, maintainer)"`
StepUpAuthRequiredOAuthProvider string `json:"step_up_auth_required_oauth_provider,omitempty" jsonschema:"OAuth provider required for step-up authentication"`
TwoFactorGracePeriod *int64 `` /* 131-byte string literal not displayed */
WikiAccessLevel string `json:"wiki_access_level,omitempty" jsonschema:"Wiki access level (disabled, private, enabled)"`
OnlyAllowMergeIfPipelineSucceeds *bool `json:"only_allow_merge_if_pipeline_succeeds,omitempty" jsonschema:"Only allow merging when the pipeline succeeds"`
AllowMergeOnSkippedPipeline *bool `json:"allow_merge_on_skipped_pipeline,omitempty" jsonschema:"Allow merging when the pipeline is skipped"`
OnlyAllowMergeIfAllDiscussionsAreResolved *bool `` /* 131-byte string literal not displayed */
UniqueProjectDownloadLimit *int64 `` /* 178-byte string literal not displayed */
UniqueProjectDownloadLimitIntervalInSeconds *int64 `` /* 169-byte string literal not displayed */
UniqueProjectDownloadLimitAllowlist []string `` /* 166-byte string literal not displayed */
UniqueProjectDownloadLimitAlertlist []int64 `` /* 177-byte string literal not displayed */
AutoBanUserOnExcessiveProjectsDownload *bool `` /* 177-byte string literal not displayed */
}
UpdateInput defines parameters for updating a group.
type UploadAvatarInput ¶ added in v2.3.0
type UploadAvatarInput struct {
GroupID toolutil.StringOrInt `json:"group_id" jsonschema:"Group ID or URL-encoded path,required"`
Filename string `json:"filename" jsonschema:"Avatar filename (e.g. avatar.png),required"`
FilePath string `` /* 233-byte string literal not displayed */
ContentBase64 string `` /* 134-byte string literal not displayed */
}
UploadAvatarInput defines parameters for uploading a group avatar.
Exactly one of FilePath or ContentBase64 must be provided to supply the image bytes. This mirrors the project avatar upload tool: file_path reads a local file from the MCP server filesystem (suitable for large images), while content_base64 carries inline base64-encoded image content.