{"record":{"id":"d529d925283b9a53","repo":"SigNoz/signoz","slug":"codeforbidden","errorCode":"CodeForbidden","errorMessage":"oidc: email is not verified","messagePattern":"oidc: email is not verified","errorType":"error_code","errorClass":"errors.Error","httpStatus":403,"severity":"error","filePath":"ee/authn/callbackauthn/oidccallbackauthn/authn.go","lineNumber":134,"sourceCode":"\n\temailClaim, ok := claims[oidcConfig.ClaimMapping.Email].(string)\n\tif !ok {\n\t\treturn nil, errors.New(errors.TypeInvalidInput, errors.CodeInvalidInput, \"oidc: missing email in claims\")\n\t}\n\n\temail, err := valuer.NewEmail(emailClaim)\n\tif err != nil {\n\t\treturn nil, errors.Newf(errors.TypeInvalidInput, errors.CodeInvalidInput, \"oidc: failed to parse email\").WithAdditional(err.Error())\n\t}\n\n\tif !oidcConfig.InsecureSkipEmailVerified {\n\t\temailVerifiedClaim, ok := claims[\"email_verified\"].(bool)\n\t\tif !ok {\n\t\t\treturn nil, errors.New(errors.TypeInvalidInput, errors.CodeInvalidInput, \"oidc: missing email_verified in claims\")\n\t\t}\n\n\t\tif !emailVerifiedClaim {\n\t\t\treturn nil, errors.New(errors.TypeForbidden, errors.CodeForbidden, \"oidc: email is not verified\")\n\t\t}\n\t}\n\n\tname := \"\"\n\tif nameClaim := oidcConfig.ClaimMapping.Name; nameClaim != \"\" {\n\t\tif n, ok := claims[nameClaim].(string); ok {\n\t\t\tname = n\n\t\t}\n\t}\n\n\tvar groups []string\n\tif groupsClaim := oidcConfig.ClaimMapping.Groups; groupsClaim != \"\" {\n\t\tif claimValue, exists := claims[groupsClaim]; exists {\n\t\t\tswitch g := claimValue.(type) {\n\t\t\tcase []any:\n\t\t\t\tfor _, group := range g {\n\t\t\t\t\tif gs, ok := group.(string); ok {\n\t\t\t\t\t\tgroups = append(groups, gs)","sourceCodeStart":116,"sourceCodeEnd":152,"githubUrl":"https://github.com/SigNoz/signoz/blob/5069bf80b08f1f00d7e014eccc09902f9871004f/ee/authn/callbackauthn/oidccallbackauthn/authn.go#L116-L152","documentation":"Default branch in buildMetricQuery (SigNoz metrics v3 query_builder.go). The switch over mq.AggregateOperator exhausted all known cases for the requested (non-table) query shape and fell through, meaning the operator value is not one the time-series builder can compile to ClickHouse SQL.","triggerScenarios":"PrepareMetricQuery invoked with an AggregateOperator that is valid Go-side but has no case in this switch — e.g. an operator only implemented for table views, an empty operator string, or an operator from a newer/older SigNoz version.","commonSituations":"Mixing SigNoz component versions (old query-service, new UI sending new operators); constructing v3.QueryBuildPacket programmatically and forgetting to set AggregateOperator; renaming operators in a fork without updating all builders.","solutions":["Inspect mq.AggregateOperator at the call site and set it to a supported value for time-series queries (avg, sum, min, max, rate, *_rate, count, count_distinct, noop, etc.)","Ensure SigNoz frontend, query-service and schema (v3 package) are from the same release","If you maintain a fork, add the missing case to the switch in query_builder.go"],"exampleFix":"// before\nqp.AggregateOperator = \"\" // zero value falls to default\nquery, err := v3.PrepareMetricQuery(...)\n\n// after\nqp.AggregateOperator = v3.AggregateOperatorAvg\nquery, err := v3.PrepareMetricQuery(...)","handlingStrategy":"validation","validationCode":"if qp.AggregateOperator == \"\" {\n\tqp.AggregateOperator = v3.AggregateOperatorAvg // sane default\n}\n// reject operators not in your supported set before building","typeGuard":"null","tryCatchPattern":"query, err := v3.PrepareMetricQuery(...)\nif err != nil && strings.Contains(err.Error(), \"unsupported aggregate operator\") {\n\tqp.AggregateOperator = v3.AggregateOperatorAvg\n\tquery, err = v3.PrepareMetricQuery(...)\n}","preventionTips":["Always set AggregateOperator explicitly","Keep v3 package and query-service versions aligned","Add enum validation at API ingress"],"tags":["signoz","metrics","query-builder","aggregate-operator","clickhouse"],"backgroundTag":"unsupported-aggregate-operator","analyzedSha":"5069bf80b08f1f00d7e014eccc09902f9871004f","analyzedAt":"2026-08-28T06:22:12.824Z","schemaVersion":2},"datasetVersion":"2026-08-28T11:17:15.048Z"}