{"record":{"id":"696907697ee144be","repo":"portainer/portainer","slug":"team-membership-already-registered","errorCode":null,"errorMessage":"Team membership already registered","messagePattern":"Team membership already registered","errorType":"http","errorClass":"HandlerError","httpStatus":409,"severity":"error","filePath":"api/http/handler/teammemberships/teammembership_create.go","lineNumber":77,"sourceCode":"\n\tsecurityContext, err := security.RetrieveRestrictedRequestContext(r)\n\tif err != nil {\n\t\treturn httperror.InternalServerError(\"Unable to retrieve info from request context\", err)\n\t}\n\n\tif !security.AuthorizedTeamManagement(portainer.TeamID(payload.TeamID), securityContext) {\n\t\treturn httperror.Forbidden(\"Permission denied to manage team memberships\", httperrors.ErrResourceAccessDenied)\n\t}\n\n\tmemberships, err := handler.DataStore.TeamMembership().TeamMembershipsByUserID(portainer.UserID(payload.UserID))\n\tif err != nil {\n\t\treturn httperror.InternalServerError(\"Unable to retrieve team memberships from the database\", err)\n\t}\n\n\tif len(memberships) > 0 {\n\t\tfor _, membership := range memberships {\n\t\t\tif membership.UserID == portainer.UserID(payload.UserID) && membership.TeamID == portainer.TeamID(payload.TeamID) {\n\t\t\t\treturn httperror.Conflict(\"Team membership already registered\", errors.New(\"Team membership already exists for this user and team\"))\n\t\t\t}\n\t\t}\n\t}\n\n\tmembership := &portainer.TeamMembership{\n\t\tUserID: portainer.UserID(payload.UserID),\n\t\tTeamID: portainer.TeamID(payload.TeamID),\n\t\tRole:   portainer.MembershipRole(payload.Role),\n\t}\n\n\terr = handler.DataStore.TeamMembership().Create(membership)\n\tif err != nil {\n\t\treturn httperror.InternalServerError(\"Unable to persist team memberships inside the database\", err)\n\t}\n\n\tdefer handler.updateUserServiceAccounts(membership)\n\n\treturn response.JSON(w, membership)","sourceCodeStart":59,"sourceCodeEnd":95,"githubUrl":"https://github.com/portainer/portainer/blob/17e74456ff6e794b9d5439ec3fa06922aa18a3f8/api/http/handler/teammemberships/teammembership_create.go#L59-L95","documentation":"Error \"Team membership already registered\" thrown in portainer/portainer.","triggerScenarios":"Thrown at api/http/handler/teammemberships/teammembership_create.go:77 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":"17e74456ff6e794b9d5439ec3fa06922aa18a3f8","analyzedAt":"2026-08-26T23:09:01.915Z","schemaVersion":2},"datasetVersion":"2026-08-27T03:17:27.898Z"}