Seguimiento del Progreso de la Carga con Suscripciones
Después de subir un archivo a la URL prefirmada de S3, la plataforma continúa procesándolo de forma asíncrona.
Usa subscribeUserFeed para recibir eventos de carga en tiempo real en lugar de hacer polling.
Alternativa más sencilla
Si no necesitas eventos en tiempo real, puedes hacer polling del campo fileUploaded de la plantilla hasta que devuelva true.
Para el esquema general de eventos, consulta Formato de Evento de Suscripción.
Feed y Categoría
Los eventos de carga se entregan en:
subscribeUserFeed
Utilizan:
category: "upload"
Nombres de Eventos
El procesamiento de la carga emite una secuencia de eventos como:
uploadScanneduploadTypeCheckeduploadConvertinguploadFlatteneduploadTagsParseduploadPdfMetaExtracteduploadCompleteduploadFailed
Carga del Evento de Subida
Las cargas de eventos usan esta forma base:
{
"version": "1.0",
"eventId": "evt...",
"timestamp": "2026-04-24T10:38:36.822Z",
"level": "INFO",
"event": "uploadCompleted",
"category": "upload",
"groupId": null,
"userId": "usr...",
"requestId": null,
"batchId": null,
"error": null,
"data": {
"id": "tmp...",
"key": "upload/usr.../tmp....pdf",
"code": "UPLOADOK"
}
}
data.code conserva el código de procesamiento de bajo nivel durante la migración y compatibilidad.
Operación de Suscripción
subscription SubscribeUserFeed {
subscribeUserFeed {
userId
data
}
}
Ejemplo en JavaScript
const parseEnvelope = (payload) => {
const raw = payload?.data;
if (!raw) return null;
return typeof raw === 'string' ? JSON.parse(raw) : raw;
};
const handleUserFeed = ({ data }) => {
const wrapper = data?.subscribeUserFeed;
const event = parseEnvelope(wrapper);
if (event?.category !== 'upload') return;
switch (event.event) {
case 'uploadCompleted':
console.log('upload complete', event.data.id, event.data.key);
break;
case 'uploadFailed':
console.error('upload failed', event.data.code, event.data.key);
break;
default:
console.log('upload progress', event.event, event.data.code);
}
};
Cuándo Usar Esto
Esto es más útil cuando quieres:
- mostrar un panel de progreso o una línea de tiempo del estado de la carga
- detectar fallas de validación asíncronas después de que el PUT en S3 haya tenido éxito
- reaccionar inmediatamente cuando una plantilla o un activo cargado esté listo