invites

package
v1.4.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 30, 2026 License: MIT Imports: 10 Imported by: 0

Documentation

Overview

Package invites implements MCP tools for GitLab invitation operations including listing pending invitations and inviting users to projects/groups.

markdown.go provides Markdown formatting functions for group/project invite MCP tool output.

register.go wires invites MCP tools to the MCP server.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func FormatInviteResultMarkdown

func FormatInviteResultMarkdown(out InviteResultOutput) *mcp.CallToolResult

FormatInviteResultMarkdown formats an invitation result as a Markdown CallToolResult.

func FormatInviteResultMarkdownString

func FormatInviteResultMarkdownString(out InviteResultOutput) string

FormatInviteResultMarkdownString renders an invitation result as a Markdown string.

func FormatListPendingMarkdown

func FormatListPendingMarkdown(out ListPendingInvitationsOutput) *mcp.CallToolResult

FormatListPendingMarkdown formats pending invitations as a Markdown CallToolResult.

func FormatListPendingMarkdownString

func FormatListPendingMarkdownString(out ListPendingInvitationsOutput) string

FormatListPendingMarkdownString renders pending invitations as a Markdown string.

func RegisterMeta

func RegisterMeta(server *mcp.Server, client *gitlabclient.Client)

RegisterMeta registers the gitlab_invite meta-tool.

func RegisterTools

func RegisterTools(server *mcp.Server, client *gitlabclient.Client)

RegisterTools registers individual invite tools.

Types

type GroupInvitesInput

type GroupInvitesInput struct {
	GroupID     toolutil.StringOrInt `json:"group_id" jsonschema:"Group ID or URL-encoded path,required"`
	Email       string               `json:"email,omitempty" jsonschema:"Email address to invite (either email or user_id required)"`
	UserID      int64                `json:"user_id,omitempty" jsonschema:"User ID to invite (either email or user_id required)"`
	AccessLevel int                  `json:"access_level" jsonschema:"Access level (10=Guest 20=Reporter 30=Developer 40=Maintainer 50=Owner),required"`
	ExpiresAt   string               `json:"expires_at,omitempty" jsonschema:"Expiration date for the invitation (YYYY-MM-DD)"`
}

GroupInvitesInput contains parameters for inviting a user to a group.

type InviteResultOutput

type InviteResultOutput struct {
	toolutil.HintableOutput
	Status  string            `json:"status"`
	Message map[string]string `json:"message,omitempty"`
}

InviteResultOutput represents the result of an invitation operation.

func GroupInvites

func GroupInvites(ctx context.Context, client *gitlabclient.Client, input GroupInvitesInput) (InviteResultOutput, error)

GroupInvites invites a user to a group by email or user ID.

func ProjectInvites

func ProjectInvites(ctx context.Context, client *gitlabclient.Client, input ProjectInvitesInput) (InviteResultOutput, error)

ProjectInvites invites a user to a project by email or user ID.

type ListPendingGroupInvitationsInput

type ListPendingGroupInvitationsInput struct {
	GroupID toolutil.StringOrInt `json:"group_id" jsonschema:"Group ID or URL-encoded path,required"`
	Query   string               `json:"query,omitempty" jsonschema:"Filter invitations by email or name"`
	Page    int64                `json:"page,omitempty" jsonschema:"Page number for pagination (default 1)"`
	PerPage int64                `json:"per_page,omitempty" jsonschema:"Number of items per page (default 20, max 100)"`
}

ListPendingGroupInvitationsInput contains parameters for listing pending group invitations.

type ListPendingInvitationsOutput

type ListPendingInvitationsOutput struct {
	toolutil.HintableOutput
	Invitations []PendingInviteOutput     `json:"invitations"`
	Pagination  toolutil.PaginationOutput `json:"pagination"`
}

ListPendingInvitationsOutput holds a paginated list of pending invitations.

func ListPendingGroupInvitations

func ListPendingGroupInvitations(ctx context.Context, client *gitlabclient.Client, input ListPendingGroupInvitationsInput) (ListPendingInvitationsOutput, error)

ListPendingGroupInvitations returns pending invitations for a group.

func ListPendingProjectInvitations

func ListPendingProjectInvitations(ctx context.Context, client *gitlabclient.Client, input ListPendingProjectInvitationsInput) (ListPendingInvitationsOutput, error)

ListPendingProjectInvitations returns pending invitations for a project.

type ListPendingProjectInvitationsInput

type ListPendingProjectInvitationsInput struct {
	ProjectID toolutil.StringOrInt `json:"project_id" jsonschema:"Project ID or URL-encoded path,required"`
	Query     string               `json:"query,omitempty" jsonschema:"Filter invitations by email or name"`
	Page      int64                `json:"page,omitempty" jsonschema:"Page number for pagination (default 1)"`
	PerPage   int64                `json:"per_page,omitempty" jsonschema:"Number of items per page (default 20, max 100)"`
}

ListPendingProjectInvitationsInput contains parameters for listing pending project invitations.

type PendingInviteOutput

type PendingInviteOutput struct {
	ID            int64  `json:"id"`
	InviteEmail   string `json:"invite_email"`
	CreatedAt     string `json:"created_at,omitempty"`
	AccessLevel   int    `json:"access_level"`
	ExpiresAt     string `json:"expires_at,omitempty"`
	UserName      string `json:"user_name,omitempty"`
	CreatedByName string `json:"created_by_name,omitempty"`
}

PendingInviteOutput represents a single pending invitation.

type ProjectInvitesInput

type ProjectInvitesInput struct {
	ProjectID   toolutil.StringOrInt `json:"project_id" jsonschema:"Project ID or URL-encoded path,required"`
	Email       string               `json:"email,omitempty" jsonschema:"Email address to invite (either email or user_id required)"`
	UserID      int64                `json:"user_id,omitempty" jsonschema:"User ID to invite (either email or user_id required)"`
	AccessLevel int                  `json:"access_level" jsonschema:"Access level (10=Guest 20=Reporter 30=Developer 40=Maintainer 50=Owner),required"`
	ExpiresAt   string               `json:"expires_at,omitempty" jsonschema:"Expiration date for the invitation (YYYY-MM-DD)"`
}

ProjectInvitesInput contains parameters for inviting a user to a project.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL