Admin
How an account is given what its role needs, and nothing more.
Access
How an administrator reaches the screen, and what has to be true for it to open.
Me:users.access
Header
What the band states about accounts before anything below it is actionable.
Main actions
What belongs to the page rather than to one account.
Me:users.invite
Form · Add user
What an invitation needs before it is sent.
Me:users.rolesRemote:grantable_roles
Client:multi_location
Filters
Which accounts the list holds.
Table
What one account shows in a row.
Me:users.bulk
Row actions
What can be done to one account without leaving the list.
Me:users.reset_credentials
Me:users.deactivateData:can_deactivate
Form · Edit user
What an account's details need before they are saved.
Me:users.rolesRemote:edit_role
Errors
What the screen can refuse, and what the administrator sees when it does.
POST /api/v2/users/invite → 403
A notice above the form, and the role list reloads with what can be granted now.
GET /api/v2/users → any failure
A notice in place of the table, with a way to try again.
DELETE /api/v2/users/:id → 404
A notice, and the account shows as Deactivated once the list reloads.
API calls
What the screen asks the backend for, and what makes it ask.
actionsubject_id
Before a role list opens, in the invitation or in an edit, to learn which roles this person may grant. The answer depends on who is asking, so the session alone cannot decide it.
first_namelast_nameemailrole_idlocation_idssend_invite
On sending the invitation.
pageper_pageroledepartmentstatusqsort
When the screen opens, and on every filter, search, sort or page change. The list is never narrowed in the browser, so the table shows what the query returned.
first_namelast_namerole_iddepartment_id
On saving an edit, or a bulk role change. Only the fields that changed are sent, so two people editing different fields of one account do not overwrite each other.