Aller au contenu
CtrlK

Exemples

Les exemples utilisent curl et la variable $API_TOKEN. L’URL de base est https://cloud.viewneo.com/api/public/v1.

Les fichiers ne passent pas par l’API elle-même, mais vont directement dans le stockage – via une adresse présignée. Même les grandes vidéos sont ainsi transférées rapidement.

Fenêtre de terminal
# 1. démarrer le téléversement
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. envoyer le fichier à upload.url indiquée dans la réponse
curl -X PUT "$UPLOAD_URL" -H "Content-Type: image/jpeg" --data-binary @speisekarte.jpg
# 3. terminer, avec la somme de contrôle 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)"'"}'

Les gros fichiers sont envoyés en multipart : la réponse de l’étape 1 indique alors la taille des parties ; tu obtiens les adresses des parties avec POST /media/uploads/{id}/parts.

Le contenu est ensuite prêt. Les vidéos sont préparées en arrière-plan pour la diffusion. Certains formats sont convertis et remplacent alors le contenu téléversé : TIFF, BMP et HEIC deviennent du JPEG (ou du PNG en cas de transparence), les documents comme les PDF ou PowerPoint deviennent une image par page dans un nouveau dossier. Tu trouves les nouveaux ID via GET /media?folderId=….

Fenêtre de terminal
# placer le contenu dans une playlist – en semaine à l’heure du déjeuner
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"}}'
# attribuer la playlist à un appareil (pour un groupe, même principe via /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"'"}'

Conçois une fois dans le Designer un modèle avec des espaces réservés. Ton système crée un contenu à partir de celui-ci et le met à jour chaque fois que les données changent :

Fenêtre de terminal
# quels espaces réservés le modèle comporte-t-il ?
curl https://cloud.viewneo.com/api/public/v1/templates/$TEMPLATE_ID -H "Authorization: Bearer $API_TOKEN"
# en créer un contenu – tu places son ID dans une playlist comme n’importe quel média
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 €"}}'
# le lendemain, modifier les valeurs – les appareils se mettent à jour d’eux-mêmes
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 €"}}'

Les noms des espaces réservés (ici gericht et preis) proviennent de ton modèle.

Copier une diapositive et modifier ses textes et images

Section intitulée « Copier une diapositive et modifier ses textes et images »

Conçois la diapositive une fois dans le designer et donne à ses éléments des noms de calque parlants. Ton système la copie et définit ses textes, images et vidéos – la mise en page, les couleurs et la taille restent telles que conçues :

Fenêtre de terminal
# trouver la diapositive
curl "https://cloud.viewneo.com/api/public/v1/media?type=slide" -H "Authorization: Bearer $API_TOKEN"
# la copier – la copie a son propre ID
curl -X POST https://cloud.viewneo.com/api/public/v1/media/$SLIDE_ID/duplicate \
-H "Authorization: Bearer $API_TOKEN" -H "Content-Type: application/json" -d '{}'
# quels éléments a la copie ? (noter « version »)
curl https://cloud.viewneo.com/api/public/v1/slides/$COPY_ID/elements -H "Authorization: Bearer $API_TOKEN"
# modifier les textes et l'image – tout ou rien
curl -X PATCH https://cloud.viewneo.com/api/public/v1/slides/$COPY_ID/elements \
-H "Authorization: Bearer $API_TOKEN" -H "Content-Type: application/json" \
-d '{"ifVersion":"'"$VERSION"'","elements":[{"name":"Prix","text":"3,99 €"},{"name":"Produit","media":{"mediaId":"'"$IMAGE_ID"'"}}]}'
  • Tu désignes un élément par son nom de calque (name) ou son id. Si un nom apparaît plusieurs fois sur la diapositive, la réponse liste les ID correspondants (candidates) – utilise alors l’id.
  • Un texte au format uniforme le conserve ; avec un format mixte (p. ex. un mot en gras), le format de base de la zone de texte s’applique.
  • Les horloges, compteurs et champs RSS se mettent à jour seuls et n’apparaissent pas dans la liste. Une diapositive issue d’un modèle se modifie via ses espaces réservés.

Envoie le contenu complet en un seul appel. Les éléments que tu envoies avec leur id sont conservés, les nouveaux sont créés, tous les autres sont retirés :

Fenêtre 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"'"}]}'

Démarre le lecteur ; il affiche un code d’activation à six caractères. Active-le dans un groupe d’appareils – chaque appareil appartient à un groupe – et il diffuse immédiatement les contenus de ce groupe :

Fenêtre 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"'"}'

Chaque lecteur a besoin d’une licence ; les licences ne sont jamais ajoutées automatiquement. Sans licence libre, l’API répond 409 LICENSE_LIMIT_REACHED.

Fenêtre 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}'

Récupérer la preuve de diffusion d’une journée

Section intitulée « Récupérer la preuve de diffusion d’une journée »
Fenêtre 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"

Répète l’appel avec &cursor=<nextCursor> jusqu’à ce que nextCursor soit null. Pour tout un mois d’un contenu d’un seul tenant, il existe l’export CSV GET /reports/media/{id}/playout-details/export.