{"record":{"id":"c0bc772f8bd4bb49","repo":"Devolutions/UniGetUI","slug":"the-setting-key-is-required","errorCode":null,"errorMessage":"The setting key is required.","messagePattern":"The setting key is required\\.","errorType":"validation","errorClass":"InvalidOperationException","httpStatus":null,"severity":"error","filePath":"src/UniGetUI.Interface.IpcApi/IpcManagerSettingsApi.cs","lineNumber":499,"sourceCode":"        {\n            return manager.SourcesHelper.GetSources();\n        }\n        catch (NotImplementedException)\n        {\n            return [];\n        }\n    }\n\n    private static bool IsVisibleSetting(Settings.K setting)\n    {\n        return setting != Settings.K.Unset && !HiddenSettings.Contains(setting);\n    }\n\n    private static Settings.K ResolveSettingKey(string settingKey)\n    {\n        if (string.IsNullOrWhiteSpace(settingKey))\n        {\n            throw new InvalidOperationException(\"The setting key is required.\");\n        }\n\n        foreach (var candidate in Enum.GetValues<Settings.K>())\n        {\n            if (!IsVisibleSetting(candidate))\n            {\n                continue;\n            }\n\n            if (\n                candidate.ToString().Equals(settingKey, StringComparison.OrdinalIgnoreCase)\n                || Settings.ResolveKey(candidate).Equals(\n                    settingKey,\n                    StringComparison.OrdinalIgnoreCase\n                )\n            )\n            {\n                return candidate;","sourceCodeStart":481,"sourceCodeEnd":517,"githubUrl":"https://github.com/Devolutions/UniGetUI/blob/9b1d7d0eab91620fc15c86b36676532095936ae3/src/UniGetUI.Interface.IpcApi/IpcManagerSettingsApi.cs#L481-L517","documentation":"Thrown by ResolveSettingKey when settingKey is null, empty, or whitespace. Every setting-related API (GetSetting, SetSetting, ClearSetting) calls ResolveSettingKey which requires a non-blank key string to resolve against the Settings.K enum.","triggerScenarios":"Calling GetSetting(\"\"), SetSetting with empty SettingKey, or ClearSetting(\"\") — any path where the setting key argument is blank.","commonSituations":"IPC client omits SettingKey from the JSON payload (IpcSettingValueRequest defaults SettingKey to empty string). Client passes a setting key that is whitespace-only. Missing form field validation.","solutions":["Provide a non-empty setting key string.","Call ListSettings() to enumerate valid setting keys (both enum name and resolved key string).","Validate the setting key on the client side before sending the IPC request."],"exampleFix":"// before\nvar info = IpcManagerSettingsApi.GetSetting(\"\");\n// after\nvar settings = IpcManagerSettingsApi.ListSettings();\nvar key = settings.First(s => s.Name == \"EnableScoopCleanup\").Key;\nvar info = IpcManagerSettingsApi.GetSetting(key);","handlingStrategy":"validation","validationCode":"if (string.IsNullOrWhiteSpace(settingKey))\n    throw new ArgumentException(\"Setting key is required.\", nameof(settingKey));","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Always provide a non-blank setting key.","Call ListSettings() to enumerate valid keys.","DTO initializes SettingKey to empty string — set it explicitly."],"tags":["settings","ipc","validation","required-field"],"backgroundTag":null,"analyzedSha":"9b1d7d0eab91620fc15c86b36676532095936ae3","analyzedAt":"2026-08-13T12:19:18.278Z","schemaVersion":2},"datasetVersion":"2026-08-13T14:17:21.547Z"}