Vacaciones - Eliminar Registro de Vacaciones
Descripción
Section titled “Descripción”Este endpoint permite eliminar registros de vacaciones creados previamente en Dataemunah, diseñado específicamente para la integración con Colab. La eliminación requiere el código PILA único generado al momento de crear las vacaciones y valida que el registro no esté aprobado antes de proceder. Incluye mecanismos de transacción con rollback automático y registro completo en auditoría.
Importante: Solo es posible eliminar vacaciones que aún no hayan sido aprobadas. Además, únicamente el administrador con los permisos correspondientes podrá realizar esta acción. Antes de ejecutar la eliminación, el sistema registra toda la información en la tabla de historial para mantener trazabilidad completa del proceso.
Endpoint disponible
Section titled “Endpoint disponible”🗑️ Eliminar Vacaciones
Section titled “🗑️ Eliminar Vacaciones”Elimina un registro de vacaciones existente utilizando su código PILA único. Valida permisos, estado de aprobación y ejecuta la eliminación con transacción segura.
POST /api/vacaciones/deleteAutenticación
Section titled “Autenticación”Este endpoint requiere autenticación mediante API Key en el header:
X-Api-Key: Bearer {tu_api_key}Parámetros (Form Data)
Section titled “Parámetros (Form Data)”| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
codigoPila | string | Sí | Código único PILA generado al crear las vacaciones |
emailUserResponsable | string | Sí | Correo electrónico del usuario administrador responsable |
Ejemplo de Petición
Section titled “Ejemplo de Petición”Ejemplo práctico en cURL
Section titled “Ejemplo práctico en cURL”curl -X POST \ 'https://{{localhost_dt_cohoriente}}/vacaciones/delete' \ -H 'X-Api-Key: Bearer {tu_api_key}' \ -F 'codigoPila=VAC_1759261783_1391_ff2e3ddd' \ -F 'emailUserResponsable=esteban.avila@conectera.co'Ejemplo práctico de uso en PHP
Section titled “Ejemplo práctico de uso en PHP”// Configuración de los encabezados$headers = array( 'x-api-key: Bearer ' . $TOKEN);
// Datos del formulario$postData = array( 'codigoPila' => 'VAC_1759261783_1391_ff2e3ddd', 'emailUserResponsable' => 'esteban.avila@conectera.co');
// Configuración de cURL$ch = curl_init();curl_setopt($ch, CURLOPT_URL, URL_API . 'vacaciones/delete');curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);curl_setopt($ch, CURLOPT_POST, true);curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($postData));
// Ejecutar la solicitud$response = curl_exec($ch);$status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
// Verificar si hubo errores en la solicitud cURLif (curl_errno($ch)){ throw new Exception('Error en la solicitud: ' . curl_error($ch));}
// Cerrar la sesión cURLcurl_close($ch);
if ($status_code === 200){ $api_response = json_decode($response, TRUE); // Procesar respuesta echo "Vacaciones eliminadas. ID: " . $api_response['data']['id_eliminado'];}Ejemplo de Respuestas
Section titled “Ejemplo de Respuestas”- ✅ Éxito - Eliminación Exitosa (200 OK)
{ "success": true, "statusCode": 200, "message": "Vacaciones eliminadas correctamente", "data": { "idEliminado": 456, "codigoPila": "VAC_1759261783_1391_ff2e3ddd", "fechaEliminacion": "2025-10-02 14:30:45" }}- ❌ Error - Datos Requeridos Faltantes (400 Bad Request)
{ "success": false, "statusCode": 400, "message": "Datos requeridos faltantes", "errors": { "codigoPila": "El campo Código PILA es obligatorio", "emailUserResponsable": "El campo Email del usuario responsable es obligatorio" }}- ❌ Error - Email Inválido (400 Bad Request)
{ "success": false, "statusCode": 400, "message": "Datos requeridos faltantes", "errors": { "emailUserResponsable": "El formato del email no es válido" }}- ❌ Error - Usuario No Encontrado (404 Not Found)
{ "success": false, "statusCode": 404, "message": "Usuario responsable no encontrado", "errors": { "emailUserResponsable": "El email proporcionado no está registrado en el sistema" }}- ❌ Error - Registro No Encontrado (404 Not Found)
{ "success": false, "statusCode": 404, "message": "Registro de vacaciones no encontrado", "errors": { "codigoPila": "No existe un registro con el código PILA proporcionado" }}- ❌ Error - Método No Permitido (405 Method Not Allowed)
{ "success": false, "statusCode": 405, "message": "Método no permitido. Use POST"}- ❌ Error - Vacaciones Aprobadas (422 Unprocessable Entity)
{ "success": false, "statusCode": 422, "message": "No se puede eliminar. Las vacaciones ya están aprobadas", "errors": { "detalle": "Las vacaciones están aprobadas" }}- ❌ Error - Error Interno (500 Internal Server Error)
{ "success": false, "statusCode": 500, "message": "Error al ejecutar la eliminación", "errors": { "detalle": "No se pudo eliminar el registro" }}{ "success": false, "statusCode": 500, "message": "Error en la eliminación: [mensaje de error técnico]", "errors": { "detalle": "[descripción del error]" }}Lógica de Negocio
Section titled “Lógica de Negocio”Este endpoint ejecuta un proceso de eliminación seguro con las siguientes validaciones y operaciones:
Validaciones realizadas
Section titled “Validaciones realizadas”-
Autenticación
- Verifica que el API Key esté presente en el encabezado X-Api-Key
- Valida que el token sea válido y autorizado
-
Método HTTP
- Confirma que la petición sea de tipo POST
-
Campos requeridos
- Valida que el código PILA esté presente
- Valida que el email del usuario responsable esté presente
- Verifica el formato correcto del email
-
Usuario responsable
- Busca al usuario administrador por email
- Valida que el usuario exista en el sistema
- Obtiene el ID del usuario para auditoría
-
Búsqueda del registro
- Busca el registro de vacaciones por código PILA
- Valida que el registro exista en la base de datos
-
Validación de estado
- Verifica que las vacaciones NO estén aprobadas
- Si están aprobadas, rechaza la eliminación inmediatamente
Proceso de eliminación
Section titled “Proceso de eliminación”-
Transacción con rollback
-
Inicia una transacción en la base de datos
-
Captura el registro completo antes de eliminar
-
Guarda una copia en la tabla de historial (sfet_vacaciones_history) con:
- Acción: DELETE
- Usuario que ejecutó: ID del responsable
- Fecha y hora de eliminación
-
- Elimina registros relacionados en vacacionesvaccontratos (si existen)
- Elimina el registro principal de la tabla sfet_vacaciones
- Si cualquier paso falla, ejecuta rollback automático
-
Auditoría y logs
-
Registra en logs del sistema:
- Acción ejecutada (ELIMINACION_EXITOSA o ERROR_ELIMINACION)
- ID de vacaciones eliminado
- Código PILA
- Email del usuario responsable
- Timestamp de la operación
- Motivo del error (si aplica)
-
-
Respuesta
- Retorna confirmación con ID eliminado, código PILA y fecha/hora
- En caso de error, proporciona detalles específicos del fallo
Mecanismo de seguridad
Section titled “Mecanismo de seguridad”- Transacciones atómicas: Garantiza que todos los cambios se apliquen o ninguno
- Rollback automático: Si falla cualquier paso, restaura el estado previo
- Historial completo: Mantiene registro de todas las eliminaciones
- Validación de permisos: Solo usuarios administradores registrados pueden eliminar
- Auditoría detallada: Logs estructurados para trazabilidad completa
Consideraciones importantes
Section titled “Consideraciones importantes”- ⚠️ No se pueden eliminar vacaciones aprobadas: Esta validación protege la integridad de los registros procesados
- 🔒 Transacción segura: El proceso garantiza consistencia de datos con rollback automático
- 📝 Auditoría completa: Cada eliminación queda registrada en historial y logs
- 🔗 Integración con Colab: Diseñado para mantener sincronización entre ambos sistemas
- 🔄 Rollback coordinado: En caso de fallo de comunicación, ambos sistemas deben ejecutar rollback ReintentarClaude aún no tiene la capacidad de ejecutar el código que genera.