FruxonDocs
UsersCore

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.

POST
/v1/tenants/{tenant}/users:invite
AuthorizationBearer <token>

JWT Authorization header using the Bearer scheme. Enter 'Bearer' [space] and then your token.

In: header

Path Parameters

tenant*string

The tenant identifier

The invitation details (email and role).

email*string

Email address of the user to invite.

Formatemail
Length1 <= length
role*string

Defines 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.

Value in"UNSPECIFIED" | "ADMIN" | "MEMBER" | "OWNER" | "DEVELOPER" | "OPERATOR" | "VIEWER"
[key: string]?never

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
}
Empty
Empty