The organization API covers all configuration objects that define how your workforce is structured and informed. Departments, shifts, and holidays form the scheduling backbone; announcements carry time-bounded communications to role-scoped audiences; permissions expose the full RBAC model. All paths are prefixed withDocumentation 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.
/api/v1 and require a valid JWT.
Unless otherwise noted, every endpoint requires
Authorization: Bearer <token>. Create/update operations are restricted to ADMIN or HR_OPERATIONS roles.Departments
GET /api/v1/departments
Returns all departments ordered alphabetically by name. Available to any authenticated user.
Array of
DepartmentRead objects.Example Response
POST /api/v1/departments
Creates a new department. The designated head must be an active user with role ADMIN, HR_OPERATIONS, MANAGER, or TEAM_LEAD.
Auth: ADMIN role required.
Display name for the department.
Optional free-text description.
UUID of the user to assign as department head. Alias for
admin_id — either field is accepted.Defaults to
true.UUID of the created department.
Resolved head name.
Example Request Body
GET /api/v1/departments/active
Returns only departments where is_active is true. Useful for populating dropdown menus.
Auth: Any authenticated user.
GET /api/v1/departments/{department_id}
Fetch a single department by UUID.
Auth: Any authenticated user.
UUID of the department.
GET /api/v1/departments/{department_id}/employees
Returns the list of employees currently assigned to this department.
Auth: Any authenticated user.
UUID of the department.
Array of
OrganizationMemberRead objects with employee details and assignment metadata.PATCH /api/v1/departments/{department_id}
Update department fields. Partial updates — only send fields you want to change.
Auth: ADMIN role required.
UUID of the department to update.
New department name.
Updated description.
UUID of the new department head. Must be an eligible active user.
Set to
false to deactivate.DELETE /api/v1/departments/{department_id}
Soft-deletes a department by setting is_active = false. Fails with 409 CONFLICT if any employees are still assigned to this department.
Auth: ADMIN role required.
UUID of the department to deactivate.
Always
true on success.Shifts
Work shifts define the scheduled hours for a group of employees. Shifts carry a name, start/end times, and an optional grace window for late check-ins.GET /api/v1/shifts
Lists all shifts. Pass only_active=true to filter to active shifts only.
Auth: Any authenticated user.
When
true, returns only shifts with is_active = true. Defaults to false.Array of
ShiftRead objects.POST /api/v1/shifts
Creates a new shift definition.
Auth: ADMIN or HR_OPERATIONS role required.
Human-readable shift name.
Shift start time in
HH:MM:SS format (24-hour clock).Shift end time in
HH:MM:SS format (24-hour clock).Defaults to
true.Example Request Body
GET /api/v1/shifts/{shift_id}
Fetch a single shift by UUID.
Auth: Any authenticated user.
UUID of the shift.
PATCH /api/v1/shifts/{shift_id}
Update shift fields. Only the provided fields are changed.
Auth: ADMIN or HR_OPERATIONS role required.
UUID of the shift to update.
Updated shift name.
Updated start time
HH:MM:SS.Updated end time
HH:MM:SS.Set to
false to deactivate.POST /api/v1/shifts/assign/{user_id}
Assigns a shift to a specific employee. Pass shift_id as a query parameter; omit it to unassign.
Auth: ADMIN or HR_OPERATIONS role required.
UUID of the employee to assign the shift to.
UUID of the shift to assign. Omit to clear the user’s shift assignment.
Always
"Shift assigned successfully" on success.GET /api/v1/shifts/{shift_id}/employees
Returns the list of employees assigned to this shift.
Auth: Any authenticated user.
UUID of the shift.
Array of
OrganizationMemberRead objects.DELETE /api/v1/shifts/{shift_id}
Deactivates a shift by setting is_active = false.
Auth: ADMIN or HR_OPERATIONS role required.
UUID of the shift to deactivate.
Always
true on success.Holidays
Public holidays are calendar entries that inform leave calculations and attendance rules.GET /api/v1/holidays
Returns all holiday records.
Auth: Any authenticated user.
Array of
HolidayRead objects.POST /api/v1/holidays
Creates a new public holiday entry.
Auth: ADMIN role required.
Holiday name.
Date in ISO format
YYYY-MM-DD.Optional description.
Defaults to
true.Example Request Body
Example Response
GET /api/v1/holidays/active
Returns only holidays where is_active is true.
Auth: Any authenticated user.
GET /api/v1/holidays/upcoming
Returns the next N active holidays from the given anchor date. Useful for dashboard widgets.
Auth: Any authenticated user.
Maximum number of holidays to return. Defaults to
5.ISO date anchor. Defaults to today.
PATCH /api/v1/holidays/{holiday_id}
Update holiday fields. Only the provided fields are changed.
Auth: ADMIN role required.
UUID of the holiday to update.
Updated holiday name.
Updated date ISO
YYYY-MM-DD.Updated description.
Set to
false to deactivate.DELETE /api/v1/holidays/{holiday_id}
Deactivates a holiday by setting is_active = false.
Auth: ADMIN role required.
UUID of the holiday to deactivate.
Always
true on success.Announcements
Announcements are time-bounded messages broadcast to specific role audiences. The server automatically filters which announcements a user can see based on their role.GET /api/v1/announcements
Returns all active announcements visible to the authenticated user based on their role. Expired or future-dated announcements are excluded.
Auth: Any authenticated user.
Array of
AnnouncementRead objects.POST /api/v1/announcements
Creates a new announcement and broadcasts an announcement_created realtime event to all connected WebSocket clients matching the audience.
Auth: ADMIN or HR_OPERATIONS role required.
Announcement headline.
Full announcement body.
Target audience. Must be one of:
all, employee, admin, hr_operations, manager, team_lead, intern, junior_employee.ISO date for when the announcement starts displaying. Optional.
ISO date for when the announcement stops displaying. Optional.
Defaults to
true. Set to false to create a draft.Example Request Body
GET /api/v1/announcements/visible
Returns a limited list of active, non-expired announcements for dashboard panels.
Auth: Any authenticated user.
Number of announcements to return. Defaults to
5.When
true, also returns expired announcements. Defaults to false.GET /api/v1/announcements/all
Returns all announcements regardless of active/expired status or audience. Intended for admin management views.
Auth: ADMIN or HR_OPERATIONS role required.
All
AnnouncementRead objects ordered by creation time descending.PATCH /api/v1/announcements/{announcement_id}
Update or archive an existing announcement. Only provided fields are changed.
Auth: ADMIN or HR_OPERATIONS role required.
UUID of the announcement to update.
Updated headline.
Updated body text.
Updated audience. Must be a valid audience string.
Updated start date ISO
YYYY-MM-DD.Updated end date ISO
YYYY-MM-DD.Set to
false to archive the announcement.Permissions
The permissions system maps role keys to capability strings. These records are seeded at startup and managed exclusively by system administrators.GET /api/v1/permissions
Lists all registered permission keys and their descriptions.
Auth: Requires the permissions.manage permission (Admin only in practice).
Array of permission descriptor objects.
Example Response
GET /api/v1/permissions/role/{role}
Returns the list of permission keys assigned to a specific role.
Auth: permissions.manage permission required.
Role identifier, e.g.
admin, manager, employee.Sorted list of permission key strings assigned to the role.
POST /api/v1/permissions/user-override
Grants or revokes a specific permission for an individual user, overriding their role defaults.
Auth: permissions.manage permission required.
UUID of the target user.
The permission key to override, e.g.
analytics.view_org.true to grant, false to revoke. Defaults to true.Confirmation message indicating the action taken and the affected user.
GET /api/v1/permissions/user/{user_id}
Returns the full resolved permission set for a user, merging their role permissions with any individual overrides.
Auth: permissions.manage permission required.
UUID of the user to inspect.
Sorted list of granted permission key strings.
Example Response
Error Reference
| HTTP Status | Error Code | Reason |
|---|---|---|
401 | AUTH_ERROR | Missing or invalid JWT |
403 | PERMISSION_ERROR | Insufficient role or permission |
404 | NOT_FOUND | Resource not found |
409 | CONFLICT | Department has assigned employees |
422 | VALIDATION_ERROR | Invalid audience or field values |
