====== 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 =====
POST /login
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 =====
GET /api/screen/:id
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 :
{'contentType':"page",'ContentId': contentId, 'useScheduling': False}
* **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 :
{'useScheduling': True}
à l’URL suivante :
POST : https://cmsv2.zebrix.net/api/screen/{screenID}/setContent
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 ====
GET /api/datasource/:id
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]])
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|}}
==== Ajouter une nouvelle source de données à zebrix ====
POST /api/datasource/
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 ====
POST /api/datasource/:id
{{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 ====
POST /api/screens/updateds
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.