Zum Inhalt springen
StrgK

Beispiele

Die Beispiele nutzen curl und die Variable $API_TOKEN. Die Basis-URL ist https://cloud.viewneo.com/api/public/v1.

Dateien gehen nicht durch die API selbst, sondern direkt in den Speicher – über eine vorab signierte Adresse. Das macht auch große Videos schnell.

Terminal-Fenster
# 1. Upload starten
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. die Datei an upload.url aus der Antwort schicken
curl -X PUT "$UPLOAD_URL" -H "Content-Type: image/jpeg" --data-binary @speisekarte.jpg
# 3. abschließen, mit der MD5-Prüfsumme
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)"'"}'

Große Dateien kommen als multipart: Die Antwort aus Schritt 1 nennt dann die Teilgröße; die Adressen der Teile holst du mit POST /media/uploads/{id}/parts.

Danach ist der Inhalt bereit. Videos werden im Hintergrund für die Wiedergabe aufbereitet. Manche Formate werden umgewandelt und ersetzen dabei den hochgeladenen Inhalt: TIFF, BMP und HEIC werden zu JPEG (bzw. PNG bei Transparenz), Dokumente wie PDF oder PowerPoint zu einem Bild je Seite in einem neuen Ordner. Die neuen IDs findest du über GET /media?folderId=….

Terminal-Fenster
# den Inhalt in eine Playlist legen – werktags zur Mittagszeit
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"}}'
# die Playlist einem Gerät zuweisen (eine Gruppe geht genauso über /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"'"}'

Gestalte im Designer einmal ein Template mit Platzhaltern. Dein System erstellt daraus einen Inhalt und aktualisiert ihn, wann immer sich die Daten ändern:

Terminal-Fenster
# welche Platzhalter hat das Template?
curl https://cloud.viewneo.com/api/public/v1/templates/$TEMPLATE_ID -H "Authorization: Bearer $API_TOKEN"
# einen Inhalt daraus erstellen – seine ID legst du wie jedes Medium in eine Playlist
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 €"}}'
# am nächsten Tag die Werte ändern – die Geräte aktualisieren sich selbst
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 €"}}'

Die Namen der Platzhalter (hier gericht und preis) kommen aus deinem Template.

Schick den kompletten Inhalt in einem Aufruf. Einträge, die du mit ihrer id mitschickst, bleiben erhalten, neue werden angelegt, alle anderen entfernt:

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

Starte den Player; er zeigt einen sechsstelligen Aktivierungscode. Aktiviere ihn in eine Gerätegruppe – jedes Gerät gehört zu einer – dann spielt er sofort deren Inhalte:

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

Jeder Player braucht eine Lizenz; Lizenzen werden nie automatisch dazugebucht. Ohne freie Lizenz antwortet die API mit 409 LICENSE_LIMIT_REACHED.

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

Wiederhole den Aufruf mit &cursor=<nextCursor>, bis nextCursor null ist. Für einen ganzen Monat eines Inhalts am Stück gibt es den CSV-Export GET /reports/media/{id}/playout-details/export.