Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

fr:zebrixrestapi [2025/10/14 11:16] (Version actuelle)
nraulet créée
Ligne 1: Ligne 1:
 +====== Guide de démarrage de l’API REST zebrix ======
 +===== Introduction =====
 +Chaque appel à l’API REST zebrix nécessite un jeton (token) qui doit être inclus dans l’en-tête de la requête.  ​
 +Ce jeton peut être obtenu via une procédure de connexion (login).
 +===== API de connexion =====
 +
 +<wrap hi>POST /​login</​wrap>​
 +
 +Les paramètres doivent être envoyés au format JSON.
 +
 +^Paramètres^^
 +|clientname|Nom du client|
 +|username|Nom d’utilisateur|
 +|password|Mot de passe de l’utilisateur|
 +
 +==== Exemple de connexion avec "​POSTMAN"​ (extension Google Chrome) ====
 +
 +**Requête**
 +
 +{{public_media:​en_api_login.jpg|}}
 +
 +**Réponse**
 +
 +{{public_media:​en_api_login_return.jpg|}}
 +
 +===== Exemple de requête GET sur un écran =====
 +
 +<wrap hi>GET /​api/​screen/:​id</​wrap>​
 +
 +Cet exemple montre comment effectuer une requête GET à l’API pour récupérer des informations.  ​
 +Nous utiliserons ici l’API *screen* (afin d’obtenir la liste de tous les écrans avec leurs propriétés).  ​
 +Le même principe s’applique à tous les autres objets de zebrix (médias, pages, playlists, etc.).
 +
 +Dans cette requête, il est nécessaire d’utiliser le jeton précédemment obtenu dans l’en-tête.  ​
 +Sans ce jeton, l’API renverra une erreur **401 (non autorisé)**.
 +
 +Le jeton doit être précédé du mot **Bearer** suivi d’un espace, comme ceci :
 +
 +**Bearer eyJ0eXAiOiJKV1QiLCJhbGci0kLIUzI1NiJ9.eyJpZCI6MjYwMCwiQ2xpZW50SWQiOjIwLCJyb2xlIjoyLCJsZXZlbCI6MTAsInNjb3BlIjp7fSwiaWF0IjoxNDcwMTIyNDU2LCJleHAiOjE0NzAxNjU2NTZ9.YSqeMUJUm1_t2JuIlidcwZzA7XS52SR8WiUH_WRnH4E**
 +
 +L’appel de l’API renverra un tableau JSON contenant tous les écrans : 
 +
 +{{public_media:​en_api_header_example.jpg|}}
 +
 +Pour obtenir les informations d’un écran spécifique,​ il suffit d’ajouter son identifiant unique dans l’URL.  ​
 +Par exemple, pour obtenir les informations de l’écran avec l’id **6361** :
 +
 +{{public_media:​en_api_screenapi_id.jpg|}}
 +
 +===== Comment définir un contenu sur un écran ? =====
 +
 +Vous devez envoyer le JSON suivant :
 +
 +<code javascript>​{'​contentType':"​page",'​ContentId':​ contentId, '​useScheduling':​ False}</​code>​
 +
 +  * **contentType (string)** : valeurs possibles « page » ou « playlist »  ​
 +  * **contentId (integer)** : ID du contenu que vous souhaitez afficher  ​
 +  * **useScheduling (boolean)** : false est obligatoire pour définir un contenu arbitraire  ​
 +
 +Pour revenir au mode planifié, il suffit d’envoyer le JSON suivant :
 +
 +<code javascript>​{'​useScheduling':​ True}</​code>​
 +
 +à l’URL suivante :
 +
 +<​code>​POST : https://​cmsv2.zebrix.net/​api/​screen/​{screenID}/​setContent</​code>​
 +
 +Pour obtenir les ID des pages et playlists, vous pouvez effectuer une requête GET sur les URL suivantes :
 +
 +  * /​api/​screen  ​
 +  * /​api/​page  ​
 +  * /​api/​playlist  ​
 +
 +===== Comment utiliser l’API pour les sources de données (datasources) =====
 +
 +==== Introduction aux sources de données ====
 +
 +Dans zebrix, une **datasource** correspond à une ligne d’une base de données.  ​
 +
 +Par exemple, imaginons une table contenant des informations sur 4 salles de réunion.  ​
 +Chaque salle a 4 propriétés :
 +
 +  * ROOM (nom de la salle)  ​
 +  * VISITOR (visiteur actuel utilisant la salle)  ​
 +  * SEATS (nombre de places)  ​
 +  * HASBEAMER (présence d’un projecteur)
 +
 +{{public_media:​en_api_datasource_meetingrooms_originaldb.jpg|}}
 +
 +Dans zebrix, cette table de 4 salles correspondra à **4 sources de données**  ​
 +(c’est-à-dire salle 1, salle 2, salle 3, salle 4).  ​
 +Chaque ligne/​source de données contient toutes les colonnes/​champs au format JSON.
 +
 +==== Récupérer toutes les sources de données ====
 +
 +<wrap hi>GET /​api/​datasource/:​id</​wrap>​
 +
 +Toutes les sources de données seront renvoyées avec leurs propriétés (y compris leur contenu).
 +
 +En reprenant notre exemple des salles de réunion, voici le résultat obtenu : 
 +
 +{{public_media:​en_api_datasource_meetingrooms.jpg|}}
 +
 +Ces sources peuvent ensuite être utilisées dans les pages par les utilisateurs  ​
 +(en suivant les instructions de la section 5 de cette page : [[en:​datasource|Utiliser les sources de données dans Zebrix]])
 +
 +<WRAP center round info 60%>
 +Veuillez noter que certaines sources de données sont **générées automatiquement** par zebrix  ​
 +lorsque la fonctionnalité de « zone à contenu variable » est utilisée.  ​
 +Ces sources peuvent être facilement reconnues car leur nom commence toujours par un double tiret bas  ​
 +(__) suivi de *page* et de l’ID de la page concernée.
 +
 +{{public_media:​en_api_datasource_autogeneratedds.jpg|}}
 +</​WRAP>​
 +
 +==== Ajouter une nouvelle source de données à zebrix ====
 +
 +<wrap hi>POST /​api/​datasource/</​wrap>​
 +
 +Le contenu de la source de données doit être encodé en JSON et placé dans une variable *defaults*.
 +
 +{{public_media:​en_api_datasource_json.jpg|}}
 +
 +**Exemple d’utilisation :**
 +
 +{{public_media:​en_api_datasource_add.jpg|}}
 +
 +==== Mettre à jour une source de données existante ====
 +
 +<wrap hi>POST /​api/​datasource/:​id</​wrap>​
 +
 +{{public_media:​en_api_datasource_update.jpg|}}
 +
 +Le processus de mise à jour fonctionne de la même manière qu’une création,  ​
 +mais l’ID de la source de données doit être précisé.
 +
 +==== Forcer la mise à jour des écrans ====
 +
 +<wrap hi>POST /​api/​screens/​updateds</​wrap>​
 +
 +Lorsqu’une source de données est mise à jour,  ​
 +les écrans qui l’utilisent ne se mettront pas à jour automatiquement tant que la commande **updateds** n’aura pas été appelée.  ​
 +
 +Cette API est généralement utilisée après la mise à jour d’une datasource.  ​
 +Si la page affichée contient plusieurs sources de données,  ​
 +il est recommandé d’appeler la méthode **updateds** à la fin du processus complet de mise à jour,  ​
 +plutôt qu’après chaque modification individuelle,​ afin de limiter l’utilisation des ressources et de la bande passante.