terminal Referencia técnica v1.0

Adjuntos binarios

Cómo llegan a la compañía las fotografías y los datos que el chofer carga desde la aplicación: el mismo punto de acceso que los avances de caso, la imagen embebida en el JSON como data URI y el paso codificado en el campo index.

updateActualizado: 17 de septiembre de 2026groupDirigido a: Equipos de sistemas e integradoresdeployed_codeAplica a: AsistManager · am-hermes-core · aplicación de prestadores

Descripción #

El chofer saca la fotografía en la aplicación, AsistManager la recibe, la guarda y la reenvía a la compañía como un mensaje propio.

Cada adjunto es una petición independiente. Un mismo caso puede producir varios, y no llegan agrupados: llegan de a uno, correlacionados por el identificador del caso.

error
Los adjuntos llegan al mismo punto de acceso que los avances de caso
No hay una dirección separada para adjuntos. Su sistema va a recibir, en el mismo punto de acceso, dos cuerpos distintos, y tiene que discriminarlos: si el cuerpo trae task, es un avance de caso; si trae data e index, es un adjunto. Un receptor escrito solo para avances va a fallar al procesar el primer adjunto, o va a descartarlo en silencio.

Los dos cuerpos que llegan al mismo punto de acceso #

data_object Avance de caso · trae task
json
{
  "source": "<clave de la compañía>",
  "identifier": "20260917102415733",
  "alias": "prestador",
  "date": "2026-09-17T11:42:08.310000-03:00",
  "task": { … }
}

Este es el aviso de avance, descripto en Eventos de avance y coordenadas del móvil. Se reconoce por la presencia de task.

data_object Adjunto · trae data e index
json
{
  "fecha": "2026-09-17T11:43:20.000000-03:00",
  "source": "core",
  "worker": "movil-12",
  "alias": "prestador",
  "identifier": "20260917102415733",
  "index": "arrive-0",
  "type": "image",
  "data": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQ… (recortado)"
}

Se reconoce por la presencia de data e index. El contenido de data está recortado en el ejemplo: en el mensaje real son decenas de miles de caracteres.

Cómo discriminar los dos mensajes #

Si el cuerpo trae…Es…Cómo se correlaciona
taskUn avance de casoPor identifier
data e indexUn adjuntoPor identifier
info
Cómo solicitar el acceso
Para integrarse, escriba a soporte@dosalinfinito.com.ar y solicite el acceso. En ese trámite se registra el método de callback de su sistema, que es el mismo que recibe los avances de caso. Las direcciones de los puntos de acceso y las credenciales se entregan de forma individual.
warning
La imagen viaja embebida en el JSON
No es un envío multipart y tampoco es una dirección de descarga. El campo data contiene la imagen completa como data URI en base64, y empieza con data:image/jpeg;base64,. Sobre los adjuntos recientes medidos, el cien por ciento son JPEG. Aun así, conviene leer el tipo declarado en el propio data URI en lugar de darlo por sentado.

Campos del adjunto #

Campo Tipo Obligatorio Valores posibles Descripción
fecha string Obligatorio ISO 8601 en hora local Momento en que AsistManager recibió el adjunto. No es el momento en que se sacó la foto: no existe un dato de captura en el mensaje.
source string Obligatorio <code>core</code> Vale literalmente core y no identifica a la compañía. A diferencia del aviso de avance, acá este campo no aporta información de origen: no lo use para enrutar, filtrar ni correlacionar.
worker string Obligatorio — Identificador del móvil que sacó la foto o cargó el dato. Es el mismo valor que llega en Movil dentro del aviso de avance.
alias string Obligatorio — El prestador que está atendiendo el servicio.
identifier string Obligatorio — El identificador del caso. Es la única clave de correlación: es lo que permite saber a qué servicio pertenece el adjunto.
index string Obligatorio — Dónde está codificado el paso al que corresponde el adjunto. No hay un campo aparte que lo indique. Los valores se detallan más abajo.
type string Obligatorio <code>image</code> · <code>audio</code> · <code>text</code> · <code>field</code> Qué clase de contenido trae data. No todo lo que se reenvía es una imagen.
data string Obligatorio — El contenido. Con type igual a image es un data URI en base64; con los demás tipos es texto plano.

El paso está codificado en index #

El mensaje no tiene un campo que diga a qué momento del servicio corresponde la foto. Eso se lee del valor de index, que sigue cuatro formas.

Formas del campo index #

FormaEjemplosQué es
arrive-<n>arrive-0 · arrive-1Fotografías del arribo. El número es el orden dentro de ese paso.
finish-<n>finish-0 · finish-1Fotografías del cierre del servicio.
<evento>-<categoría>-<n>arrive-portico-0Capturas exigidas por una regla de captura obligatoria, con la categoría en el medio.
Solo un número0 · 1 · 2Adjuntos del flujo anterior: no tienen paso asociado. Se siguen recibiendo y hay que contemplarlos.
warning
No todos los adjuntos son imágenes
Con type igual a audio, text o field, el campo data trae texto plano y no un data URI de imagen. Un receptor que asuma que data siempre empieza con data:image/ va a romperse o va a guardar basura. Compruebe type antes de procesar el contenido.

Tamaños #

Sobre los adjuntos medidos, la cadena en base64 va de 7 KB a 70 KB, con una mediana de 26 KB. Eso equivale aproximadamente a imágenes de 5 KB a 52 KB, porque el base64 agrega alrededor de un tercio al tamaño original.

AsistManager no impone un límite de tamaño ni una cantidad máxima de adjuntos por caso. El techo lo pone la aplicación, que comprime la imagen antes de subirla. Conviene dimensionar el receptor con esos valores como referencia, no como garantía contractual.

Entrega y reintentos #

Los adjuntos usan exactamente la misma política que los avisos de avance: éxito con HTTP 2xx, la misma cadencia de reintentos y caducidad a los 5 días. Está descripta en detalle en Entrega y reintentos, dentro del documento de eventos de avance. Vale también acá lo que se dice allí sobre los códigos 4xx: dos respuestas 4xx que no sean 408 ni 429 descartan el adjunto, mientras que un 5xx sostiene el reintento durante los cinco días.

error
Un adjunto enviado no se retracta
Si el chofer borra una fotografía en el teléfono después de que se envió, el adjunto ya está en su sistema y no se emite ningún mensaje de baja ni de corrección. No existe una retractación. Lo decimos con todas las letras para que nadie diseñe su galería suponiendo que va a recibir un aviso de borrado.

Errores frecuentes #

Los reclamos más habituales sobre adjuntos se explican por alguno de estos puntos.

Código Qué se ve Causa Cómo se resuelve
Error de análisis El receptor falla al procesar un mensaje en el punto de acceso de avances Llegó un adjunto y el receptor esperaba task. Discriminar por presencia de clave: task es avance, data e index es adjunto.
Adjuntos huérfanos Llegan adjuntos que no se pueden asociar a ningún caso Se está intentando correlacionar por source, que vale siempre core. Correlacionar por identifier. Es la única clave válida para eso.
Contenido ilegible Se guarda un archivo que después no abre Se procesó como imagen un adjunto con type igual a text, audio o field, cuyo data es texto plano. Verificar type antes de decodificar, y leer el tipo declarado dentro del propio data URI.
Fotos sin paso Algunos adjuntos no se pueden clasificar en arribo o cierre El index trae solo un número. Son adjuntos del flujo anterior, sin paso asociado. Contemplar esa forma y clasificarlos como sin paso en lugar de rechazarlos.
Horario que no cierra La hora del adjunto no coincide con la del arribo fecha es el momento de recepción en AsistManager, no el de la captura. Usar los campos Hora* del caso para ubicar el momento operativo. No existe un dato de captura en el adjunto.
Adjuntos perdidos Después de una caída propia faltan fotografías El receptor respondió 4xx durante la caída y el adjunto se descartó. Responder 5xx ante una falla temporal. Con 5xx se reintenta durante cinco días.

Compatibilidad #

Componente Desde Estado Nota
Adjunto con imagen embebida en base64 En producción vigente El cien por ciento de los adjuntos recientes medidos son JPEG.
<code>index</code> con <code>arrive-&lt;n&gt;</code> y <code>finish-&lt;n&gt;</code> En producción vigente Es la forma habitual del flujo actual.
<code>index</code> con categoría intermedia En producción vigente Aparece cuando hay reglas de captura obligatoria definidas para el caso.
<code>index</code> con un número suelto Histórico Deprecado Flujo anterior, sin paso asociado. Se sigue recibiendo: hay que contemplarlo.
Adjuntos con <code>type</code> distinto de <code>image</code> En producción vigente Con audio, text y field el campo data es texto plano.
← Volver a la documentación de AsistManager Última actualización: 17 de septiembre de 2026