====== 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.