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 campostatuscon valorfailed. Al recibirlo, deja de consultar el estado y revisaerrors.
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
POSTal endpoint en bloque → guarda eljob-idde la respuesta201.- Consulta
/job-status/{job-id}con intervalos razonables. - Si
statusesfailed, detente y procesaerrors. - Si
statusesdone, 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.