{"record":{"id":"26d69bd41e58a214","repo":"SigNoz/signoz","slug":"codeinvalidinput","errorCode":"CodeInvalidInput","errorMessage":"oidc: missing email in claims","messagePattern":"oidc: missing email in claims","errorType":"error_code","errorClass":"errors.Error","httpStatus":400,"severity":"error","filePath":"ee/authn/callbackauthn/oidccallbackauthn/authn.go","lineNumber":119,"sourceCode":"\n\t\treturn nil, errors.Newf(errors.TypeInternal, errors.CodeInternal, \"oidc: failed to get token\").WithAdditional(err.Error())\n\t}\n\n\tclaims, err := a.claimsFromIDToken(ctx, authDomain, oidcProvider, token)\n\tif err != nil && !errors.Ast(err, errors.TypeNotFound) {\n\t\treturn nil, err\n\t}\n\n\tif claims == nil && oidcConfig.GetUserInfo {\n\t\tclaims, err = a.claimsFromUserInfo(ctx, oidcProvider, token)\n\t\tif err != nil {\n\t\t\treturn nil, err\n\t\t}\n\t}\n\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","sourceCodeStart":101,"sourceCodeEnd":137,"githubUrl":"https://github.com/SigNoz/signoz/blob/5069bf80b08f1f00d7e014eccc09902f9871004f/ee/authn/callbackauthn/oidccallbackauthn/authn.go#L101-L137","documentation":"Returned by buildDeltaMetricQueryForTable when the aggregate operator is v3.AggregateOperatorNoOp and the target is a table view. NoOp means 'return raw samples unchanged', which only makes sense for time-series output; a table view requires a scalar aggregate per group, so the builder explicitly rejects it.","triggerScenarios":"PrepareMetricQuery / dashboard or API requests where mq.AggregateOperator == v3.AggregateOperatorNoOp (or the string 'noop') combined with a table/list panel format, routing execution into the delta table builder.","commonSituations":"Exporting raw metric points into a table widget; migrating a query from the explore (graph) view to a table panel without changing the operator; UI defaults leaving operator as noop when a user only changes the panel type.","solutions":["Set an actual aggregate operator (avg, sum, max, min, count, count_distinct, or a *_rate variant) for table panels","Keep NoOp queries in graph/time-series view where raw series rendering is supported","Guard in your own layer: reject NoOp+table combinations before calling PrepareMetricQuery with a clearer message"],"exampleFix":"// before\nop := v3.AggregateOperatorNoOp\nq, err := PrepareMetricQuery(..., op, v3.FormatTable)\n\n// after\nop := v3.AggregateOperatorAvg // pick a real aggregation for table output\nq, err := PrepareMetricQuery(..., op, v3.FormatTable)","handlingStrategy":"validation","validationCode":"if qp.AggregateOperator == v3.AggregateOperatorNoOp && qp.Format == v3.FormatTable {\n\treturn errors.New(\"noop requires a time-series view; choose an aggregate for tables\")\n}","typeGuard":"func isNoOp(op v3.AggregateOperator) bool { return op == v3.AggregateOperatorNoOp }","tryCatchPattern":"if _, err := v3.PrepareMetricQuery(...); err != nil && strings.Contains(err.Error(), \"noop is not supported\") {\n\tqp.AggregateOperator = v3.AggregateOperatorAvg // fallback aggregate\n\treturn v3.PrepareMetricQuery(...)\n}","preventionTips":["UI should disable noop option for table panels","Default new table panels to avg"],"tags":["signoz","metrics","query-builder","table-view","noop","aggregate-operator"],"backgroundTag":"unsupported-aggregate-operator","analyzedSha":"5069bf80b08f1f00d7e014eccc09902f9871004f","analyzedAt":"2026-08-28T06:22:12.824Z","schemaVersion":2},"datasetVersion":"2026-08-28T11:17:15.048Z"}