Invites a user to join the current tenant.
Creates an outstanding invitation for the given email and sends an invitation email with an accept link. If an invitation already exists for this email in the current tenant it is replaced. If the email is already an active member, returns 400.
Authorization
Bearer JWT Authorization header using the Bearer scheme. Enter 'Bearer' [space] and then your token.
In: header
Path Parameters
The tenant identifier
The invitation details (email and role).
Email address of the user to invite.
email1 <= lengthDefines the access level a user has within a tenant — a built-in role
ladder. Each role maps to a fixed capability (scope) bundle in
RoleScopeMap; that map, not these integer values, is the source of
truth for what a role can do and how roles order by privilege. The integer
values are stable storage identity only (do not renumber), so they are
deliberately NOT in privilege order — Fruxon.Model.Users.UserRoleType.Member (2, legacy) and
Fruxon.Model.Users.UserRoleType.Developer (4) sit at the same rung.
"UNSPECIFIED" | "ADMIN" | "MEMBER" | "OWNER" | "DEVELOPER" | "OPERATOR" | "VIEWER"Response Body
curl -X POST "https://api.fruxon.com/v1/tenants/string/users:invite" \ -H "Content-Type: application/json" \ -d '{ "email": "user@example.com", "role": "UNSPECIFIED" }'{
"id": "string",
"userEmail": "string",
"slug": "string",
"displayName": "string",
"role": "ADMIN",
"expiresAt": 0
}{
"type": "string",
"title": "string",
"status": 0,
"detail": "string",
"instance": "string",
"property1": null,
"property2": null
}Retrieves a specific user by ID.
Looks up a single workspace member by their tenant user id. The id matches the `name` field returned by `GET /users`. Returns 404 if the user is not a member of the caller's workspace — this endpoint does not cross tenant boundaries. Use `PATCH /users/{user}` to mutate role or profile fields (admin-only).
Get the current user's profile.
Returns the global Fruxon profile of the authenticated caller — name, avatar, and other cross-tenant identity fields. The user is identified implicitly by the Firebase ID token; there is no path parameter. A profile row is created on first access (lazy provisioning), so this endpoint always returns 200 for any authenticated caller. For workspace-scoped membership data (role within a specific tenant), use `GET /v1/tenants/{tenant}/users/{user}` instead.