Crear Fichaje por Incidencia¶
Este endpoint se utiliza cuando el empleado no puede realizar un fichaje estándar debido a restricciones del sistema (como estar fuera de horario o de ubicación), pero elige la opción de "Justificar y continuar".
Esto genera dos cosas simultáneamente: 1. Un registro de fichaje (entrada o salida). 2. Una incidencia asociada, que queda pendiente de revisión por el administrador.
Endpoint¶
POST /api/v2/incident/create-incident-and-checkin
Requiere autenticación con Token Bearer.
Parámetros del Body (JSON)¶
| Campo | Tipo | Obligatorio | Descripción |
|---|---|---|---|
checkInType |
string | Sí | Tipo de fichaje: "start" (entrada) o "end" (salida). |
errorCode |
string | Sí | El código de error que impidió el fichaje normal. Ejemplos: EARLY_EXIT, OUT_OF_SCHEDULE_WINDOW, NO_SCHEDULE_TODAY, OUT_OF_RANGE. |
attemptedAt |
string (ISO) | Sí | Fecha y hora exacta del intento de fichaje original. ISO 8601 (ej: "2025-02-02T10:30:00Z"). |
latitude |
number | No | Latitud GPS de la ubicación del empleado. |
longitude |
number | No | Longitud GPS de la ubicación del empleado. |
description |
string | No | Justificación o motivo proporcionado por el empleado. |
source |
string | No | Origen del fichaje: "App" o "Web". Nuevo en v1.2.2 |
deviceId |
string | No | Identificador único del dispositivo (UUID). Nuevo en v1.2.2 |
Ejemplo de Petición¶
curl -X POST "https://api.musicaymaestro.com/api/v2/incident/create-incident-and-checkin" \
-H "Authorization: Bearer <TOKEN>" \
-H "Content-Type: application/json" \
-d '{
"checkInType": "start",
"errorCode": "OUT_OF_RANGE",
"attemptedAt": "2025-02-02T08:55:00.000Z",
"latitude": 40.4168,
"longitude": -3.7038,
"description": "Estaba en la puerta pero el GPS fallaba",
"source": "App",
"deviceId": "550e8400-e29b-41d4-a716-446655440000"
}'
Respuesta Exitosa (201 Created)¶
{
"status": "success",
"message": "Time record started with incident created",
"data": {
"incident": {
"id": 45,
"employeeId": 101,
"incidentType": "OUT_OF_RANGE",
"description": "Estaba en la puerta pero el GPS fallaba",
"status": "open",
"source": "App",
"deviceId": "550e8400-e29b-41d4-a716-446655440000",
"createdAt": "2025-02-02T08:55:05.000Z"
},
"timeRecordId": 1234,
"checkInType": "start",
"registeredAt": "2025-02-02T08:55:05.000Z"
}
}
Errores Comunes¶
400 Bad Request: Si faltan campos obligatorios (errorCode,checkInType, etc.) o el formato de fecha es inválido.401 Unauthorized: Token faltante o inválido.