{"record":{"id":"91efa99b8e10c4bf","repo":"JuliusBrussee/caveman","slug":"kms-invalid-api-base-url","errorCode":null,"errorMessage":"kms: invalid API base URL","messagePattern":"kms: invalid API base URL","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"shared/platform/kms/kms.go","lineNumber":102,"sourceCode":"\tdecryptKeyIDs := map[string]struct{}{keyID: {}}\n\tfor _, allowedKeyID := range cfg.AllowedDecryptKeyIDs {\n\t\tallowedKeyID = strings.TrimSpace(allowedKeyID)\n\t\tif err := validateLocation(region, allowedKeyID); err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t\tdecryptKeyIDs[allowedKeyID] = struct{}{}\n\t}\n\ttoken := strings.TrimSpace(cfg.AuthToken)\n\tif len(token) < 20 {\n\t\treturn nil, errors.New(\"kms: auth token is required\")\n\t}\n\tbaseURL := strings.TrimRight(strings.TrimSpace(cfg.APIBaseURL), \"/\")\n\tif baseURL == \"\" {\n\t\tbaseURL = scalewayAPI\n\t}\n\tparsed, err := url.Parse(baseURL)\n\tif err != nil || parsed.Scheme == \"\" || parsed.Host == \"\" || parsed.User != nil || parsed.RawQuery != \"\" || parsed.Fragment != \"\" {\n\t\treturn nil, errors.New(\"kms: invalid API base URL\")\n\t}\n\tclient := cfg.HTTPClient\n\tif client == nil {\n\t\tclient = &http.Client{\n\t\t\tTimeout: 8 * time.Second,\n\t\t\tCheckRedirect: func(_ *http.Request, _ []*http.Request) error {\n\t\t\t\treturn http.ErrUseLastResponse\n\t\t\t},\n\t\t}\n\t}\n\treturn &Client{provider: provider, region: region, keyID: keyID, token: token, apiBaseURL: baseURL, httpClient: client, decryptKeyIDs: decryptKeyIDs}, nil\n}\n\n// FromEnvironment loads production configuration. Endpoint is not configurable,\n// preventing env-driven host redirection of KMS credentials.\nfunc FromEnvironment() (*Client, error) {\n\treturn fromEnvironment(SecretsKeyEnvironment)\n}","sourceCodeStart":84,"sourceCodeEnd":120,"githubUrl":"https://github.com/JuliusBrussee/caveman/blob/27d5a3981a347890211bb1bf2439e5c821a63bc9/shared/platform/kms/kms.go#L84-L120","documentation":"Error \"kms: invalid API base URL\" thrown in JuliusBrussee/caveman.","triggerScenarios":"Thrown at shared/platform/kms/kms.go:102 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Set a valid KMS API base URL."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"27d5a3981a347890211bb1bf2439e5c821a63bc9","analyzedAt":"2026-08-15T09:26:11.751Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}