Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/Paramount-Intelligence/HR_Monitoring_System/llms.txt

Use this file to discover all available pages before exploring further.

The Workforce OS enforces a Role-Based Access Control (RBAC) model combined with hierarchical scope checks to ensure data security and operational integrity. Every API route is protected by FastAPI dependencies that verify both the caller’s role and their ownership or reporting scope before any data is returned or mutated.

Role Hierarchy

Roles are ordered from highest to lowest privilege. Each level inherits the spirit of the roles below it but gains progressively broader visibility and write access:
Admin  →  HR / Operations  →  Manager  →  Team Lead  →  Employee  →  Intern / Junior Employee
UUIDs are internal technical values only. All user-facing UI must display human-readable labels — full names, department names, shift names — never raw IDs.

Role Definitions

Purpose: Full system governance and technical administration.Key Actions:
  • Create and manage all user accounts, including other Admins and Managers.
  • View organisation-wide analytics and all employee data.
  • Configure system settings, shifts, and organisational structure.
  • Access and export all audit logs.
  • Override or resolve any pending approvals.
Data Visibility: Global — unrestricted access to all records across all departments.Permissions: All permissions in the system (see matrix below).

Permissions Matrix

The table below summarises the most commonly checked permission keys across all functional areas. = granted, = denied, ⚠️ = own-data or limited scope only, 👁️ = view-only (UI-level, no explicit permission key).
Permission KeyAdminHR/OpsManagerTeam LeadEmployeeIntern
users.view_all
users.create
users.edit
users.deactivate
users.suspend
users.manage_roles
attendance.view_own
attendance.view_team
attendance.view_org
attendance.approve_correction
leave.apply
leave.approve
leave.view_team
leave.view_org
projects.create
projects.approve
projects.view_all
tasks.create_own
tasks.create_team
tasks.set_priority
tasks.set_complexity
tasks.view_team
eod.submit
eod.review
eod.approve
reports.view_own
reports.view_team
reports.view_org
announcements.create👁️👁️
holidays.manage
shifts.manage
departments.manage
audit.view
call_recordings.view
call_recordings.download
call_recordings.delete
permissions.manage
analytics.view_team
analytics.view_org
The canonical source of truth for role–permission mappings is apps/api/app/core/permissions.py (ROLE_PERMISSIONS dict). The table above reflects that file exactly — always refer to the source when in doubt.

Hierarchical Rules

Three additional scoping rules layer on top of the static role permissions to prevent cross-team data leakage: Manager Mapping Every non-Admin user should have a reporting manager assigned. This mapping drives which users a Manager or Team Lead can act on behalf of, approve requests for, or view data about. Department Scoping Managers and Team Leads are associated with specific departments. API-level scope checks ensure they can only query or mutate data belonging to their assigned departments — the *_team permission keys are meaningless without this department association. Ownership Check Even when a user holds the Employee role, they can only modify entities they own (e.g., their own tasks or leave requests). The service layer enforces this regardless of which role-level permissions are granted.
Managers can view team member profiles but cannot create or deactivate users outside their direct reporting line, and cannot change global organisation settings such as shifts or departments. Those actions require HR/Operations or Admin.

Build docs developers (and LLMs) love