ExoVoIP Developer guide

Control panel users

Users are the people who sign in to the control panel with email and password. Each user has a role (see Authentication) and can be linked to an extension.

With these endpoints administrators view users and change their name and sign-in email:

  • a tenant administrator sees and edits only the users of their own company, never those of other companies nor platform administrators;
  • the platform administrator sees every user. Without X-Tenant-Id they can filter with ?tenantId=<id> or ?tenantId=platform (platform administrators only); with X-Tenant-Id they see only that company's users.

The users:read (list and detail) and users:write (edit) scopes are required. The Tenant administrator role has both.

GET /v1/users returns users in creation order, with cursor pagination. Filters: q (name or email), role, tenantId (platform only). Each user includes company, linked extension, status, two-step verification and last sign-in.

curl https://centralino.exovoip.it/api/v1/users?q=rossi \
  -H 'Authorization: Bearer exo_live_…'

Changing name and email

PATCH /v1/users/:id with name and/or email. The change applies immediately; when the email changes, both the old and the new address receive a notice and links already sent (password recovery, email change) stop working. The password does not change.

Rules:

  • for security, changes are allowed only from the control panel session: with an API key the response is 403 SESSION_REQUIRED;
  • an email already used by another account returns 409 EMAIL_TAKEN (emails are unique across the platform, case-insensitive);
  • your own email cannot be changed here (400): use POST /auth/email/change, which asks for the current password and confirmation from the new address (see Authentication);
  • a user of another company returns 404.

In the panel: Settings → Users for tenant administrators, Administration → Users for the platform (also from each company's menu in Customer companies).

Every change is recorded in the activity log (user.update) with the old and new address.

Endpoints

RequestScopeSDK method
GET /v1/usersusers:readusers.list()
GET /v1/users/:idusers:readusers.get()