Authentication
All API endpoints require authentication using JWT tokens. Include the token in the Authorization header:
Authorization: Bearer {your_jwt_token}
Login Endpoint
/api/auth/login
Request Body:
{
"email": "user@example.com",
"password": "your_password"
}
Response:
{
"success": true,
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"user": {
"id": 1,
"email": "user@example.com",
"role": "employee"
}
}
Employees API
/api/employees
Get list of all employees (requires admin role)
Query Parameters: page, per_page, department_id, status
/api/employees/{id}
Get employee details by ID
/api/employees
Create new employee (requires admin role)
{
"employee_number": "EMP-001",
"first_name": "John",
"last_name": "Doe",
"email": "john.doe@example.com",
"department_id": 1,
"position_id": 1,
"hire_date": "2024-01-15",
"salary_rate": 35000.00,
"salary_type": "monthly"
}
/api/employees/{id}
Update employee information (requires admin role)
/api/employees/{id}
Delete employee (requires super admin role)
Attendance API
/api/attendance/clock-in
Clock in for the day
{
"employee_id": 1,
"timestamp": "2024-01-15 08:00:00"
}
/api/attendance/clock-out
Clock out for the day
{
"employee_id": 1,
"timestamp": "2024-01-15 17:00:00"
}
/api/attendance
Get attendance records
Query Parameters: employee_id, start_date, end_date, page, per_page
Leave API
/api/leaves
Get leave requests
Query Parameters: employee_id, status, start_date, end_date
/api/leaves
Create leave request
{
"employee_id": 1,
"leave_type_id": 1,
"start_date": "2024-02-01",
"end_date": "2024-02-03",
"reason": "Family vacation"
}
/api/leaves/{id}/status
Approve or reject leave request (requires supervisor/HR role)
{
"status": "approved",
"remarks": "Approved"
}
Payroll API
/api/payroll/runs
Get payroll runs (requires HR admin role)
/api/payroll/runs
Create new payroll run (requires HR admin role)
{
"name": "January 2024 Payroll",
"period_start": "2024-01-01",
"period_end": "2024-01-15",
"payroll_date": "2024-01-20"
}
/api/payslips
Get payslips for employee
Query Parameters: employee_id, start_date, end_date
Error Responses
All error responses follow this format:
{
"success": false,
"error": {
"code": "ERROR_CODE",
"message": "Error description"
}
}