La documentation Pulse évolue : partagez votre avis en bas de chaque page.

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éthodeGET
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": {}
}
ChampRôle
androidIdIdentifiant Android de l'appareil.
idIdentifiant Pulse, le même que dans l'API REST du serveur.
ipAdresse de l'appareil sur le réseau local.
screenOntrue si l'écran est allumé.
modelMarque, nom commercial, référence produit et famille d'appareil.
settings.batteryNiveau en pourcentage, charge en cours, santé, température en °C, tension en mV.
settings.storageUn objet par volume, tailles en octets.
settings.volumeVolume général, de 0 à 100.
contentsInventaire 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éthodeGET
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 :

ListeContenu
applicationsLes applications déployées par Pulse, avec leur identifiant de contenu.
videosLes vidéos déployées par Pulse, avec leurs médias associés.
filesLes fichiers déployés par Pulse.
packagesToutes 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é.

ValeurSignification
Absente ou nullContenu utilisable sans limite
Instant ISO 8601 complet avec fuseauUtilisable jusqu'à cet instant
Toute autre valeurConsidé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 :

  • /launch refuse le lancement de l'application avec une erreur 400 ;
  • /player refuse les actions play et resume de la vidéo, mais laisse pause, seek, stop et mute disponibles.

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

Sur cette page