AttendanceBook
POST https://customerapi.geovictoria.com/api/v1/AttendanceBook
Descripción
Obtener el libro de asistencia con los valores calculados (horas trabajadas, no trabajadas, horas extra,
atrasos, marcas, turnos y permisos) para un periodo de tiempo y un conjunto de usuarios. Entrega un objeto por usuario
con el detalle diario agrupado en semanas, además de los valores de hora extra configurados de la empresa.
Request
Request Body
| Campos | Tipo de dato | Descripción |
|---|---|---|
| StartDate | String | Fecha inicial de consulta. Formato yyyyMMddHHmmss. Requerido |
| EndDate | String | Fecha final de consulta. Formato yyyyMMddHHmmss. Requerido |
| UserIds | String | Lista de identificadores de usuario separados por coma. Requerido |
{
"StartDate": "20240501000000",
"EndDate": "20240531235959",
"UserIds": "15715287,76831428"
}
Importante
- Utilice este método si su empresa trabaja con valores diarios. Si su empresa trabaja con
periodos semanales ajustados, no debe usar este endpoint. - Los montos de horas se devuelven en formato HH:MM.
- Los campos de horas extra cumplidas/asignadas (AccomplishedExtraTime,
AssignedExtraTime, etc.) son objetos cuyas claves corresponden al identificador del tipo de
hora extra y su valor a las horas acumuladas (HH:MM). - Los campos booleanos se devuelven como string True / False.
Response
Response Body
| Campos | Tipo de dato | Descripción |
|---|---|---|
| Users | Array | Lista de usuarios con sus valores calculados (ver detalle abajo) |
| ExtraTimeValues | Array | Valores de hora extra configurados por la empresa (ver detalle abajo) |
Users
| Campos | Tipo de dato | Descripción |
|---|---|---|
| Id | String | Identificador interno único del usuario |
| Identifier | String | Identificador del usuario (RUT/cédula u otro) |
| Enabled | String | Indica si el usuario está habilitado (True / False) |
| Name | String | Nombre del usuario |
| LastName | String | Apellido del usuario |
| String | Correo electrónico corporativo | |
| PersonalEmail | String | Correo electrónico personal |
| GroupDescription | String | Descripción del grupo al que pertenece el usuario |
| CostCenterCode | String | Código del centro de costos |
| PositionId | String | Identificador del cargo |
| PositionDescription | String | Descripción del cargo |
| WeeklyWorkingHoursCodeId | String | Identificador del código de jornada semanal |
| WeeklyWorkingHoursCodeDescription | String | Descripción del código de jornada semanal |
| CustomColumn1 | String | Columna personalizada 1 |
| CustomColumn2 | String | Columna personalizada 2 |
| CustomColumn3 | String | Columna personalizada 3 |
| IsHiddenForReports | String | Indica si el usuario está oculto en los reportes (True / False) |
| ContractDate | String | Fecha de contrato (yyyyMMddHHmmss) |
| EndContractDate | String | Fecha de término o desactivación automática (yyyyMMddHHmmss) |
| SchedulerId | String | Identificador del planificador asignado |
| SchedulerStart | String | Fecha de inicio del planificador (yyyyMMddHHmmss) |
| SchedulerPeriodStart | String | Fecha de inicio del ciclo del planificador (yyyyMMddHHmmss) |
| IntegrationCode | String | Código de integración del usuario |
| UserCompanyIdentifier | String | Identificador de la razón social asociada al usuario |
| Birthdate | String | Fecha de nacimiento (yyyyMMdd) |
| Age | String | Edad del usuario |
| Gender | String | Género del usuario. Solo se muestra si la empresa tiene habilitado el privilegio correspondiente |
| TotalWorkedHours | String | Total de horas trabajadas en el periodo (HH:MM) |
| TotalNonWorkedHours | String | Total de horas no trabajadas en el periodo (HH:MM) |
| TotalAccomplishedOvertime | String | Total de horas extra cumplidas en el periodo (HH:MM) |
| TotalPlannedTime | String | Total de tiempo planificado en el periodo (HH:MM) |
| WorkedDays | Number | Cantidad de días trabajados |
| NonWorkedDays | Number | Cantidad de días con turno “No trabaja” |
| Absences | Number | Cantidad de días sin marca teniendo turno asignado (incluye días “Sin turno”) |
| DaysAttended | Number | Cantidad de días asistidos |
| Holidays | Number | Cantidad de feriados en el periodo |
| Vacation | Number | Cantidad de días de vacaciones |
| DaysLeaveWithPay | Number | Cantidad de días de permiso con goce de sueldo |
| DaysLeaveWithoutPay | Number | Cantidad de días de permiso sin goce de sueldo |
| AbsenceDaysWithoutJustification | Number | Cantidad de días de inasistencia sin justificación |
| AbsenceDaysLicense | Number | Cantidad de días de inasistencia por licencia médica |
| WorkedSundays | Number | Cantidad de domingos trabajados |
| WorkedHolidays | Number | Cantidad de feriados trabajados |
| TotalSundayWorkedHours | String | Total de horas trabajadas en domingos según planificación (HH:MM) |
| TotalSundayActualWorkedHours | String | Total de horas realmente trabajadas en domingos (HH:MM) |
| TotalHolidayWorkedHours | String | Total de horas trabajadas en feriados según planificación (HH:MM) |
| TotalHolidayActualWorkedHours | String | Total de horas realmente trabajadas en feriados (HH:MM) |
| TotalDiurnalWorkedHours | String | Total de horas trabajadas diurnas (HH:MM) |
| TotalNocturnalWorkedHours | String | Total de horas trabajadas nocturnas según planificación (HH:MM) |
| TotalNocturnalActuallyWorkedHours | String | Total de horas realmente trabajadas nocturnas (HH:MM) |
| TotalWorkedHoursOnRest | String | Total de horas trabajadas en días de descanso (HH:MM) |
| OvertimeAssigned | String | Total de horas extra asignadas (HH:MM) |
| TotalOvertimeHoursAccomplished | String | Total de horas extra cumplidas (HH:MM) |
| TotalOvertimeAssignment | String | Total de la asignación de horas extra (HH:MM) |
| OvertimeAuthorizedBefore | String | Horas extra autorizadas antes de la jornada (HH:MM) |
| OvertimeAuthorizedAfter | String | Horas extra autorizadas después de la jornada (HH:MM) |
| TotalHoursProfit | String | Total de horas beneficio (HH:MM) |
| TotalOvertime | Object | Total de horas extra por tipo. La clave es el identificador del tipo de hora extra y el valor las horas acumuladas (HH:MM) |
| TotalOvertimeDiurnal | Object | Total de horas extra diurnas por tipo (clave = id tipo de hora extra, valor HH:MM) |
| TotalOvertimeNocturnal | Object | Total de horas extra nocturnas por tipo (clave = id tipo de hora extra, valor HH:MM) |
| TotalsDaysCounted | Object | Totales de días contabilizados (ver detalle abajo) |
| AbsentDays | Array | Lista de días de ausencia (ver detalle abajo) |
| PlannedInterval | Array | Intervalos planificados del periodo (mismo formato que Intervals, ver detalle abajo) |
| Weeks | Array | Detalle semanal del periodo (ver detalle abajo) |
TotalsDaysCounted
| Campos | Tipo de dato | Descripción |
|---|---|---|
| DayWithPay | Number | Cantidad total de días con pago |
| DayWithoutPay | Number | Cantidad total de días sin pago |
| AttendedDay | Number | Cantidad de días asistidos |
| RestDay | Number | Cantidad de días de descanso |
| ShouldNotWorkHoliday | Number | Cantidad de feriados que el usuario no debe trabajar |
| TimeOffWithPay | Number | Cantidad de días de permiso con goce de sueldo |
| Absences | Number | Cantidad de ausencias |
| TimeOffWithoutPay | Number | Cantidad de días de permiso sin goce de sueldo |
| ShouldWorkHoliday | Number | Cantidad de feriados que el usuario debe trabajar |
| AttendedHoliday | Number | Cantidad de feriados asistidos |
| AttendedSunday | Number | Cantidad de domingos asistidos |
| Vacations | Number | Cantidad de días de vacaciones |
| MedicalLicense | Number | Cantidad de días de licencia médica |
AbsentDays
| Campos | Tipo de dato | Descripción |
|---|---|---|
| Date | String | Fecha del día (yyyyMMddHHmmss) |
| Absent | String | Indica si el usuario estuvo ausente ese día (True / False) |
| HasDelay | String | Indica si hubo atraso en la entrada (True / False) |
| Delay | String | Tiempo de atraso de la entrada (HH:MM) |
Weeks
| Campos | Tipo de dato | Descripción |
|---|---|---|
| Intervals | Array | Intervalos diarios de la semana (ver detalle abajo) |
| WorkedHours | String | Horas trabajadas en la semana (HH:MM) |
| NonWorkedHours | String | Horas no trabajadas en la semana (HH:MM) |
| ActualWorkedHours | String | Horas realmente trabajadas en la semana (HH:MM) |
| TotalOvertime | String | Total de horas extra de la semana (HH:MM) |
| TotalApprovedOvertime | String | Total de horas extra aprobadas en la semana (HH:MM) |
| JustifiedHours | String | Horas justificadas en la semana (HH:MM) |
| PlannedHours | String | Horas planificadas en la semana (HH:MM) |
| SundaysWorkedHours | String | Horas trabajadas en domingos durante la semana (HH:MM) |
| HolidaysWorkedHours | String | Horas trabajadas en feriados durante la semana (HH:MM) |
| SundaysOvertime | String | Horas extra en domingos durante la semana (HH:MM) |
| SpecialOvertime | String | Horas trabajadas en un turno especial (HH:MM) |
| HoursPartTime | String | Horas part-time de la semana (HH:MM) |
| HE7D | String | Horas extra correspondientes al séptimo día (HH:MM) |
| ProfitHours | String | Horas beneficio de la semana (HH:MM) |
| AllDaysLocked | Boolean | Indica si todos los días de la semana están bloqueados |
| TotalLunchTimeTaken | String | Tiempo total de colación tomado en la semana (HH:MM) |
| TotalPlannedLunchTime | String | Tiempo total de colación planificado en la semana (HH:MM) |
| TotalExtraTime | String | Total de tiempo extra de la semana (HH:MM) |
| CompensatedWorkedTime | String | Tiempo trabajado compensado en la semana (HH:MM) |
| TotalWeekOvertimeAssignment | String | Total de asignación de horas extra de la semana (HH:MM) |
Intervals / PlannedInterval
| Campos | Tipo de dato | Descripción |
|---|---|---|
| Date | String | Fecha del intervalo (yyyyMMddHHmmss) |
| Punches | Array | Marcas del intervalo (ver detalle abajo) |
| Shifts | Array | Turnos del intervalo (ver detalle abajo) |
| TimeOffs | Array | Permisos del intervalo (ver detalle abajo) |
| Delay | String | Atraso en la entrada (HH:MM) |
| BreakDelay | String | Atraso en la entrada de colación (HH:MM) |
| EarlyLeave | String | Adelanto en la salida (HH:MM) |
| DelayTimeAfterCompensation | String | Atraso restante luego de compensación (HH:MM) |
| EarlyLeaveTimeAfterCompensation | String | Adelanto de salida restante luego de compensación (HH:MM) |
| WorkedHours | String | Horas trabajadas en el intervalo (HH:MM) |
| NonWorkedHours | String | Horas no trabajadas en el intervalo (HH:MM) |
| ActuallyNocturnalWorkedHours | String | Horas nocturnas realmente trabajadas (HH:MM) |
| Absent | String | Indica si el usuario estuvo ausente (True / False) |
| Holiday | String | Indica si el día es feriado (True / False) |
| Worked | String | Indica si el usuario trabajó (True / False) |
| CoveredNonWorkingHours | String | Horas que cubren horas no trabajadas (HH:MM) |
| AuthorizedOvertimeBefore | String | Horas extra autorizadas antes de la jornada (HH:MM) |
| AuthorizedOvertimeAfter | String | Horas extra autorizadas después de la jornada (HH:MM) |
| TotalAuthorizedOvertime | String | Total de horas extra autorizadas en el intervalo (HH:MM) |
| ExtraTimeBeforeShift | String | Tiempo extra antes del turno (HH:MM) |
| ExtraTimeAfterShift | String | Tiempo extra después del turno (HH:MM) |
| OvertimeAuthorizedBy | String | Usuario o responsable que autorizó las horas extra |
| AccomplishedExtraTimeBefore | Object | Horas extra cumplidas antes de la jornada por tipo (clave = id tipo, valor HH:MM) |
| AccomplishedExtraTimeAfter | Object | Horas extra cumplidas después de la jornada por tipo (clave = id tipo, valor HH:MM) |
| AccomplishedExtraTime | Object | Horas extra cumplidas totales por tipo (clave = id tipo, valor HH:MM) |
| AssignedExtraTimeBefore | Object | Horas extra asignadas antes de la jornada por tipo (clave = id tipo, valor HH:MM) |
| AssignedExtraTimeAfter | Object | Horas extra asignadas después de la jornada por tipo (clave = id tipo, valor HH:MM) |
| AssignedExtraTime | Object | Horas extra asignadas totales por tipo (clave = id tipo, valor HH:MM) |
Punches
| Campos | Tipo de dato | Descripción |
|---|---|---|
| PunchId | String | Identificador único de la marca |
| Type | String | Tipo de marca (entrada / salida) |
| Date | String | Fecha y hora de la marca (yyyyMMddHHmmss) |
| Origin | String | Origen de la marca (reloj, web, app, etc.) |
| Longitude | String | Longitud GPS de la marca |
| Latitude | String | Latitud GPS de la marca |
| Accuracy | String | Margen de error del GPS |
| GroupDescription | String | Descripción del grupo asociado a la marca |
| JustifiedTimeJustification | String | Justificación del tiempo justificado |
| UploadDate | String | Fecha de subida de la marca (yyyyMMddHHmmss) |
| ShiftPunchType | String | Tipo de marca dentro del turno |
| UserIdentifier | String | Identificador del usuario dueño de la marca |
| AssignedInBook | Boolean | Indica si la marca está asignada en el libro de asistencia |
| CallerId | String | Identificador telefónico (ANI) de la marca |
| BoxSn | String | Número de serie del reloj que registró la marca |
| IdProject | String | Identificador del proyecto asociado a la marca |
| IdTask | String | Identificador de la tarea asociada a la marca |
| Checksum | String | Checksum de validación de la marca |
Shifts
| Campos | Tipo de dato | Descripción |
|---|---|---|
| Id | String | Identificador único del turno |
| Begins | String | Fecha y hora de inicio del turno (yyyyMMddHHmmss) |
| Ends | String | Fecha y hora de término del turno (yyyyMMddHHmmss) |
| StartTime | String | Hora de inicio del turno (HH:MM) |
| MaxStartTime | String | Hora máxima de inicio del turno (HH:MM) |
| ExitTime | String | Hora de salida del turno (HH:MM) |
| Type | String | Tipo de turno |
| FixedShiftHours | String | Horas fijas del turno (HH:MM) |
| ShiftDisplay | String | Nombre o representación visible del turno |
| BreakType | String | Tipo de colación |
| BreakMinutes | String | Minutos de colación |
| BreakStart | String | Hora de inicio de la colación (HH:MM) |
| BreakEnd | String | Hora de término de la colación (HH:MM) |
| Status | String | Estado del turno (Enabled / Disabled) |
| Custom | String | Valor personalizado del turno |
TimeOffs
| Campos | Tipo de dato | Descripción |
|---|---|---|
| Id | String | Identificador único del permiso |
| TimeOffTypeId | String | Identificador del tipo de permiso |
| Description | String | Descripción del permiso |
| Starts | String | Fecha y hora de inicio del permiso (yyyyMMddHHmmss) |
| Ends | String | Fecha y hora de término del permiso (yyyyMMddHHmmss) |
| TimeOffTypeDescription | String | Descripción del tipo de permiso (traducida) |
| TimeOffOrigin | String | Origen del permiso |
| UserIdentifier | String | Identificador del usuario dueño del permiso |
| StartTime | String | Hora de inicio del permiso |
| EndTime | String | Hora de término del permiso |
| HolidayPeriod | String | Periodo del saldo de vacaciones ocupado (para permisos de Feriado Legal o Progresivo) |
| HolidayTypeCode | String | Código del tipo de goce del permiso (para permisos de Feriado Legal o Progresivo) |
| ExternalId | String | Identificador externo del permiso |
| AmountHours | String | Cantidad de horas del permiso (solo relevante para permisos por cantidad de horas) |
| Assignment | String | Asignación del permiso respecto al turno (ShiftStart / ShiftEnd) |
ExtraTimeValues
| Campos | Tipo de dato | Descripción |
|---|---|---|
| ValueId | String | Identificador único del valor de hora extra |
| Value | String | Valor o porcentaje de la hora extra |
| IsActive | String | Indica si el valor de hora extra está activo (True / False) |
Códigos
| Código | Descripción |
|---|---|
| 200 | Éxito |
| 400 | Error en el request |
Ejemplo response
{
"Users": [
{
"PlannedInterval": [
{
"Date": "20260501000000",
"Punches": [],
"Shifts": [
{
"Ends": "20260502000000",
"Begins": "20260501000000",
"Id": "EhKM7eLolc9WkWAmVCjZcw",
"StartTime": "00:00",
"MaxStartTime": "",
"ExitTime": "00:00",
"Type": "NotWorking",
"FixedShiftHours": "00:00",
"ShiftDisplay": "Break",
"BreakMinutes": "",
"BreakStart": "00:00",
"BreakEnd": "00:00",
"Status": "enabled",
"Custom": ""
}
],
"Delay": "00:00",
"BreakDelay": "00:00",
"EarlyLeave": "00:00",
"DelayTimeAfterCompensation": "00:00",
"EarlyLeaveTimeAfterCompensation": "00:00",
"TimeOffs": [],
"WorkedHours": "00:00",
"Absent": "False",
"Holiday": "True",
"Worked": "False",
"NonWorkedHours": "00:00",
"ActuallyNocturnalWorkedHours": "00:00",
"CoveredNonWorkingHours": "00:00",
"AuthorizedOvertimeBefore": "00:00",
"AuthorizedOvertimeAfter": "00:00",
"TotalAuthorizedOvertime": "00:00",
"AccomplishedExtraTimeBefore": {},
"AccomplishedExtraTimeAfter": {},
"AccomplishedExtraTime": {},
"AssignedExtraTimeBefore": {},
"AssignedExtraTimeAfter": {},
"AssignedExtraTime": {},
"ExtraTimeBeforeShift": "00:00",
"ExtraTimeAfterShift": "00:00"
},
{
"Date": "20260504000000",
"Punches": [
{
"Type": "Ingreso",
"Date": "20260504070000",
"Origin": "RCGPRS",
"GroupDescription": "dinatech mobile sas - 2001",
"UploadDate": "20260504120057",
"ShiftPunchType": "Entrada",
"AssignedInBook": true,
"BoxSn": "CKQX212460008",
"IdTask": "",
"IdProject": "",
"PunchId": "TJfO5jDKx59qWuzijAVSdQ",
"Checksum": "SgKFLFZVO6hIIau03rOdt4d2hmjhIYZrEytONk4L09KHffa"
},
{
"Type": "Salida",
"Date": "20260504180000",
"Origin": "RCGPRS",
"GroupDescription": "dinatech mobile sas - 2001",
"UploadDate": "20260504230014",
"ShiftPunchType": "Salida",
"AssignedInBook": true,
"BoxSn": "3316201807148",
"IdTask": "",
"IdProject": "",
"PunchId": "kD5nugTsYaCHbDh_-ns1Og",
"Checksum": "SgKFLFZVO6hIIau03rOdtyxZj3AlwhzbRAzISaTMIy94Jvn"
}
],
"Shifts": [
{
"Ends": "20260504160000",
"Begins": "20260504070000",
"Id": "-8K921C_fnri5yeIm6TgHA",
"StartTime": "07:00",
"MaxStartTime": "",
"ExitTime": "16:00",
"Type": "FixedShift",
"FixedShiftHours": "00:00",
"ShiftDisplay": "07:00 - 16:00 (60 mins)",
"BreakType": "FreeLunch",
"BreakMinutes": "60",
"BreakStart": "00:00",
"BreakEnd": "00:00",
"Status": "enabled",
"Custom": ""
}
],
"Delay": "00:00",
"BreakDelay": "00:00",
"EarlyLeave": "00:00",
"DelayTimeAfterCompensation": "00:00",
"EarlyLeaveTimeAfterCompensation": "00:00",
"TimeOffs": [],
"WorkedHours": "08:00",
"Absent": "False",
"Holiday": "False",
"Worked": "True",
"NonWorkedHours": "00:00",
"ActuallyNocturnalWorkedHours": "00:00",
"CoveredNonWorkingHours": "00:00",
"AuthorizedOvertimeBefore": "00:00",
"AuthorizedOvertimeAfter": "02:00",
"TotalAuthorizedOvertime": "02:00",
"AccomplishedExtraTimeBefore": {},
"AccomplishedExtraTimeAfter": {
"100": "02:00"
},
"AccomplishedExtraTime": {
"100": "02:00"
},
"AssignedExtraTimeBefore": {
"100": "00:00"
},
"AssignedExtraTimeAfter": {
"100": "02:00"
},
"AssignedExtraTime": {
"100": "02:00"
},
"ExtraTimeBeforeShift": "00:00",
"ExtraTimeAfterShift": "02:00",
"OvertimeAuthorizedBy": "Mercedes CarolinaGomez Fajardo"
}
],
"TotalWorkedHours": "168",
"WorkedDays": 23,
"NonWorkedDays": 7,
"Absences": 0,
"Holidays": 0,
"Vacation": 0,
"DaysLeaveWithPay": 0,
"DaysLeaveWithoutPay": 0,
"AbsenceDaysWithoutJustification": 0,
"AbsenceDaysLicense": 0,
"WorkedSundays": 0,
"WorkedHolidays": 0,
"DaysAttended": 23,
"Id": "K0--lX0NcrkLeP_w62AeFQ",
"Identifier": "65631998",
"Enabled": "1",
"Name": "Maria Constanza",
"LastName": "Gamba Cante",
"Email": "moti.0226@hotmail.com",
"GroupDescription": "dinatech mobile sas - 2001",
"PositionId": "xit8BQ5HOO3ZejTzkmsEWA",
"PositionDescription": "ASISTENTE DE OPERACIONES",
"WeeklyWorkingHoursCodeId": "sDzBzlFnefikfhnZoFXLiw",
"CustomColumn2": "11002",
"IsHiddenForReports": "False"
}
],
"ExtraTimeValues": [
{
"ValueId": "_zJ93jwRsKIhbdGpsDwDfg",
"Value": "100",
"IsActive": "1"
},
{
"ValueId": "v0VTt1s_wg7qHGUyRhCWww",
"Value": "115",
"IsActive": "1"
}
]
}