Empleados
Empleados
Modelo
interface Employee { id: string; employee_number: string; name: string; surname: string; email: string; phone?: string; mobile?: string; nif: string; birth_date?: string; address?: { street: string; city: string; postal_code: string; country: string; }; department_id: string; job_title: string; hire_date: string; termination_date?: string; contract_type: 'indefinite' | 'temporary' | 'training' | 'part_time'; working_hours: number; // horas semanales base_salary: number; // salario base mensual bank_account?: string; // IBAN para nominas ss_number?: string; // Numero de Seguridad Social photo_url?: string; notes?: string; status: 'active' | 'inactive' | 'terminated'; created_at: string; created_by: string;}Endpoints
Listar empleados
GET /api/hr/employeesGET /api/hr/employees?status=activeGET /api/hr/employees?department_id=dept_ventasAuthorization: Bearer <token>Respuesta:
{ "data": [ { "id": "emp_001", "employee_number": "EMP-2026-001", "name": "Maria", "surname": "Garcia Lopez", "email": "maria.garcia@empresa.com", "department_id": "dept_ventas", "job_title": "Comercial", "status": "active" } ]}Crear empleado
POST /api/hr/employeesAuthorization: Bearer <token>Content-Type: application/json
{ "employee_number": "EMP-2026-004", "name": "Carlos", "surname": "Martinez Ruiz", "email": "carlos.martinez@empresa.com", "phone": "+34612345678", "nif": "12345678A", "department_id": "dept_admin", "job_title": "Contable", "hire_date": "2026-05-15", "contract_type": "indefinite", "working_hours": 40, "base_salary": 2200.00, "bank_account": "ES9121000418450200051332", "ss_number": "123456789012"}Obtener un empleado
GET /api/hr/employees/:idIncluye informacion de departamento, nominas recientes y fichajes del mes.
{ "data": { "id": "emp_001", "employee_number": "EMP-2026-001", "name": "Maria", "surname": "Garcia Lopez", "department": { "id": "dept_ventas", "name": "Ventas" }, "job_title": "Comercial", "hire_date": "2026-01-15", "contract_type": "indefinite", "base_salary": 1800.00, "active_payroll": { "id": "pay_2026_04", "period": "2026-04", "net_salary": 1584.00, "paid_at": "2026-04-30" }, "recent_timeclock": [ { "date": "2026-05-07", "check_in": "09:00", "check_out": "18:00" }, { "date": "2026-05-06", "check_in": "08:55", "check_out": "17:50" } ] }}Actualizar empleado
PATCH /api/hr/employees/:idContent-Type: application/json
{ "job_title": "Responsable de ventas", "base_salary": 2000.00}Dar de baja a un empleado
POST /api/hr/employees/:id/terminateContent-Type: application/json
{ "termination_date": "2026-06-30", "reason": "dimision", "notes": "El empleado solicita reduccion de jornada en otra empresa"}Departamentos
Modelo
interface Department { id: string; name: string; // "Ventas", "Administracion", "RRHH" code: string; // "VEN", "ADM", "RRHH" parent_id?: string; // Para estructura jerarquica manager_id?: string; // ID del empleado responsable cost_center_id?: string; active: boolean;}Endpoints
| Metodo | Ruta | Descripcion |
|---|---|---|
| GET | /api/hr/departments | Listar departamentos |
| POST | /api/hr/departments | Crear departamento |
| GET | /api/hr/departments/:id | Obtener departamento |
| PATCH | /api/hr/departments/:id | Actualizar departamento |
| DELETE | /api/hr/departments/:id | Eliminar departamento |
Ejemplo
POST /api/hr/departments{ "name": "Logistica", "code": "LOG", "parent_id": "dept_operaciones", "cost_center_id": "cc_logistica"}Contratos
Keirost gestiona los tipos de contrato y mantiene un historial de contratos por empleado.
Modelo
interface EmployeeContract { id: string; employee_id: string; contract_type: 'indefinite' | 'temporary' | 'training' | 'part_time' | 'freelance'; start_date: string; end_date?: string; trial_period_days: number; working_hours: number; base_salary: number; salary_period: 'monthly' | 'biweekly' | 'weekly'; notes?: string; document_url?: string; // PDF del contrato}Historial de contratos
GET /api/hr/employees/:id/contractsUn empleado puede tener multiples contratos si se producen renovaciones o cambios de modalidad.
Fichero de empleados
Keirost genera automaticamente el fichero de trabajadores segun el formato requerido por la Seguridad Social (Sistema RED).
GET /api/hr/employees/taFILE_NAMEGenera el fichero TRI en formato规定的. Params:
| Param | Descripcion |
|---|---|
year | Ano del fichero |
month | Mes del fichero |
format | tri (por defecto), csv |
Resumen de endpoints
| Metodo | Ruta | Descripcion |
|---|---|---|
| GET | /api/hr/employees | Listar empleados |
| POST | /api/hr/employees | Crear empleado |
| GET | /api/hr/employees/:id | Obtener empleado |
| PATCH | /api/hr/employees/:id | Actualizar empleado |
| DELETE | /api/hr/employees/:id | Eliminar empleado |
| POST | /api/hr/employees/:id/terminate | Dar de baja |
| GET | /api/hr/employees/:id/contracts | Historial de contratos |
| POST | /api/hr/contracts | Crear contrato |
| GET | /api/hr/departments | Listar departamentos |
| POST | /api/hr/departments | Crear departamento |
| GET | /api/hr/employees/file | Generar fichero SEPE/SISTEMA RED |