Help us shape the future of Go! Take the 2026 Go Developer Survey

settings

package
v3.2.0 Latest Latest
Warning

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

Go to latest
Published: Oct 9, 2026 License: MIT Imports: 13 Imported by: 0

Documentation

Overview

Package settings implements MCP tools for GitLab instance application settings.

The package wraps the GitLab Application settings API:

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func FormatGetMarkdown

func FormatGetMarkdown(out GetOutput) *mcp.CallToolResult

FormatGetMarkdown renders the application settings as a card.

func FormatUpdateMarkdown

func FormatUpdateMarkdown(out UpdateOutput) *mcp.CallToolResult

FormatUpdateMarkdown renders the settings an update returned as the same card: an update answers with the object, so it is a card like the read.

Types

type GetInput

type GetInput struct{}

GetInput is the input for getting application settings (no parameters needed).

type GetOutput

type GetOutput struct {
	toolutil.HintableOutput
	Settings map[string]any `json:"settings"`
}

GetOutput contains the application settings object GitLab answered with, as a JSON map keyed the way the instance spells it.

func Get

func Get(ctx context.Context, client *gitlabclient.Client, _ GetInput) (output GetOutput, err error)

Get retrieves the current application settings (admin-only).

The map is decoded from the captured response (ADR-0021) rather than from the settings struct client-go decoded, because this is the one endpoint whose whole value is "tell me everything this instance has set" and that struct is a model of the settings rather than the settings. Measured against the pinned live record (GitLab 19.3.1-ee), the entity exposes 648 field names and client-go's Settings carries 424: re-encoding the struct dropped 253 of the keys the instance sent and, since one field of the struct has omitempty, added 29 keys it never mentioned, each at a plausible zero value. So a model asking "is abuse notification configured?" read an empty string GitLab had not said anything about, and a setting newer than the SDK's struct answered "GitLab does not have that setting".

The SDK call is unchanged, so the route, the options and the retries stay what client-go makes them, and its own decode still refuses a body that is not the settings object before this reads the same bytes.

type UpdateInput

type UpdateInput struct {
	Settings map[string]any `` /* 304-byte string literal not displayed */
}

UpdateInput is the input for updating application settings. Settings is a map of setting keys to their new values, matching the JSON field names from the GitLab API (snake_case).

type UpdateOutput

type UpdateOutput struct {
	toolutil.HintableOutput
	Settings map[string]any `json:"settings"`
}

UpdateOutput contains the application settings object GitLab answered the update with, keyed the way the instance spells it.

func Update

func Update(ctx context.Context, client *gitlabclient.Client, input UpdateInput) (output UpdateOutput, err error)

Update modifies application settings (admin-only).

It accepts a map of setting keys and values and sends them through client-go's UpdateSettingsOptions. That struct models 422 of the 660 params GitLab's PUT route declares, and encoding/json drops a member the target does not carry without a word, so a patch naming one of the other 238 used to be sent with that key missing, answered 200, and reported to the model as a reconfiguration that never happened. The keys it does not model are therefore named and the whole patch refused before anything is sent: a half-applied patch reported as applied is the one outcome worth refusing for, which is the condition this repository states for preferring a refusal to a decode that fails open.

The answer is read from the captured response for the reason Get is.

Jump to

Keyboard shortcuts

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