Users API
The Users API provides user management, role assignment, and access control.
Overview
| Procedure | Type | Auth | Description |
|---|---|---|---|
users.getAll | Query | Admin | Get all users |
users.getById | Query | Yes | Get user by ID |
users.create | Mutation | Admin | Create new user |
users.update | Mutation | Yes | Update user |
users.changePassword | Mutation | Yes | Change own password |
users.resetPassword | Mutation | Admin | Reset user password |
users.delete | Mutation | Admin | Delete user |
users.getProfile | Query | Yes | Get current user |
users.approveUser | Mutation | Admin | Approve pending user |
users.declineUser | Mutation | Admin | Decline user |
users.getRoles | Query | Admin | Get available roles |
User Roles
enum Role {
SUPER_ADMIN = "SUPER_ADMIN", // Full system access
ADMIN = "ADMIN", // Administration access
OPERATOR = "OPERATOR", // Operational access
VIEWER = "VIEWER" // Read-only access
}Procedures
users.getAll
Get all users (admin only).
Type: Query Auth Required: Admin
Input
{
skip?: number; // Default: 0
take?: number; // Default: 50, max: 100
search?: string; // Search in name/email
role?: Role; // Filter by role
isActive?: boolean; // Filter by active status
sortBy?: "firstName" | "lastName" | "email" | "role" | "createdAt" | "lastLogin";
sortOrder?: "asc" | "desc";
}Response
{
users: Array<{
id: string;
email: string;
firstName: string;
lastName: string;
role: string;
isActive: boolean;
lastLogin: string | null;
createdAt: string;
updatedAt: string;
}>;
total: number;
pageCount: number;
}Example
curl -X GET "https://api.itms.solutions/trpc/users.getAll" \
-H "Authorization: Bearer YOUR_ADMIN_TOKEN"users.getById
Get user by ID. Users can view their own profile, admins can view any.
Type: Query Auth Required: Yes
Input
{
id: string;
}users.create
Create a new user (admin only).
Type: Mutation Auth Required: Admin
Input
{
email: string; // Valid email
password: string; // Min 8 characters
firstName: string; // Min 2 characters
lastName: string; // Min 2 characters
role?: Role; // Default: VIEWER
}Response
{
id: string;
email: string;
firstName: string;
lastName: string;
role: string;
isActive: boolean;
createdAt: string;
updatedAt: string;
}Example
curl -X POST "https://api.itms.solutions/trpc/users.create" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_ADMIN_TOKEN" \
-d '{
"json": {
"email": "operator@example.com",
"password": "SecurePass123!",
"firstName": "John",
"lastName": "Operator",
"role": "OPERATOR"
}
}'users.update
Update user. Users can update their own profile, admins can update any.
Type: Mutation Auth Required: Yes
Input
{
id: string; // Required
email?: string;
firstName?: string;
lastName?: string;
role?: Role; // Admin only
isActive?: boolean; // Admin only
}users.changePassword
Change current user's password.
Type: Mutation Auth Required: Yes
Input
{
currentPassword: string;
newPassword: string; // Min 8 characters
}Response
{
success: boolean;
}users.resetPassword
Reset a user's password (admin only).
Type: Mutation Auth Required: Admin
Input
{
id: string;
newPassword: string; // Min 8 characters
}users.delete
Delete a user (admin only). Cannot delete yourself.
Type: Mutation Auth Required: Admin
Input
{
id: string;
}users.getProfile
Get current authenticated user's profile.
Type: Query Auth Required: Yes
Response
{
id: string;
email: string;
firstName: string;
lastName: string;
role: string;
isActive: boolean;
lastLogin: string | null;
createdAt: string;
updatedAt: string;
}users.approveUser
Approve a pending user (admin only).
Type: Mutation Auth Required: Admin
Input
{
id: string;
}users.declineUser
Decline/deactivate a user (admin only).
Type: Mutation Auth Required: Admin
Input
{
id: string;
}users.getRoles
Get available roles with user counts (admin only).
Type: Query Auth Required: Admin
Response
Array<{
id: string; // Role ID
name: string; // Display name
description: string; // Role description
userCount: number; // Users with this role
isSystem: boolean; // System-defined role
createdAt: string;
}>Role Permissions
| Permission | SUPER_ADMIN | ADMIN | OPERATOR | VIEWER |
|---|---|---|---|---|
| View Dashboard | Yes | Yes | Yes | Yes |
| View Analytics | Yes | Yes | Yes | Yes |
| Export Analytics | Yes | Yes | Yes | No |
| View Events | Yes | Yes | Yes | Yes |
| Create Events | Yes | Yes | Yes | No |
| Edit Events | Yes | Yes | Yes | No |
| Delete Events | Yes | Yes | No | No |
| View Sensors | Yes | Yes | Yes | Yes |
| Add Sensors | Yes | Yes | No | No |
| Edit Sensors | Yes | Yes | Yes | No |
| Delete Sensors | Yes | Yes | No | No |
| View Users | Yes | Yes | Yes | Yes |
| Create Users | Yes | Yes | No | No |
| Edit Users | Yes | Yes | No | No |
| Delete Users | Yes | Yes | No | No |
| Manage Roles | Yes | Yes | No | No |
| View Settings | Yes | Yes | Yes | Yes |
| Edit Settings | Yes | Yes | No | No |
| System Backup | Yes | Yes | No | No |
Password Requirements
- Minimum 8 characters
- Stored using bcrypt with 10 salt rounds
- Never transmitted or stored in plain text