-
AirWatch Sync v1.6.26 Stable
released this
2026-10-26 14:20:36 +00:00 | 28 commits to main since this releaseAirWatch Sync 1.6.26
1.6.26 — alignement des appels API avec les specs OpenAPI de la console UEM (mdmv1)
Appels API vérifiés et corrigés contre les specs officielles
GET /devices/search: enveloppeDeviceSearchResultExtended(Total,Page,
PageSize,Devices[]) ; pagination 0-based confirmée. Un tableau nu reste
accepté pour les vieilles consoles.GET /devices/{id}: objetDevicecomplet ; fallback sur la recherche
paginée en cas de 404 (certaines consoles ne servent que la recherche).PUT /devices/{id}: corpsDeviceRequestModel(champs writables :
AssetNumber,Ownership,DeviceFriendlyName) ; la console répond
204 No Content — tout 2xx sans corps est désormais traité comme succès.GET /devices/{id}/apps: enveloppeDeviceAppsResult(DeviceApps[]).GET /devices/{uuid}/apps/search:AppV1PagedSearchResultsModel
(app_items[],TotalResults) en fallback, avec pagination.- Statuts d'app AirWatch : les valeurs numériques (1-5) sont converties en
libellés (Installed, Downloaded, ... ; 4 « Removed » exclue des liens
applications GLPI). - Architecture OS :
ProcessorArchitecture0 → ARM64, 9 → x86-64.
Correspondance de champs
- Nouvelle option de mapping
Ownership(3e champ writable de
DeviceRequestModel), en plus deDeviceFriendlyNameetAssetNumber.
Documentation et outillage
- README : section « UEM console API (reference) » alignée sur l'export
OpenAPI (endpoints, formes de réponse, champs writables, 204, statuts d'app). - Mock AirWatch réécrit aux champs exacts de la console actuelle ; le script
e2e nettoie désormais les processus orphelins sur le port 9000.
E2E vérifié de bout en bout : 8/8 appareils, 9 liens d'apps (Removed exclue),
8 write-backs PUT 204, fallback paginé opérationnel.Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
AirWatch Sync v1.6.25 Stable
released this
2026-10-24 17:34:25 +00:00 | 31 commits to main since this releaseAirWatch Sync 1.6.25
1.6.25 — icône d'onglet
- L'onglet « Synchronisation AirWatch » des fiches d'actifs (Téléphone,
Ordinateur, Périphérique, Imprimante) affiche désormais une icône de
synchronisation (ti ti-refresh) à gauche du libellé, comme les autres
onglets des fiches GLPI 11.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- L'onglet « Synchronisation AirWatch » des fiches d'actifs (Téléphone,
-
AirWatch Sync v1.6.24 Stable
released this
2026-10-24 16:03:03 +00:00 | 31 commits to main since this releaseAirWatch Sync 1.6.24
1.6.24 — champs du plugin « Fields », synchro des systèmes d'exploitation, durcissement de l'upload
Synchronisation des systèmes d'exploitation (smartphones / tablettes)
- L'OS récupéré d'AirWatch (Android, Apple iOS, Apple macOS, Windows) est
écrit dansglpi_items_operatingsystemspour les smartphones/tablettes,
que l'asset soit de type Téléphone ou Ordinateur (vérifié sur GLPI 10 et 11 :
l'onglet « Systèmes d'exploitation » existe sur tous les types d'actifs). - Pour les ordinateurs, l'OS n'est jamais écrit par AirWatch dès que l'asset
porte un agent d'inventaire (les infos Windows restent pilotées par l'agent
GLPI). - Architecture :
Arch0 → ARM64, 9 → x86-64. - Vraie version Windows :
10.0.22621→11 22H2,10.0.19045.3073→
10 22H2(build exact ou intégré), builds inconnus laissés tels quels. - Nouveau(s) jeton(s) de nom composé :
{airwatch:OSVersion}(et{airwatch:OS}). - Miroir : colonnes
aw_os,aw_os_version,aw_os_arch; statos_written.
Champs du plugin « Fields »
- Les champs du plugin GLPI « Fields » (conteneurs actifs sur Ordinateur et
Téléphone) apparaissent automatiquement dans la correspondance de champs,
dans un groupe dédié « Fields plugin ». - Les valeurs sont lues et écrites dans les tables de valeurs générées par le
plugin (colonnes exactes : clé étrangère pour les dropdown, y compris
dropdown-{Classe}), avec les transforms dropdown/statut/date/nombre/texte. - Si le plugin Fields n'est pas installé, aucun champ n'apparaît (pas de crash).
Statuts : uniquement des statuts existants côté GLPI
- La correspondance « Statuts AirWatch → état GLPI » et le champ « état par
défaut » ne proposent que les statuts réellement présents dansglpi_states. - Tout champ mappé sur
states_idest forcé en transform « status » et résolu
viastateId(): un état introuvable est ignoré, jamais inventé.
Durcissement de l'upload certificat / clé privée
- Rejet explicite des noms
./../ vides, et contrôlerealpathque le
fichier final est bien dans le répertoirecerts/(anti path traversal).
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- L'OS récupéré d'AirWatch (Android, Apple iOS, Apple macOS, Windows) est
-
AirWatch Sync v1.6.23 Stable
released this
2026-10-23 21:57:00 +00:00 | 32 commits to main since this releaseAirWatch Sync 1.6.23
1.6.23 — write-back du nom via
DeviceFriendlyNameCorrection du champ poussé lors du renommage de l'appareil dans la console
AirWatch/UEM : le plugin pousse désormais le champDeviceFriendlyName
(v0) au lieu du champName(légacy), comme le fait l'API legacy
(PUT /API/mdm/devices/{id}avec le corps{"DeviceFriendlyName": ...}).Le nom composé (template
{glpi:...} / {airwatch:...}) est comparé au
DeviceFriendlyNameactuel avant d'être poussé, pour ne pas réécrire un nom
que la console porte déjà.Vérifié en E2E dans le conteneur de référence : sync réelle → 8 write-back,
le mock reçoitPUT /api/mdm/devices/{id}avec le champ
DeviceFriendlyNameportant le nom composé.Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
Source code (ZIP)
-
AirWatch Sync v1.6.22 Stable
released this
2026-10-23 15:49:33 +00:00 | 34 commits to main since this releaseAirWatch Sync 1.6.22
1.6.22 — synchronisation des applications installées vers GLPI
Les applications installées sur chaque appareil dans AirWatch sont maintenant
récupérées (GET /api/mdm/devices/{id}/apps, avec repli sur le nouvel endpoint
/apps/search) et peuplent la liste « Élément > Logiciels » de la fiche asset
dans GLPI. Les entrées logiciel/version GLPI sont créées à la volée si elles
n'existent pas, puis liées à l'appareil.Activable par type d'appareil dans le profil de synchronisation :
- Include computers (assets Computer)
- Include smartphones and tablets (assets Phone)
- Unlink applications no longer listed in AirWatch (opt-in)
- Platform filter (ex.
ios,Android,win32nt, vide = toutes)
Les statuts de synchronisation affichent désormais les compteurs d'applications
(apps,apps_linked,apps_software_created,apps_removed).Note technique : la liaison utilise le modèle GLPI 11
(glpi_softwareversions+glpi_items_softwareversions) — incompatible avec
les versions antérieures de GLPI qui n'exposent pas ces tables.Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
AirWatch Sync v1.6.21 Stable
released this
2026-10-23 08:32:38 +00:00 | 36 commits to main since this releaseAirWatch Sync 1.6.21
1.6.21 — chemin par défaut du lien vers l'appareil modifié
Le lien profond vers l'appareil dans la console Workspace ONE UEM (nom de
l'appareil sur l'onglet « Synchronisation AirWatch » d'une fiche asset, et
liste des appareils synchronisés sur la page de configuration) utilisait par
défaut le chemin :{base}/airwatch/manage/device/{device_id}/summaryIl est désormais :
{base}/AirWatch/Device/Details/Summary/{device_id}- Seule la valeur par défaut change : le champ « Device link template » reste
entièrement surchargeable par profil ({base},{device_id},{tenant}). - Si un profil a un template personnalisé, il n'est pas modifié.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- Seule la valeur par défaut change : le champ « Device link template » reste
-
AirWatch Sync v1.6.20 Stable
released this
2026-10-23 07:59:48 +00:00 | 40 commits to main since this releaseAirWatch Sync 1.6.20
1.6.20 — même chemin de récupération pour la synchro d'un seul appareil et la synchro complète
La synchronisation lancée depuis l'onglet « Synchronisation AirWatch » d'une fiche
asset utilisait d'abord l'endpointGET /api/mdm/devices/{id}de la console
Workspace ONE UEM. Les consoles qui n'exposent pas cette route (uniquement la
liste viasearch) faisaient échouer la synchro unitaire — « appareil non
trouvé » — alors que la page de configuration listait bien l'appareil.- La détection d'un appareil passe désormais par le scan paginé de la liste
searchpar numéro de série, exactement comme la synchro complète
(même contrat de pagination : pages 1..N,pagesizedu profil, max 1000 pages). runDevice(asset déjà lié à unDeviceID) retombe sur le scan paginé de la
liste quand la route individuelle est indisponible : les deux points d'entrée
partagent un seul chemin de récupération.- Outils de test : le mock accepte
MOCK_NO_SINGLE(console sans route
individuelle) ; script e2ee2e_sync_one_v2.sh(page_size=3, route
individuelle en 404) qui prouve que la synchro unitaire trouve les appareils
non liés et liés.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- La détection d'un appareil passe désormais par le scan paginé de la liste
-
AirWatch Sync v1.6.19 Stable
released this
2026-10-22 20:19:40 +00:00 | 42 commits to main since this releaseAirWatch Sync 1.6.19
Contenu
1.6.18 (composée dans cette release)
- Nom d'appareil AirWatch composé avec des variables
{glpi:champ}/{airwatch:champ}. - Détection de l'appareil dans l'onglet « Synchronisation AirWatch » de la fiche asset
(scan complet de la console par numéro de série). - Correspondance des statuts : tableau avec liste déroulante des états GLPI réels.
- Correspondance des plateformes : tableau, champ texte AirWatch + type d'asset GLPI.
- État GLPI par défaut : vide par défaut (plus de « In use » imposé).
- Boutons supprimer au style GLPI ; résultat de synchro toujours sous les boutons.
- Suppression de l'entrée « Appareils AirWatch » du menu Parc.
1.6.19
- Retrait de la ligne de statut « Authentification Basic : » sous le
formulaire de configuration. La clé d'API continue d'être envoyée dans l'en-tête
aw-tenant-code(comportement inchangé).
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- Nom d'appareil AirWatch composé avec des variables
-
AirWatch Sync v1.6.17 Stable
released this
2026-10-22 15:12:21 +00:00 | 45 commits to main since this releaseAirWatch Sync 1.6.17
Correctif : plus aucun renommage forcé du poste
Le repli sur le nom de la console AirWatch s'appliquait à chaque fois que la
correspondance du champnamene produisait pas de valeur — c'est-à-dire
toujours quand le champnameest désactivé dans la correspondance des
champs. Le plugin « voulait donc toujours changer le nom du poste ».- Le nom de la console n'est maintenant utilisé que pour les assets créés
sans nom (asset neuf, GLPI oblige un nom). - Un asset GLPI qui a déjà un nom n'est plus jamais renommé de force : la
désactivation de la correspondancenameest respectée. - Si la correspondance
nameest activée, le nom console reste synchronisé
(comportement attendu, inchangé).
Note d'environnement
Le test e2e dans le conteneur GLPI n'a pas pu être refait : l'hyperviseur
Windows (WSL2) est inactif sur la machine après un redémarrage, ce qui
empêche Docker Desktop de démarrer. Un redémarrage de la machine (et
éventuellementbcdedit /set hypervisorlaunchtype Autoen administrateur)
restaurera l'environnement de test.Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- Le nom de la console n'est maintenant utilisé que pour les assets créés
-
AirWatch Sync v1.6.16 Stable
released this
2026-10-22 13:10:08 +00:00 | 47 commits to main since this releaseAirWatch Sync 1.6.16
Compatibilité API réelle Workspace ONE UEM (devices/search v0)
Le plugin était codé pour un format de réponse théorique ; les appareils renvoyés
par/api/mdm/devices/searchdans les consoles réelles utilisaient d'autres noms
de champs, ce qui faisait échouer la détection par numéro de série.Identifiants des appareils
- L'identifiant console est lu dans
Id.Value(format réel de l'API) au lieu du
champ fictifDeviceID;Uuidest accepté en repli. Imei(nom réel du champ dans la réponse) est désormais lu, en plus des
aliasIMEIetMEID.Udid,MacAddressetAssetNumbersont exposés dans le catalogue de
correspondance de champs.
Détection par numéro de série
- Le matching compare maintenant, insensiblement à la casse, tous les
identifiants AirWatch (SerialNumber,Imei/IMEI,MEID,
InternalDeviceIdentifier,Udid) contre le champserialet le champ
otherserialdes tables Computer et Phone. - Un appareil AirWatch est lié à l'asset GLPI existant (son type prime sur le
type déduit de la plateforme) au lieu d'être recréé en doublon.
Plateformes
- Le champ plateforme est lu dans
Platform(ex.WinRT,Apple,Android) ;
WinRTest mappé sur Computer. Les valeursApple/Androidrestent mappées
sur Phone. EnrollmentStatus,ManagedByetOwnershipsont disponibles dans le
catalogue de correspondance (statut d'enrôlement, gestionnaire,
propriété C/U).
Vérification
- 53 assertions unitaires sur des payloads capturés de vraies consoles
(tools/v0_field_test.php). - Test e2e via l'endpoint
front/sync.php(login → jeton CSRF → dry run
form-encoded) : réponse 200 avec JSON propre.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- L'identifiant console est lu dans