0. Fleet stats (vue d'ensemble en un appel)
Un seul appel pour tous les KPIs du parc : disponibilité, batterie, température, stockage, modèles, licences, versions MDM et OS.
POST /devices/stats/fleet
Endpoint tout-en-un pour alimenter un tableau de bord. Toutes les données sont calculées côté serveur en une seule requête.
Headers
| Name | Value |
|---|---|
| Content-Type | application/json |
| Authorization | Bearer <token> |
Body
| Paramètre | Type | Description |
|---|---|---|
deviceIds | string[] | (Optionnel) Restreindre l'analyse à certains appareils |
L'entreprise est automatiquement déduite du token JWT — pas besoin de la passer en paramètre.
Structure de la réponse
availability
| Champ | Description |
|---|---|
online | Appareils actuellement en ligne |
offline | Appareils hors ligne |
availabilityRate | Taux de disponibilité en % (1 décimale) |
battery
| Champ | Description |
|---|---|
averageLevel | Niveau moyen (appareils avec niveau connu), null si aucun |
minLevel | Niveau minimum relevé |
maxLevel | Niveau maximum relevé |
criticalCount | Appareils avec batterie ≤ 25 % |
chargingCount | Appareils en charge |
distribution | Histogramme par tranches de 25 % |
temperature
| Champ | Description |
|---|---|
averageTemperature | Température moyenne de batterie en °C (appareils connus), null si aucun |
minTemperature | Température minimale relevée |
maxTemperature | Température maximale relevée |
hotCount | Appareils avec température > 40 °C |
storage
| Champ | Description |
|---|---|
averageUsagePercent | % d'utilisation moyen par appareil (sur totalSpace) |
warningCount | Appareils avec moins de 1 Go libre sur un volume |
totalSpaceBytes | Espace total agrégé (tous volumes) |
totalUsedBytes | Espace utilisé agrégé |
distribution | Histogramme par tranches de 25 % |
models
Tableau trié par nombre d'appareils décroissant. Chaque entrée : brand, commercial, count.
licenses
Scalaires : active, expired, suspended, revoked.
Tableau byLevel : répartition par niveau de licence (FREE, PREMIUM, PRO, unlicensed).
mdmVersions
Tableau trié par codeVersion décroissant. Chaque entrée : version, codeVersion, count.
osVersions
Tableau trié par nombre d'appareils décroissant. Chaque entrée : version, count.
Correspondance indicateurs
| Indicateur | Champ réponse |
|---|---|
| Taux de disponibilité du parc | availability.availabilityRate |
| Appareils en batterie critique | battery.criticalCount |
| Distribution batterie (histogram) | battery.distribution[] |
| Appareils en surchauffe | temperature.hotCount |
| Température moyenne batterie | temperature.averageTemperature |
| Espace disque moyen utilisé | storage.averageUsagePercent |
| Répartition par modèle de casque | models[] |
| Répartition par version MDM | mdmVersions[] |
| Répartition licences | licenses.byLevel[] |
Exemple de requête
{}(Corps vide = toute la flotte de l'entreprise)
Response
{
"message": "Fleet stats computed",
"data": {
"total": 45,
"availability": {
"online": 32,
"offline": 13,
"availabilityRate": 71.1
},
"battery": {
"averageLevel": 67.4,
"minLevel": 12,
"maxLevel": 100,
"criticalCount": 3,
"chargingCount": 8,
"distribution": [
{ "range": "0-25", "count": 3 },
{ "range": "26-50", "count": 7 },
{ "range": "51-75", "count": 15 },
{ "range": "76-100", "count": 20 }
]
},
"temperature": {
"averageTemperature": 32.4,
"minTemperature": 18.0,
"maxTemperature": 47.2,
"hotCount": 2
},
"storage": {
"averageUsagePercent": 42.3,
"warningCount": 5,
"totalSpaceBytes": 10883051372800,
"totalUsedBytes": 4603571280000,
"distribution": [
{ "range": "0-25%", "count": 12 },
{ "range": "26-50%", "count": 18 },
{ "range": "51-75%", "count": 10 },
{ "range": "76-100%", "count": 5 }
]
},
"models": [
{ "brand": "Pico", "commercial": "Pico 4/4E", "count": 20 },
{ "brand": "Meta", "commercial": "Quest 3S", "count": 15 },
{ "brand": "Pico", "commercial": "Pico Neo 3", "count": 10 }
],
"licenses": {
"active": 40,
"expired": 3,
"suspended": 1,
"revoked": 1,
"byLevel": [
{ "level": "PREMIUM", "count": 30 },
{ "level": "FREE", "count": 15 }
]
},
"mdmVersions": [
{ "version": "1.6.4", "codeVersion": 64, "count": 30 },
{ "version": "1.6.3", "codeVersion": 63, "count": 10 },
{ "version": "1.5.0", "codeVersion": 55, "count": 5 }
],
"osVersions": [
{ "version": "10", "count": 25 },
{ "version": "12", "count": 15 },
{ "version": "14", "count": 5 }
]
}
}{ "error": "Internal server error message" }