WSGetArchivosMultimedia
Acceso a los archivos multimedia de una tarea: descargar un archivo (base64), listar todos los archivos, o generar el PDF del formulario (base64). Cada llamada ejecuta uno de los tres modos.
Get Multimedia
/apidev/legacy/WSGetArchivosMultimediaModos (precedencia en este orden): si ObtenerArchivo no está vacío descarga ese archivo; si no, y ObtenerListaArchivos es true, devuelve la lista en Archivos + Archivos2; si no, y ObtenerFormularioPDF es true, genera el PDF del formulario en ArchivoBase64.
Request Body
Claves de primer nivel: WSAutorizacion, WSSDTFiltroArchivosMultimedia.
| Field | Type | Required | Description |
|---|---|---|---|
WSAutorizacion | object | Yes | Bloque de autenticación. |
WSAutorizacion.Guid | string | Yes | GUID de la compañía (API key). Se resuelve a CiaId; vacío/desconocido ⇒ CiaId = 0 (error). |
WSAutorizacion.Usuario | string | Yes | Login/email del usuario (se normaliza a minúsculas y se recorta). |
WSAutorizacion.Password | string | Yes | Contraseña del usuario. |
WSSDTFiltroArchivosMultimedia | object | Yes | Filtro de la consulta (campos abajo). |
WSSDTFiltroArchivosMultimedia.NroServicio | string (numérico) | Conditional | Número de tarea interno (SerNroServicio). Se requiere uno de NroServicio (≠0) o IdExterno (≠""). |
WSSDTFiltroArchivosMultimedia.IdExterno | string | Conditional | Id externo del servicio (SerID_Externo). Se requiere uno de NroServicio o IdExterno. |
WSSDTFiltroArchivosMultimedia.ObtenerArchivo | string | No | Nombre del archivo a descargar. Si no está vacío ⇒ descarga ese archivo en ArchivoBase64 (mayor precedencia de los tres modos). |
WSSDTFiltroArchivosMultimedia.ObtenerListaArchivos | boolean | No | Si es true (y ObtenerArchivo vacío) ⇒ devuelve la lista de archivos en Archivos + Archivos2. |
WSSDTFiltroArchivosMultimedia.ObtenerFormularioPDF | boolean | No | Si es true (y sin ObtenerArchivo/ObtenerListaArchivos) ⇒ genera el PDF del formulario en ArchivoBase64. |
Response
Clave de primer nivel: WSSDTDatosMultimedia.
| Field | Type | Description |
|---|---|---|
WSSDTDatosMultimedia | object | Wrapper de respuesta. |
WSSDTDatosMultimedia.ArchivoBase64 | string | Base64 del archivo solicitado (modo descarga) o del PDF generado (ObtenerFormularioPDF). |
WSSDTDatosMultimedia.Error | string | Sobre de error. Poblado ante fallo de validación/autenticación o cuando ningún servicio coincide con los permisos. |
WSSDTDatosMultimedia.Archivos | string[] | Modo lista: etiquetas simples con formato "<SerMediaNom> [<SerMediaDsc>]". |
WSSDTDatosMultimedia.Archivos2 | array<Archivo> | Modo lista: entradas estructuradas de archivo (campos abajo). |
Archivos2[] (objeto Archivo):
| Field | Type | Description |
|---|---|---|
Nombre | string | Nombre del archivo (SerMediaNom). |
Tipo | string | Tipo del archivo (SerMediaTipo). |
Size | string (numérico) | Tamaño del archivo (SerMediaSize). |
Fecha | string (datetime, yyyy-MM-ddTHH:mm:ss) | Fecha del archivo (SerMediaFch). |
Notas | string | Descripción/notas (SerMediaDsc). |
FormularioNombre | string | Nombre del formulario asociado (SerMediaSerFormFormNom). |
FormularioFecha | string (datetime, yyyy-MM-ddTHH:mm:ss) | Fecha del formulario asociado (SerMediaSerFormFecha). |
Code Examples
- cURL
- JavaScript
- Python
curl -s -X POST "https://$TENANT/apidev/legacy/WSGetArchivosMultimedia" \
-H "Content-Type: application/json" \
-d '{
"WSAutorizacion": {
"Guid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"Usuario": "usuario@empresa.com",
"Password": "contraseña"
},
"WSSDTFiltroArchivosMultimedia": {
"NroServicio": "103878",
"ObtenerListaArchivos": true
}
}'
const res = await fetch(`https://${TENANT}/apidev/legacy/WSGetArchivosMultimedia`, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
WSAutorizacion: {
Guid: 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx',
Usuario: 'usuario@empresa.com',
Password: 'contraseña',
},
WSSDTFiltroArchivosMultimedia: {
NroServicio: '103878',
ObtenerListaArchivos: true,
},
}),
});
const data = await res.json();
import requests
response = requests.post(
f"https://{TENANT}/apidev/legacy/WSGetArchivosMultimedia",
json={
"WSAutorizacion": {
"Guid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"Usuario": "usuario@empresa.com",
"Password": "contraseña",
},
"WSSDTFiltroArchivosMultimedia": {
"NroServicio": "103878",
"ObtenerListaArchivos": True,
},
},
)
data = response.json()
Example Response
{
"WSSDTDatosMultimedia": {
"ArchivoBase64": "",
"Error": "",
"Archivos": [
"foto_origen.jpg [Foto de llegada]",
"formulario_inspeccion.pdf []"
],
"Archivos2": [
{
"Nombre": "foto_origen.jpg",
"Tipo": "image/jpeg",
"Size": "204800",
"Fecha": "2026-04-03T10:32:00",
"Notas": "Foto de llegada",
"FormularioNombre": "",
"FormularioFecha": ""
},
{
"Nombre": "formulario_inspeccion.pdf",
"Tipo": "application/pdf",
"Size": "89600",
"Fecha": "2026-04-03T11:00:00",
"Notas": "",
"FormularioNombre": "Inspección de vehículo",
"FormularioFecha": "2026-04-03T11:00:00"
}
]
}
}
En modo descarga (ObtenerArchivo) o PDF (ObtenerFormularioPDF), el contenido viaja en ArchivoBase64 y Archivos/Archivos2 quedan vacíos:
{
"WSSDTDatosMultimedia": {
"ArchivoBase64": "JVBERi0xLjQKJ...==",
"Error": "",
"Archivos": [],
"Archivos2": []
}
}
Errors
Este servicio siempre responde HTTP 200. El detalle del error viaja en el campo WSSDTDatosMultimedia.Error del sobre; nunca como código 4xx/5xx.
Error (campo Error) | Causa |
|---|---|
GUID Inválido | El Guid no resuelve a una compañía (CiaId = 0). |
Compañía inválida. | CiaId == 0 alcanzado en la rama interna (verificación defensiva del GUID). |
URL Inválida | La URL de origen no está en la lista permitida (exento: admincloud@logicsat.com). |
Error: Debe ingresar el id del servicio externo o el nro de tarea del sistema. | Ni NroServicio (≠0) ni IdExterno (≠"") fueron provistos. |
No se encontraron registros que cumplan con los filtros ingresados | Ningún servicio coincidió con los filtros y/o permisos del usuario (móvil + procedencia + ver-tarea). |
Un archivo solo se devuelve si el usuario que llama pasa las verificaciones de móvil, procedencia y ver-tarea para ese servicio. Si ninguna fila pasa ⇒ Error = "No se encontraron registros..." y ArchivoBase64/listas quedan vacíos.