{"record":{"id":"d36f4558e2c75c51","repo":"overleaf/overleaf","slug":"group-full","errorCode":"group_full","errorMessage":"group_full","messagePattern":"group_full","errorType":"http","errorClass":null,"httpStatus":400,"severity":"error","filePath":"services/web/app/src/Features/Subscription/TeamInvitesController.mjs","lineNumber":68,"sourceCode":"    }\n    const invitedUserData = await TeamInvitesHandler.promises.createInvite(\n      teamManagerId,\n      subscription,\n      email,\n      auditLog\n    )\n    return res.json({ user: invitedUserData })\n  } catch (err) {\n    if (err.alreadyInTeam) {\n      return res.status(400).json({\n        error: {\n          code: 'user_already_added',\n          message: req.i18n.translate('user_already_added'),\n        },\n      })\n    }\n    if (err.limitReached) {\n      return res.status(400).json({\n        error: {\n          code: 'group_full',\n          message: req.i18n.translate('group_full'),\n        },\n      })\n    }\n  }\n}\n\n/**\n * @param {any} req\n * @param {any} res\n * @param {any} next\n */\nasync function viewInvite(req, res, next) {\n  const { token } = req.params\n  const sessionUser = SessionManager.getSessionUser(req.session)\n  const userId = sessionUser?._id","sourceCodeStart":50,"sourceCodeEnd":86,"githubUrl":"https://github.com/overleaf/overleaf/blob/28ad3b03b71cb4311decdcb55c36b33ec10d72db/services/web/app/src/Features/Subscription/TeamInvitesController.mjs#L50-L86","documentation":"Catch branch in createInvite: TeamInvitesHandler.createInvite threw with limitReached set, meaning the group subscription has no free seats for another invite; rejected with 400 code 'group_full'.","triggerScenarios":"Thrown at services/web/app/src/Features/Subscription/TeamInvitesController.mjs:68 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Add seats to the group subscription before inviting","Remove an unused member or pending invite to free a seat"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"28ad3b03b71cb4311decdcb55c36b33ec10d72db","analyzedAt":"2026-09-03T02:10:22.807Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-10T07:17:11.731Z"}