Différences
Ci-dessous, les différences entre deux révisions de la page.
— |
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. | ||