NominexDocs
Referencia de la APIAsistencia

Capturar

Captura una incidencia de asistencia para varios empleados en un rango de fechas.

Descripcion general

Este endpoint captura un tipo de incidencia (falta, vacaciones, horas extra, retardo, etc.) para un conjunto de empleados a lo largo de un rango de fechas. Las incidencias se registran en el registro global de asistencia, del que cada corrida de nómina lee. Los periodos abiertos ya calculados se recalculan solos con cada captura, así que sus recibos reflejan el registro de inmediato. Si ese recálculo automático no se completa, la respuesta llega con recalc_pending: true y el periodo queda desactualizado hasta que lo recalcules.

Referencias por número/código: los empleados por employee_numbers y el tipo por incidence_code. El catálogo de tipos es global y fijo de la plataforma — el mismo conjunto de códigos para todas las razones sociales (consulta Listar tipos de incidencia).

Una fecha que caiga dentro de un periodo cerrado no se aplica en silencio: se convierte en un ajuste retroactivo que corrige la nómina en el siguiente periodo, y debes confirmarlo con confirm_retro: true (ver más abajo).

Las horas extra (OVERTIME_DOUBLE_HOURS y OVERTIME_TRIPLE_HOURS) capturadas por la API se crean pendientes de autorizar: no se pagan hasta que las autorizan todos los niveles configurados en la organización (jefe directo, Recursos Humanos o los dos). Su estatus se consulta en el campo approval_status de Listar asistencia.

Requiere que la API key tenga el permiso Capturar asistencia.

Endpoint

POSThttps://app.integranom.com/api/v1/attendance

Captura una incidencia en un rango


Un tipo de incidencia, un conjunto de empleados, un rango de fechas. Para un tipo de día (falta, vacaciones, incapacidad) se crea una entrada por día con cantidad 1, o 0.5 en vacaciones de medio día. Vacaciones pagadas (VACATION_PAID) y los permisos con y sin goce (LEAVE_PAID, LEAVE_UNPAID) solo crean entradas en los días hábiles del horario de cada empleado: sus días de descanso y los días festivos de ley se omiten (sin horario ni rotación asignados, cuenta el predeterminado de la organización; sin ninguno, solo los festivos), y una fecha de medio día que cae en uno de ellos se ignora. El ejemplo captura una falta el 3 y el 4 de junio para dos empleados → created: 4.

created es el número de entradas registradas; retros_touched, cuántos ajustes retroactivos se crearon o refrescaron (0 cuando ninguna fecha cae en un periodo cerrado). El rango no puede exceder 366 días.

Campos del cuerpo

CampoTipoRequeridoNotas
incidence_codestringSíCódigo del tipo de incidencia en el catálogo global (p. ej. LATENESS).
employee_numbersinteger[]Sí1–500 empleados. Cada uno debe tener un empleo activo o pendiente.
start_date / end_datestring (YYYY-MM-DD)SíRango (inclusivo). end_date ≥ start_date. Máximo 366 días.
quantitynumberCondicionalRequerida para tipos hours y count. En VACATION_PAID y VACATION_UNPAID, 0.5 registra medio día por fecha y cualquier otro valor se registra como 1 (día completo, por omisión); en los demás tipos days se ignora y se registra 1.
notesstringNoMáximo 500 caracteres.
disability_foliostringNoFolio del certificado de incapacidad, máximo 30 caracteres. Solo para tipos de incapacidad y un solo empleado. Se guarda en mayúsculas. Un folio pertenece a un solo empleado y sus días deben ser consecutivos.
confirm_retrobooleanNoAutoriza que las fechas dentro de un periodo cerrado se registren como ajuste retroactivo. Ver abajo.

Fechas dentro de un periodo cerrado (ajuste retroactivo)


Cerrar un periodo es definitivo. Una incidencia dentro de sus fechas no reescribe la nómina ya pagada: se registra como un ajuste retroactivo que corrige la diferencia en el siguiente periodo.

Por eso, si alguna fecha cae en un periodo cerrado, la captura se rechaza con 409 RETRO_CONFIRMATION_REQUIRED (con retro_periods, los periodos afectados). Reenvíala con confirm_retro: true para aceptar y registrar el ajuste — la respuesta trae retros_touched mayor a 0.

Cantidad (según la unidad del tipo)

Unidad del tipoquantityComportamiento
days de vacaciones (VACATION_PAID, VACATION_UNPAID)OpcionalUna entrada por día: 0.5 es medio día y cualquier otro valor se registra como 1.
Demás days (falta, incapacidad, permiso…)Se ignoraUna entrada por día con cantidad 1.
hours (horas extra)RequeridaLas horas capturadas por día del rango.
count (retardos)RequeridaEl número de ocurrencias por día del rango.

Forma de la respuesta

200 — { "created": number, "retros_touched": number, "recalc_pending": boolean }.

CampoSignificado
createdEntradas registradas en el registro global (reenvíos idénticos no se duplican; sobre horas extra rechazadas sin checadas vinculadas, la respuesta es 409 OVERTIME_REJECTED).
retros_touchedAjustes retroactivos creados o refrescados por fechas dentro de un periodo cerrado.
recalc_pendingtrue si el recálculo en tiempo real de algún periodo abierto no se completó: la incidencia quedó registrada, pero los recibos de ese periodo van desfasados hasta volver a calcularlo.

Errores

StatusCódigoCausa
400—Cuerpo mal formado o inválido.
400EMPLOYEE_NOT_FOUNDAlgún employee_number no existe en la organización.
400NO_ACTIVE_EMPLOYMENTAlgún empleado no tiene empleo activo o pendiente.
400INCIDENCE_NOT_FOUNDSin tipo activo con ese incidence_code en el catálogo global.
400RANGE_TOO_LARGEEl rango excede 366 días.
400NO_CHARGEABLE_DAYSEn vacaciones pagadas o permisos, todas las fechas del rango son días de descanso o festivos para los empleados. No se captura nada.
400DISABILITY_FOLIO_NOT_ALLOWEDSe envió disability_folio con un tipo que no es incapacidad.
400DISABILITY_FOLIO_MULTIPLE_EMPLOYEESSe envió disability_folio para más de un empleado.
401—API key ausente o inválida.
403—La API key no tiene el permiso Capturar asistencia.
409DAY_CONFLICTAlgún empleado ya tiene otro estatus de día en una de las fechas (los tipos de día son mutuamente excluyentes). Con disability_folio, también cuenta una incapacidad del mismo tipo ya capturada. No se captura nada.
409OVERTIME_REJECTEDAlgún empleado ya tiene horas extra rechazadas de ese tipo, sin checadas vinculadas, en una de las fechas. No se captura nada; el registro rechazado se corrige en la plataforma, en Incidencias de tiempo: cambia sus horas para enviarlo de nuevo a autorización, o elimínalo y vuelve a capturar.
409RETRO_CONFIRMATION_REQUIREDAlguna fecha cae en un periodo cerrado. Reenvía con confirm_retro: true.
409DISABILITY_FOLIO_TAKENEl folio ya está registrado para otro empleado. No se captura nada.
409DISABILITY_FOLIO_NOT_CONSECUTIVEEl empleado ya tiene ese folio en fechas que no son consecutivas con las enviadas. No se captura nada.
Abrir Nominex