Users
Manage the authenticated user's profile and, for admins, the organization's user roster.
Get current user
GET /api/user
Response 200
{
"_id": "64a1b2c3d4e5f6a7b8c9d0e1",
"name": "Jane",
"lastName": "Doe",
"instructorId": "jane-doe",
"role": "admin",
"organization": "64a1b2c3d4e5f6a7b8c9d0e2",
"profilePicture": "https://storage.anonfeedback.io/profiles/..."
}
Update profile
PUT /api/user
{
"name": "Jane",
"lastName": "Smith",
"instructorId": "jane-smith"
}
Change password
PUT /api/user/password
{
"currentPassword": "old-password",
"newPassword": "new-password"
}
Upload profile picture
POST /api/user/profile-picture
Content-Type: multipart/form-data
Maximum file size: 5 MB. Accepted formats: image/jpeg, image/png, image/webp.
Custom event tags
Get tags
GET /api/user/tags
Returns the user's personal set of custom tags for events.
Update tags
PUT /api/user/tags
{ "tags": ["insightful", "action-needed", "follow-up"] }
User management (admin only)
All endpoints below require admin or owner role.
List organization users
GET /api/users
Returns all members of the organization with their roles and status.
Invite a user
POST /api/users/invite
{
"role": "user"
}
Sends an invitation email with an accept link. The invited user creates their account via the link.
Error codes:
| Code | Meaning |
|---|---|
SEAT_LIMIT_REACHED | Organization has hit its user seat limit for the current plan |
ALREADY_MEMBER | Email is already a member of the organization |
INVITATION_PENDING | An invitation for this email is already pending |
Update user role
PUT /api/users/:userId/role
{ "role": "admin" }
Valid roles: user, admin. Only owner can promote to admin.
Remove user from organization
DELETE /api/users/:userId/organization
Removes the user from the organization. The user account itself is not deleted.
Invitations (admin only)
List pending invitations
GET /api/users/invitations/pending
Resend invitation
POST /api/users/invitations/:id/resend
Cancel invitation
DELETE /api/users/invitations/:id