Empleados
Empleados
Sección titulada «Empleados»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
Sección titulada «Endpoints»Listar empleados
Sección titulada «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
Sección titulada «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
Sección titulada «Obtener un empleado»GET /api/hr/employees/:idIncluye información de departamento, nóminas 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
Sección titulada «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
Sección titulada «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
Sección titulada «Departamentos»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
Sección titulada «Endpoints»| Método | Ruta | Descripción |
|---|---|---|
| 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
Sección titulada «Ejemplo»POST /api/hr/departments{ "name": "Logistica", "code": "LOG", "parent_id": "dept_operaciones", "cost_center_id": "cc_logistica"}Contratos
Sección titulada «Contratos»Keirost gestiona los tipos de contrato y mantiene un historial de contratos por empleado.
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
Sección titulada «Historial de contratos»GET /api/hr/employees/:id/contractsUn empleado puede tener múltiples contratos si se producen renovaciones o cambios de modalidad.
Fichero de empleados
Sección titulada «Fichero de empleados»Keirost genera automáticamente el fichero de trabajadores según el formato requerido por la Seguridad Social (Sistema RED).
GET /api/hr/employees/taFILE_NAMEGenera el fichero TRI en el formato oficial. Params:
| Param | Descripción |
|---|---|
year |
Ano del fichero |
month |
Mes del fichero |
format |
tri (por defecto), csv |
Resumen de endpoints
Sección titulada «Resumen de endpoints»| Método | Ruta | Descripción |
|---|---|---|
| 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 |