{"record":{"id":"7891ece6e35e374a","repo":"actualbudget/actual","slug":"invalid-groupid","errorCode":null,"errorMessage":"invalid groupId","messagePattern":"invalid groupId","errorType":"http","errorClass":null,"httpStatus":400,"severity":"error","filePath":"packages/sync-server/src/app-sync.ts","lineNumber":325,"sourceCode":"  const fileId = req.headers['x-actual-file-id'];\n\n  if (!fileId || typeof fileId !== 'string') {\n    res.status(400).send('fileId is required');\n    return;\n  }\n  if (!isValidFileId(fileId)) {\n    res.status(400).send('invalid fileId');\n    return;\n  }\n\n  let groupId = req.headers['x-actual-group-id'] || null;\n  const encryptMeta = extractSingleHeader(req, res, 'x-actual-encrypt-meta');\n  if (res.headersSent) return;\n  const syncFormatVersion = extractSingleHeader(req, res, 'x-actual-format');\n  if (res.headersSent) return;\n\n  if (!!groupId && (typeof groupId !== 'string' || !isValidGroupId(groupId))) {\n    res.status(400).send('invalid groupId');\n    return;\n  }\n\n  const keyId =\n    encryptMeta && typeof encryptMeta === 'string'\n      ? JSON.parse(encryptMeta).keyId\n      : null;\n\n  const filesService = new FilesService(getAccountDb());\n  let currentFile;\n\n  try {\n    currentFile = filesService.get(fileId);\n  } catch (e) {\n    if (e instanceof FileNotFound) {\n      currentFile = null;\n    } else {\n      throw e;","sourceCodeStart":307,"sourceCodeEnd":343,"githubUrl":"https://github.com/actualbudget/actual/blob/d4334cb6e6123f4d3bcea1ad6166608884c7e658/packages/sync-server/src/app-sync.ts#L307-L343","documentation":"Error \"invalid groupId\" thrown in actualbudget/actual.","triggerScenarios":"Thrown at packages/sync-server/src/app-sync.ts:325 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"d4334cb6e6123f4d3bcea1ad6166608884c7e658","analyzedAt":"2026-08-29T01:02:11.213Z","schemaVersion":2},"datasetVersion":"2026-08-29T02:17:18.158Z"}