Ir directamente al contenido
Español
  • No hay sugerencias porque el campo de búsqueda está vacío.

Envío en bloque de nómina electrónica: respuesta asíncrona con job-id

Los endpoints de envío en bloque de nómina electrónica responden de forma asíncrona. Ya no devuelven el resultado del procesamiento en la misma llamada: guardan el lote, lo encolan y responden de inmediato con un identificador de trabajo (job-id).

Cambio de comportamiento

Todas las validaciones del lote (importación, cupo de documentos del plan y validaciones por registro) corren dentro del trabajo asíncrono, no durante la petición.

Antes Ahora
Un lote inválido respondía 400 de forma sincrónica con la lista de errores La petición responde 201 con el job-id; los errores se consultan después en /job-status/{job-id}

Un cliente que esperaba el 400 sincrónico debe migrar al flujo de consulta de estado.

Endpoints en bloque

Método Endpoint Qué envía
POST /payroll-entries-batch Comprobantes de nómina
POST /payroll-replacements-batch Notas de reemplazo
POST /payroll-deletions-batch Notas de eliminación

Respuesta:

201
{ "job-id": "3f2a…" }

Paso 2: consultar el estado

GET /job-status/{job-id}
HTTP status Significado
202 el estado en curso El trabajo sigue procesando. progress indica el porcentaje.
200 done El trabajo terminó correctamente. progress es 100.
200 failed El trabajo abortó. Trae errors, un arreglo de objetos con message explicando cada motivo.
404 not-found No se encontró el trabajo.

Ejemplo de un lote que falló:

200
{
  "job-id":   "3f2a…",
  "status":   "failed",
  "progress": 100,
  "errors":   [ { "message": "…motivo del fallo…" } ]
}

Importante: un lote que falló responde 200, no un código de error. Lo que indica el fallo es el campo status con valor failed. Al recibirlo, deja de consultar el estado y revisa errors.

Este endpoint aplica una demora deliberada de medio segundo en cada respuesta, para desincentivar la consulta en bucle cerrado. Consulta con intervalos razonables.

Paso 3: obtener el resultado

Método Endpoint Devuelve
GET /batch-result/{job-id} El resultado del lote
GET /batch-result-url/{job-id} Una URL al archivo de resultados

Si el resultado todavía no está disponible, la respuesta es:

{ "message": "No se encuentra ese 'job'. Quizas no esta terminado de processar" }

Ese mensaje significa que el trabajo aún no ha terminado: consulta primero /job-status/{job-id} y pide el resultado cuando el status sea done.

Flujo recomendado

  1. POST al endpoint en bloque → guarda el job-id de la respuesta 201.
  2. Consulta /job-status/{job-id} con intervalos razonables.
  3. Si status es failed, detente y procesa errors.
  4. Si status es done, pide /batch-result/{job-id} (o /batch-result-url/{job-id}).

Si tienes dudas, escríbenos por el chat de soporte dentro de tu cuenta de Dataico. Lo encuentras en la burbuja de la esquina inferior derecha de la pantalla.