{"record":{"id":"29d0dc0195989b96","repo":"SigNoz/signoz","slug":"codeinvalidinput-29d0dc","errorCode":"CodeInvalidInput","errorMessage":"entityId is required","messagePattern":"entityId is required","errorType":"validation","errorClass":"errors SigNozError","httpStatus":400,"severity":"error","filePath":"pkg/types/authtypes/saml.go","lineNumber":48,"sourceCode":"\n\tvar temp Alias\n\tif err := json.Unmarshal(data, &temp); err != nil {\n\t\treturn err\n\t}\n\n\tsamlConfig := SamlConfig(temp)\n\tif err := samlConfig.validate(); err != nil {\n\t\treturn err\n\t}\n\n\t*config = samlConfig\n\treturn nil\n}\n\n// validate also assigns the default attribute mapping when none is present.\nfunc (config *SamlConfig) validate() error {\n\tif config.EntityID == \"\" {\n\t\treturn errors.New(errors.TypeInvalidInput, errors.CodeInvalidInput, \"entityId is required\")\n\t}\n\n\tif config.Location == \"\" {\n\t\treturn errors.New(errors.TypeInvalidInput, errors.CodeInvalidInput, \"location is required\")\n\t}\n\n\tif config.Certificate == \"\" {\n\t\treturn errors.New(errors.TypeInvalidInput, errors.CodeInvalidInput, \"certificate is required\")\n\t}\n\n\tif config.AttributeMapping == (AttributeMapping{}) {\n\t\tif err := json.Unmarshal([]byte(\"{}\"), &config.AttributeMapping); err != nil {\n\t\t\treturn err\n\t\t}\n\t}\n\n\treturn nil\n}","sourceCodeStart":30,"sourceCodeEnd":66,"githubUrl":"https://github.com/SigNoz/signoz/blob/5069bf80b08f1f00d7e014eccc09902f9871004f/pkg/types/authtypes/saml.go#L30-L66","documentation":"Thrown by SamlConfig.validate (invoked from UnmarshalJSON) when entityID is empty. The entityID uniquely identifies the SigNoz service provider to the IdP and is required for SAML metadata and assertion validation.","triggerScenarios":"POST/PUT a SAML SSO config without \"entityId\".","commonSituations":"Copying ACS URL and certificate from the IdP but skipping the SP entityID, or misreading the IdP's metadata.","solutions":["Set entityId, typically your SigNoz SAML audience/SP identifier (e.g. signoz-saml or your metadata URL)","Match the value configured as audience URI / entity ID in the IdP's app settings"],"exampleFix":"// before\n{\"location\": \"https://signoz.acme.com/api/v1/saml/acs\", \"certificate\": \"...\"}\n// after\n{\"entityId\": \"https://signoz.acme.com/api/v1/saml/metadata\", \"location\": \"https://signoz.acme.com/api/v1/saml/acs\", \"certificate\": \"...\"}","handlingStrategy":"validation","validationCode":"if cfg.EntityID == \"\" { return errors.New(\"entityId is required\") }","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Build SAML config from the SP metadata document which always contains the entityID"],"tags":["saml","sso","config-validation"],"backgroundTag":"missing-required-config-field","analyzedSha":"5069bf80b08f1f00d7e014eccc09902f9871004f","analyzedAt":"2026-08-28T06:22:12.824Z","schemaVersion":2},"datasetVersion":"2026-08-28T11:17:15.048Z"}