Skip to main content

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

GET /api/admin/users
Cookie: sAccessToken=...; sRefreshToken=...

Roles: ADMIN


Create User

POST /api/admin/users
Cookie: sAccessToken=...; sRefreshToken=...
Content-Type: application/json

{
"email": "jane@precisionsiteservices.com",
"name": "Jane Smith",
"role": "ESTIMATOR"
}

Roles: ADMIN

User Roles:

  • ADMIN - Full system access
  • ESTIMATOR - Create/edit bids
  • PM - Read-only bids, manage projects
  • OPS - Manage purchase orders
  • ACCOUNTING - Financial reconciliation
  • FOREMAN - Field operations only

Update User Role

PATCH /api/admin/users/:id/role
Cookie: sAccessToken=...; sRefreshToken=...
Content-Type: application/json

{
"role": "PM"
}

Roles: ADMIN


Update User Status

PATCH /api/admin/users/:id/status
Cookie: sAccessToken=...; sRefreshToken=...
Content-Type: application/json

{
"status": "INACTIVE"
}

Roles: ADMIN

Status Values:

  • ACTIVE - User can sign in
  • INACTIVE - User cannot sign in (soft delete)

Delete User

DELETE /api/admin/users/:id
Cookie: sAccessToken=...; sRefreshToken=...

Roles: ADMIN

warning

Deleting a user is permanent. Consider setting status to INACTIVE instead.

Analytics

Dashboard Metrics

GET /api/admin/analytics/dashboard
Cookie: sAccessToken=...; sRefreshToken=...

Roles: ADMIN


Bid Statistics

GET /api/admin/analytics/bids
Cookie: sAccessToken=...; sRefreshToken=...

Roles: ADMIN

Query Parameters:

  • startDate (ISO 8601) - Filter from date
  • endDate (ISO 8601) - Filter to date
  • clientId (UUID) - Filter by client

User Activity

GET /api/admin/analytics/users
Cookie: sAccessToken=...; sRefreshToken=...

Roles: ADMIN

Module Permissions

Get Module Permissions

GET /api/module-permissions
Cookie: sAccessToken=...; sRefreshToken=...

Roles: ADMIN, ESTIMATOR, PM


Update Module Permissions

PUT /api/module-permissions
Cookie: sAccessToken=...; sRefreshToken=...
Content-Type: application/json

{
"concrete": {
"enabled": true,
"roles": ["ADMIN", "ESTIMATOR", "PM"]
}
}

Roles: ADMIN

Role Permissions

Get Role Permissions

GET /api/role-permissions
Cookie: sAccessToken=...; sRefreshToken=...

Roles: ADMIN

Data Model

interface User {
id: string
email: string
name: string
role: UserRole
status: UserStatus
createdAt: DateTime
lastLogin?: DateTime
}

enum UserRole {
ADMIN
ESTIMATOR
PM
OPS
ACCOUNTING
FOREMAN
}

enum UserStatus {
ACTIVE
INACTIVE
}

interface DashboardMetrics {
bids: BidMetrics
users: UserMetrics
revenue: RevenueMetrics
activity: ActivityMetrics
}