{"record":{"id":"30daa24c51c5e77a","repo":"Devolutions/UniGetUI","slug":"the-secure-setting-key-parameter-is-required","errorCode":null,"errorMessage":"The secure setting key parameter is required.","messagePattern":"The secure setting key parameter is required\\.","errorType":"validation","errorClass":"InvalidOperationException","httpStatus":400,"severity":"error","filePath":"src/UniGetUI.Interface.IpcApi/IpcSecureSettingsApi.cs","lineNumber":79,"sourceCode":"        SecureSettings.K key,\n        string userName\n    )\n    {\n        return new IpcSecureSettingInfo\n        {\n            Key = key.ToString(),\n            Name = SecureSettings.ResolveKey(key),\n            UserName = userName,\n            IsCurrentUser = userName.Equals(Environment.UserName, StringComparison.OrdinalIgnoreCase),\n            Enabled = SecureSettings.GetForUser(userName, key),\n        };\n    }\n\n    private static SecureSettings.K ResolveSettingKey(string settingKey)\n    {\n        if (string.IsNullOrWhiteSpace(settingKey))\n        {\n            throw new InvalidOperationException(\"The secure setting key parameter is required.\");\n        }\n\n        if (Enum.TryParse(settingKey, true, out SecureSettings.K enumKey) && enumKey != SecureSettings.K.Unset)\n        {\n            return enumKey;\n        }\n\n        foreach (var key in Enum.GetValues<SecureSettings.K>())\n        {\n            if (\n                key != SecureSettings.K.Unset\n                && SecureSettings.ResolveKey(key).Equals(settingKey, StringComparison.OrdinalIgnoreCase)\n            )\n            {\n                return key;\n            }\n        }\n","sourceCodeStart":61,"sourceCodeEnd":97,"githubUrl":"https://github.com/Devolutions/UniGetUI/blob/9b1d7d0eab91620fc15c86b36676532095936ae3/src/UniGetUI.Interface.IpcApi/IpcSecureSettingsApi.cs#L61-L97","documentation":"ResolveSettingKey throws when SettingKey is null, empty, or whitespace. A concrete key is required to address any secure setting.","triggerScenarios":"Calling get/set secure-setting with the settingKey field omitted from the request body.","commonSituations":"Client JSON omitted the field; serializer defaulted SettingKey to \"\"; UI submitted an empty form.","solutions":["Always send a non-empty SettingKey (enum name or resolved key string)","Validate non-empty client-side before the request","Make settingKey required in the request schema"],"exampleFix":"// before\nawait IpcSecureSettingsApi.SetSettingAsync(\n    new IpcSecureSettingRequest { Enabled = true });\n// after\nawait IpcSecureSettingsApi.SetSettingAsync(\n    new IpcSecureSettingRequest { SettingKey = \"TelemetryEnabled\", Enabled = true });","handlingStrategy":"validation","validationCode":"if (string.IsNullOrWhiteSpace(request.SettingKey))\n    throw new ArgumentException(\"SettingKey is required\");","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Mark SettingKey [Required] in the DTO","Validate at the API boundary"],"tags":["ipc","secure-settings","validation"],"backgroundTag":null,"analyzedSha":"9b1d7d0eab91620fc15c86b36676532095936ae3","analyzedAt":"2026-08-13T12:19:18.278Z","schemaVersion":2},"datasetVersion":"2026-08-13T14:17:21.547Z"}