Saltearse al contenido

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/employees
GET /api/hr/employees?status=active
GET /api/hr/employees?department_id=dept_ventas
Authorization: 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/employees
Authorization: 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/:id

Incluye 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/:id
Content-Type: application/json
{
"job_title": "Responsable de ventas",
"base_salary": 2000.00
}

Dar de baja a un empleado

POST /api/hr/employees/:id/terminate
Content-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

MetodoRutaDescripcion
GET/api/hr/departmentsListar departamentos
POST/api/hr/departmentsCrear departamento
GET/api/hr/departments/:idObtener departamento
PATCH/api/hr/departments/:idActualizar departamento
DELETE/api/hr/departments/:idEliminar 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/contracts

Un 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_NAME

Genera el fichero TRI en formato规定的. Params:

ParamDescripcion
yearAno del fichero
monthMes del fichero
formattri (por defecto), csv

Resumen de endpoints

MetodoRutaDescripcion
GET/api/hr/employeesListar empleados
POST/api/hr/employeesCrear empleado
GET/api/hr/employees/:idObtener empleado
PATCH/api/hr/employees/:idActualizar empleado
DELETE/api/hr/employees/:idEliminar empleado
POST/api/hr/employees/:id/terminateDar de baja
GET/api/hr/employees/:id/contractsHistorial de contratos
POST/api/hr/contractsCrear contrato
GET/api/hr/departmentsListar departamentos
POST/api/hr/departmentsCrear departamento
GET/api/hr/employees/fileGenerar fichero SEPE/SISTEMA RED