Ir al contenido
CtrlK

Ejemplos

Los ejemplos usan curl y la variable $API_TOKEN. La URL base es https://cloud.viewneo.com/api/public/v1.

Los archivos no pasan por la propia API, sino que van directamente al almacenamiento, a través de una dirección prefirmada. Así, incluso los vídeos grandes se suben rápido.

Ventana de terminal
# 1. iniciar la subida
curl https://cloud.viewneo.com/api/public/v1/media/uploads -H "Authorization: Bearer $API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"filename":"speisekarte.jpg","mimeType":"image/jpeg","fileSize":'"$(wc -c < speisekarte.jpg)"'}'
# 2. enviar el archivo a upload.url de la respuesta
curl -X PUT "$UPLOAD_URL" -H "Content-Type: image/jpeg" --data-binary @speisekarte.jpg
# 3. finalizar, con la suma de comprobación MD5
curl https://cloud.viewneo.com/api/public/v1/media/uploads/$MEDIA_ID/complete -H "Authorization: Bearer $API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"md5":"'"$(openssl md5 -r speisekarte.jpg | cut -d' ' -f1)"'"}'

Los archivos grandes llegan como multipart: la respuesta del paso 1 indica entonces el tamaño de las partes; las direcciones de las partes las obtienes con POST /media/uploads/{id}/parts.

Después, el contenido está listo. Los vídeos se preparan en segundo plano para la reproducción. Algunos formatos se convierten y, al hacerlo, sustituyen al contenido subido: TIFF, BMP y HEIC pasan a JPEG (o PNG si hay transparencia), y documentos como PDF o PowerPoint, a una imagen por página en una carpeta nueva. Los ID nuevos los encuentras con GET /media?folderId=….

Ventana de terminal
# añadir el contenido a una playlist, los días laborables al mediodía
curl https://cloud.viewneo.com/api/public/v1/playlists/$PLAYLIST_ID/entries \
-H "Authorization: Bearer $API_TOKEN" -H "Content-Type: application/json" \
-d '{"type":"media","mediaId":"'"$MEDIA_ID"'","durationSeconds":15,
"schedule":{"rule":"scheduled","weekdays":["mon","tue","wed","thu","fri"],"startTime":"11:30","endTime":"14:30"}}'
# asignar la playlist a un dispositivo (un grupo funciona igual con /device-groups)
curl -X PATCH https://cloud.viewneo.com/api/public/v1/devices/$DEVICE_ID \
-H "Authorization: Bearer $API_TOKEN" -H "Content-Type: application/json" \
-d '{"playlistId":"'"$PLAYLIST_ID"'"}'

Diseña una vez en el Designer una plantilla con marcadores de posición. Tu sistema crea a partir de ella un contenido y lo actualiza cada vez que cambian los datos:

Ventana de terminal
# ¿qué marcadores de posición tiene la plantilla?
curl https://cloud.viewneo.com/api/public/v1/templates/$TEMPLATE_ID -H "Authorization: Bearer $API_TOKEN"
# crear un contenido a partir de ella; su ID lo añades a una playlist como cualquier archivo multimedia
curl https://cloud.viewneo.com/api/public/v1/templates/$TEMPLATE_ID/contents \
-H "Authorization: Bearer $API_TOKEN" -H "Content-Type: application/json" \
-d '{"name":"Mittagstisch","values":{"gericht":"Labskaus","preis":"12,50 €"}}'
# al día siguiente, cambiar los valores; los dispositivos se actualizan solos
curl -X PATCH https://cloud.viewneo.com/api/public/v1/template-contents/$CONTENT_ID \
-H "Authorization: Bearer $API_TOKEN" -H "Content-Type: application/json" \
-d '{"values":{"gericht":"Fischfrikadelle","preis":"11,90 €"}}'

Los nombres de los marcadores de posición (aquí gericht y preis) proceden de tu plantilla.

Envía el contenido completo en una sola llamada. Las entradas que envíes con su id se conservan, las nuevas se crean y todas las demás se eliminan:

Ventana de terminal
curl -X PUT https://cloud.viewneo.com/api/public/v1/playlists/$PLAYLIST_ID/entries \
-H "Authorization: Bearer $API_TOKEN" -H "Content-Type: application/json" \
-d '{"entries":[{"type":"media","mediaId":"'"$ANGEBOT_1"'"},{"type":"media","mediaId":"'"$ANGEBOT_2"'"}]}'

Inicia el reproductor; muestra un código de activación de seis caracteres. Actívalo en un grupo de dispositivos (cada dispositivo pertenece a uno) y reproducirá de inmediato sus contenidos:

Ventana de terminal
curl https://cloud.viewneo.com/api/public/v1/devices/activate \
-H "Authorization: Bearer $API_TOKEN" -H "Content-Type: application/json" \
-d '{"activationCode":"AB3XZ7","name":"Lobby Empfang","groupId":"'"$GROUP_ID"'"}'

Cada reproductor necesita una licencia; las licencias nunca se contratan automáticamente. Sin licencia libre, la API responde con 409 LICENSE_LIMIT_REACHED.

Ventana de terminal
curl "https://cloud.viewneo.com/api/public/v1/devices?limit=100" -H "Authorization: Bearer $API_TOKEN" \
| jq '.data[] | select(.online == false) | {name, lastSeenAt}'

Obtener la prueba de reproducción de un día

Sección titulada «Obtener la prueba de reproducción de un día»
Ventana de terminal
curl "https://cloud.viewneo.com/api/public/v1/reports/device-log/$DEVICE_ID?filter=playouts&from=2026-10-06T00:00:00Z&to=2026-10-07T00:00:00Z&limit=200" \
-H "Authorization: Bearer $API_TOKEN"

Repite la llamada con &cursor=<nextCursor> hasta que nextCursor sea null. Para un mes completo de un contenido de una sola vez existe la exportación CSV GET /reports/media/{id}/playout-details/export.