{"record":{"id":"c49728e1769ae9ef","repo":"SigNoz/signoz","slug":"deployment-info-response-not-in-expected-shape-co","errorCode":null,"errorMessage":"deployment info response not in expected shape. couldn't determine region dns and deployment name","messagePattern":"deployment info response not in expected shape\\. couldn't determine region dns and deployment name","errorType":"http","errorClass":"basemodel.ApiError","httpStatus":500,"severity":"error","filePath":"ee/query-service/app/api/cloudIntegrations.go","lineNumber":186,"sourceCode":"\t\t\t\"couldn't query for deployment info: error: %w\", err,\n\t\t))\n\t}\n\n\tresp := new(deploymentResponse)\n\n\terr = json.Unmarshal(respBytes, resp)\n\tif err != nil {\n\t\treturn \"\", basemodel.InternalError(fmt.Errorf(\n\t\t\t\"couldn't unmarshal deployment info response: error: %w\", err,\n\t\t))\n\t}\n\n\tregionDns := resp.ClusterInfo.Region.DNS\n\tdeploymentName := resp.Name\n\n\tif len(regionDns) < 1 || len(deploymentName) < 1 {\n\t\t// Fail early if actual response structure and expectation here ever diverge\n\t\treturn \"\", basemodel.InternalError(fmt.Errorf(\n\t\t\t\"deployment info response not in expected shape. couldn't determine region dns and deployment name\",\n\t\t))\n\t}\n\n\tsignozApiUrl := fmt.Sprintf(\"https://%s.%s\", deploymentName, regionDns)\n\n\treturn signozApiUrl, nil\n}\n\ntype ingestionKey struct {\n\tName  string `json:\"name\"`\n\tValue string `json:\"value\"`\n\t// other attributes from gateway response not included here since they are not being used.\n}\n\ntype ingestionKeysSearchResponse struct {\n\tStatus string         `json:\"status\"`\n\tData   []ingestionKey `json:\"data\"`","sourceCodeStart":168,"sourceCodeEnd":204,"githubUrl":"https://github.com/SigNoz/signoz/blob/5069bf80b08f1f00d7e014eccc09902f9871004f/ee/query-service/app/api/cloudIntegrations.go#L168-L204","documentation":"The deployment info JSON parsed successfully but the expected fields (cluster.region.dns and the top-level name) are empty. This is an explicit fail-early guard for divergence between the actual Zeus response shape and the struct expectation.","triggerScenarios":"Zeus returns a well-formed deployment payload where region DNS or deployment name is empty/missing — e.g. a deployment still provisioning, a new response schema, or a license resolving to a half-configured cluster.","commonSituations":"Cloud deployment not yet fully provisioned, upstream schema drift after a cloud-side update, or querying with a license tied to a deleted deployment.","solutions":["Log the parsed response to confirm which field (regionDns vs deploymentName) is empty","Verify the deployment is fully provisioned in the SigNoz cloud console","Confirm license key maps to an active deployment","Report schema drift to SigNoz if the payload structure changed"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":"Treat as a shape mismatch: capture the parsed response, alert on schema drift, and avoid retrying blindly since data is missing.","preventionTips":["Add contract tests against a recorded Zeus response fixture","Pin query-service and cloud versions that are known-compatible"],"tags":["schema-validation","cloud-integrations","upstream-api"],"backgroundTag":"schema-validation-failed","analyzedSha":"5069bf80b08f1f00d7e014eccc09902f9871004f","analyzedAt":"2026-08-28T06:22:12.824Z","schemaVersion":2},"datasetVersion":"2026-08-28T11:17:15.048Z"}