Informations et contenus
Lire l'état d'un appareil — modèle, batterie, stockage, volume — et l'inventaire des contenus qu'il porte.
Deux endpoints en lecture seule, utiles pour afficher un tableau de bord de salle ou vérifier l'état d'un casque avant une session.
État de l'appareil
| Méthode | GET |
| Chemin | /info |
Réponse
{
"androidId": "5014b9959e9ae759",
"id": "67fd93f37a5db294fa7b2427",
"ip": "172.20.10.10",
"type": "phone",
"screenOn": true,
"model": {
"brand": "samsung",
"commercial": "Samsung Galaxy S9",
"product": "SM-G960F",
"type": "phone"
},
"settings": {
"battery": {
"health": "Good",
"isCharging": true,
"level": 100,
"temperature": 28.7,
"voltage": 4313
},
"storage": [
{
"freeSpace": 37217443840,
"isRemovable": false,
"totalSpace": 56400183296,
"usedSpace": 19182739456,
"volumeDescription": "Internal Storage"
}
],
"volume": 80
},
"contents": {}
}| Champ | Rôle |
|---|---|
androidId | Identifiant Android de l'appareil. |
id | Identifiant Pulse, le même que dans l'API REST du serveur. |
ip | Adresse de l'appareil sur le réseau local. |
screenOn | true si l'écran est allumé. |
model | Marque, nom commercial, référence produit et famille d'appareil. |
settings.battery | Niveau en pourcentage, charge en cours, santé, température en °C, tension en mV. |
settings.storage | Un objet par volume, tailles en octets. |
settings.volume | Volume général, de 0 à 100. |
contents | Inventaire des contenus — voir la section suivante. |
settings.volume est la valeur que modifie
/volume. Un aller-retour sur
/info permet de confirmer qu'un réglage a bien été appliqué.
Contenus de l'appareil
| Méthode | GET |
| Chemin | /contents |
Réponse
{
"applications": [
{
"id": "1",
"packageName": "oss.krtirtho.spotube",
"codeVersion": 38,
"iconUrl": "",
"posterUrl": "",
"url": "",
"expirationDate": "2026-12-31T23:00:00.000Z"
}
],
"videos": [
{
"id": "51",
"title": "Titre de la vidéo",
"synopsis": "test",
"description": "test",
"isStereoscopic": false,
"posterUrl": "/storage/emulated/0/Documents/Pulse/videos/51/poster.jpg",
"vignetteUrl": "/storage/emulated/0/Documents/Pulse/videos/51/thumbnail.jpg",
"url": "",
"expirationDate": null
}
],
"files": [],
"packages": [
{
"name": "Pulse MDM",
"packageName": "com.pulse.mdm.service",
"versionCode": 15,
"versionName": "1.0.9"
},
{
"name": "Enregistreur vocal",
"packageName": "com.sec.android.app.voicenote",
"versionCode": 2021355160,
"versionName": "21.3.55.16"
}
]
}Quatre listes, qui ne recouvrent pas la même chose :
| Liste | Contenu |
|---|---|
applications | Les applications déployées par Pulse, avec leur identifiant de contenu. |
videos | Les vidéos déployées par Pulse, avec leurs médias associés. |
files | Les fichiers déployés par Pulse. |
packages | Toutes les applications installées sur l'appareil, y compris celles hors Pulse et le service MDM lui-même. |
Ne confondez pas applications et packages. applications liste ce que Pulse gère —
c'est là que se trouvent les identifiants de contenu. packages est l'inventaire système
complet, utile pour vérifier qu'un packageName existe avant d'appeler
/launch, mais il contient des
applications que Pulse ne pilote pas.
Les chemins posterUrl et vignetteUrl des vidéos sont des chemins locaux à
l'appareil, pas des URL téléchargeables depuis le réseau.
La date limite d'utilisation
Les applications et les vidéos déployées par Pulse portent un champ expirationDate
optionnel. Il indique l'instant au-delà duquel le contenu ne peut plus être démarré.
| Valeur | Signification |
|---|---|
Absente ou null | Contenu utilisable sans limite |
| Instant ISO 8601 complet avec fuseau | Utilisable jusqu'à cet instant |
| Toute autre valeur | Considérée invalide, le contenu est bloqué par sécurité |
Le format attendu est un instant complet, terminé par Z ou par un décalage ±HH:MM —
par exemple 2026-12-31T23:00:00.000Z. Une date seule (2026-12-31), un horodatage sans
fuseau (2026-12-31T23:59:59) ou une chaîne vide sont refusés par l'API, et traités comme
invalides par l'appareil s'ils l'atteignaient malgré tout.
Pour qu'un contenu reste utilisable pendant toute une journée civile, la date transmise
est le début du jour suivant dans le fuseau souhaité. Le 31 décembre 2026 inclus à
Paris s'écrit donc 2027-01-01T00:00:00+01:00, soit 2026-12-31T23:00:00Z.
Une fois l'instant atteint :
/launchrefuse le lancement de l'application avec une erreur400;/playerrefuse les actionsplayetresumede la vidéo, mais laissepause,seek,stopetmutedisponibles.
Le contenu reste présent sur l'appareil : cette date bloque son utilisation, elle ne déclenche pas sa suppression.
Cette page vous a-t-elle aidé ?
Dernière mise à jour le