Admin & Analytics
Overview
The Admin API provides user management, role permissions, and system analytics for administrators. This includes user CRUD operations, role assignments, and dashboard metrics.
User Management
List Users
- Request
- Response
GET /api/admin/users
Cookie: sAccessToken=...; sRefreshToken=...
[
{
"id": "uuid",
"email": "john@precisionsiteservices.com",
"name": "John Doe",
"role": "ESTIMATOR",
"status": "ACTIVE",
"createdAt": "2025-01-15T10:00:00.000Z",
"lastLogin": "2025-01-29T08:30:00.000Z"
},
...
]
Roles: ADMIN
Create User
- Request
- Response
POST /api/admin/users
Cookie: sAccessToken=...; sRefreshToken=...
Content-Type: application/json
{
"email": "jane@precisionsiteservices.com",
"name": "Jane Smith",
"role": "ESTIMATOR"
}
{
"id": "uuid",
"email": "jane@precisionsiteservices.com",
"message": "User created successfully. Invitation email sent."
}
Roles: ADMIN
User Roles:
ADMIN- Full system accessESTIMATOR- Create/edit bidsPM- Read-only bids, manage projectsOPS- Manage purchase ordersACCOUNTING- Financial reconciliationFOREMAN- Field operations only
Update User Role
- Request
- Response
PATCH /api/admin/users/:id/role
Cookie: sAccessToken=...; sRefreshToken=...
Content-Type: application/json
{
"role": "PM"
}
{
"id": "uuid",
"role": "PM",
"message": "User role updated"
}
Roles: ADMIN
Update User Status
- Request
- Response
PATCH /api/admin/users/:id/status
Cookie: sAccessToken=...; sRefreshToken=...
Content-Type: application/json
{
"status": "INACTIVE"
}
{
"id": "uuid",
"status": "INACTIVE",
"message": "User status updated"
}
Roles: ADMIN
Status Values:
ACTIVE- User can sign inINACTIVE- User cannot sign in (soft delete)
Delete User
- Request
- Response
DELETE /api/admin/users/:id
Cookie: sAccessToken=...; sRefreshToken=...
{
"message": "User deleted successfully"
}
Roles: ADMIN
warning
Deleting a user is permanent. Consider setting status to INACTIVE instead.
Analytics
Dashboard Metrics
- Request
- Response
GET /api/admin/analytics/dashboard
Cookie: sAccessToken=...; sRefreshToken=...
{
"bids": {
"total": 245,
"draft": 42,
"submitted": 89,
"awarded": 67,
"lost": 35,
"completed": 12
},
"users": {
"total": 18,
"active": 16,
"inactive": 2,
"byRole": {
"ADMIN": 2,
"ESTIMATOR": 8,
"PM": 5,
"OPS": 2,
"ACCOUNTING": 1
}
},
"revenue": {
"totalBidValue": 12500000.0,
"awardedValue": 7800000.0,
"winRate": 0.624
},
"activity": {
"bidsCreatedThisMonth": 15,
"bidsSubmittedThisMonth": 22,
"bidsAwardedThisMonth": 8
}
}
Roles: ADMIN
Bid Statistics
- Request
- Response
GET /api/admin/analytics/bids
Cookie: sAccessToken=...; sRefreshToken=...
{
"byStatus": {
"DRAFT": 42,
"SUBMITTED": 89,
"NEGOTIATION": 12,
"AWARDED": 67,
"LOST": 35,
"COMPLETED": 12
},
"byMonth": [
{
"month": "2025-01",
"created": 18,
"submitted": 15,
"awarded": 7,
"totalValue": 2100000.00
},
...
],
"topClients": [
{
"clientId": "uuid",
"clientName": "ABC Construction",
"bidCount": 25,
"totalValue": 3500000.00,
"winRate": 0.68
},
...
],
"averageBidValue": 51020.41,
"medianBidValue": 38500.00
}
Roles: ADMIN
Query Parameters:
startDate(ISO 8601) - Filter from dateendDate(ISO 8601) - Filter to dateclientId(UUID) - Filter by client