Salta ai contenuti
CtrlK

Esempi

Gli esempi usano curl e la variabile $API_TOKEN. L’URL di base è https://cloud.viewneo.com/api/public/v1.

I file non passano per l’API stessa, ma vanno direttamente nello storage – tramite un indirizzo prefirmato. Così anche i video grandi si caricano velocemente.

Terminal window
# 1. avviare il caricamento
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. inviare il file a upload.url dalla risposta
curl -X PUT "$UPLOAD_URL" -H "Content-Type: image/jpeg" --data-binary @speisekarte.jpg
# 3. concludere, con il checksum 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)"'"}'

I file grandi arrivano come multipart: la risposta del passo 1 indica allora la dimensione delle parti; gli indirizzi delle parti li ottieni con POST /media/uploads/{id}/parts.

Dopo di che il contenuto è pronto. I video vengono preparati in background per la riproduzione. Alcuni formati vengono convertiti e sostituiscono così il contenuto caricato: TIFF, BMP e HEIC diventano JPEG (o PNG in caso di trasparenza), documenti come PDF o PowerPoint diventano un’immagine per pagina in una nuova cartella. I nuovi ID li trovi con GET /media?folderId=….

Terminal window
# inserire il contenuto in una playlist – nei giorni feriali all'ora di pranzo
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"}}'
# assegnare la playlist a un dispositivo (per un gruppo funziona allo stesso modo 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"'"}'

Progetta una volta nel Designer un modello con segnaposto. Il tuo sistema ne crea un contenuto e lo aggiorna ogni volta che i dati cambiano:

Terminal window
# quali segnaposto ha il modello?
curl https://cloud.viewneo.com/api/public/v1/templates/$TEMPLATE_ID -H "Authorization: Bearer $API_TOKEN"
# crearne un contenuto – il suo ID lo inserisci in una playlist come qualsiasi file multimediale
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 €"}}'
# il giorno dopo modificare i valori – i dispositivi si aggiornano da soli
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 €"}}'

I nomi dei segnaposto (qui gericht e preis) provengono dal tuo modello.

Invia l’intero contenuto in una sola chiamata. Le voci che invii con il loro id restano, quelle nuove vengono create, tutte le altre rimosse:

Terminal window
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"'"}]}'

Avvia il player; mostra un codice di attivazione di sei caratteri. Attivalo in un gruppo di dispositivi – ogni dispositivo appartiene a un gruppo – e riproduce subito i contenuti del gruppo:

Terminal window
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"'"}'

Ogni player ha bisogno di una licenza; le licenze non vengono mai aggiunte automaticamente. Senza una licenza libera l’API risponde con 409 LICENSE_LIMIT_REACHED.

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

Recuperare la prova di riproduzione di una giornata

Sezione intitolata “Recuperare la prova di riproduzione di una giornata”
Terminal window
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"

Ripeti la chiamata con &cursor=<nextCursor> finché nextCursor è null. Per un intero mese di un contenuto in un colpo solo c’è l’esportazione CSV GET /reports/media/{id}/playout-details/export.