Cette page répertorie au même endroit les routes REST du serveur de réseau LoRaWAN de Hermetry. Chaque sujet a une page dans la section LoRaWAN qui détaille la signification des champs ; cette page y renvoie. Les chemins se trouvent sous https://<your host>/tenant/<tenantId>. Chaque réponse de ces routes est envoyée avec Cache-Control: no-store.
Permissions
| Permission | Rôle par défaut | Autorise |
|---|---|---|
iot_lorawan.gateways.read | Utilisateur | Lire les passerelles et l’adresse du serveur de réseau |
iot_lorawan.gateways.manage | Administrateur | Ajouter, modifier, désactiver et supprimer des passerelles, renouveler leurs jetons |
iot_lorawan.devices.read | Utilisateur | Lire les appareils LoRaWAN, les paramètres de profil et l’appairage |
iot_lorawan.devices.manage | Administrateur | Ajouter, modifier et supprimer des appareils, définir les clés, mettre fin aux sessions, appairage |
iot_lorawan.keys.read | Administrateur | Afficher l’AppKey d’un appareil |
iot_lorawan.frames.read | Utilisateur | Lire le journal des trames en direct |
Configuration
GET /api/iot/lorawan/setup (gateways read) renvoie l’adresse du serveur de réseau et l’adresse de découverte dont a besoin une passerelle Basics Station, indique si un fichier tc.trust est proposé, ainsi que la région. Aucune donnée secrète. Voir Votre adresse de serveur de réseau.
Passerelles
| Méthode | Chemin | Permission | Action |
|---|---|---|---|
| GET | /api/iot/lorawan/gateways | gateways read | Liste : { data, total, canManage } |
| POST | /api/iot/lorawan/gateways | gateways manage | Ajouter une passerelle Basics Station : { gateway, token, stationConfig } |
| GET | /api/iot/lorawan/gateways/{gatewayId} | gateways read | { gateway, live, devicesHeard } |
| PATCH | /api/iot/lorawan/gateways/{gatewayId} | gateways manage | name, status (ACTIVE ou DISABLED), latitude, longitude, altitude |
| DELETE | /api/iot/lorawan/gateways/{gatewayId} | gateways manage | Fermer sa connexion, libérer son EUI, la supprimer |
| POST | /api/iot/lorawan/gateways/{gatewayId}/credentials | gateways manage | Nouveau jeton : { gateway, token, stationConfig } |
La liste accepte page (à partir de 0), pageSize, search, sort (name, eui, protocol, mode, status, region, lastSeen, createdAt ; par défaut name:asc) et les filtres protocol, mode, status, region, deviceId, online.
Corps de création :
{ "eui": "AA555A0000000101", "name": "Roof gateway", "latitude": 41.0151, "longitude": 28.9795, "altitude": 45 }
eui est obligatoire (16 caractères hexadécimaux ; les tirets, deux-points et espaces sont ignorés), name de 1 à 128 caractères. Le protocole vaut par défaut Basics Station, le mode cloud et la région EU868, seule région proposée. Le jeton n’apparaît que dans cette réponse. Les routeurs sous licence ne s’ajoutent pas ici : ils passent en mode cloud depuis leur propre panneau, voir Routeurs sous licence comme passerelles LoRaWAN. Le renouvellement du jeton d’une passerelle qui n’en utilise pas est refusé : « This gateway does not use a token. » Voir Ajouter une passerelle et Identifiants de passerelle, désactivation et suppression.
Appareils
| Méthode | Chemin | Permission | Action |
|---|---|---|---|
| GET | /api/iot/lorawan/devices | devices read | Liste : { data, total, canManage } |
| POST | /api/iot/lorawan/devices | devices manage | Ajouter un appareil OTAA ou ABP (201 { device }) |
| GET | /api/iot/lorawan/devices/{deviceId} | devices read | { device } : l’enregistrement et sa session en cours, jamais une clé |
| PATCH | /api/iot/lorawan/devices/{deviceId} | devices manage | name, joinEui, appKey, macVersion, class, anyJoinEui, codecId ; pour ABP devAddr, nwkSKey, appSKey ensemble |
| DELETE | /api/iot/lorawan/devices/{deviceId} | devices manage | Supprimer l’appareil, ses sessions et sa réservation de DevEUI |
| POST | /api/iot/lorawan/devices/{deviceId}/key | keys read | Afficher l’AppKey : { appKey } ; chaque appel est audité |
| DELETE | /api/iot/lorawan/devices/{deviceId}/session | devices manage | Mettre fin à la session ; l’appareil doit de nouveau rejoindre le réseau |
| DELETE | /api/iot/lorawan/devices/{deviceId}/counters | devices manage | Réinitialiser les compteurs de trames d’un appareil ABP |
| POST | /api/iot/lorawan/devices/{deviceId}/approve | devices manage | Approuver un appareil ajouté par le mode appairage |
La liste accepte page (à partir de 0), pageSize, search, sort (name, devEui, macVersion, class, createdAt ; par défaut createdAt:desc), et les filtres macVersion, class et joinState (joined, refused, never).
Ajouter un appareil OTAA
{
"name": "Cold room 3",
"devEui": "1122334455667701",
"appKey": "2B7E151628AED2A6ABF7158809CF4F3C",
"joinEui": "0000000000000000",
"macVersion": "1.0.3",
"class": "A",
"codecId": "auto",
"anyJoinEui": false
}
Seuls name, devEui et appKey sont obligatoires ; le reste prend les valeurs par défaut. macVersion vaut 1.0.2, 1.0.3 ou 1.0.4 ; class vaut A ou C. La réponse ne contient jamais l’AppKey, seulement hasAppKey: true. Une nouvelle AppKey réinitialise l’historique des nonces de join de l’appareil. Voir Ajouter un appareil OTAA.
Ajouter un appareil ABP
{
"name": "Water meter 12",
"activation": "ABP",
"devEui": "1122334455667712",
"devAddr": "26011F3A",
"nwkSKey": "…32 hexadecimal characters…",
"appSKey": "…32 hexadecimal characters…"
}
Un corps ABP contenant une appKey, ou un corps OTAA contenant des clés de session, est refusé. Voir Ajouter un appareil ABP.
Paramètres de profil et appairage
| Méthode | Chemin | Permission | Action |
|---|---|---|---|
| GET | /api/iot/lorawan/profiles/{profileId}/settings | devices read | { settings } de l’onglet LoRaWAN du profil |
| PUT | /api/iot/lorawan/profiles/{profileId}/settings | devices manage | Les modifier ; sharedAppKey est en écriture seule |
| GET | /api/iot/lorawan/profiles/{profileId}/pairing | devices read | { pairing } : la fenêtre et les appareils qu’elle a ajoutés |
| POST | /api/iot/lorawan/profiles/{profileId}/pairing | devices manage | { "minutes": 1–120 } ouvre la fenêtre ou en repousse la fin |
| DELETE | /api/iot/lorawan/profiles/{profileId}/pairing | devices manage | Fermer la fenêtre immédiatement |
Les champs des paramètres, y compris ceux que seule l’API permet de définir, sont décrits dans Profils d’appareils LoRaWAN. L’appairage est expliqué dans Mode appairage et Approuver les appareils appairés.
Journal des trames
GET /api/iot/lorawan/frames?deviceId={deviceId}&gatewayId={gatewayId}&limit=200
{ frames } : vos trames récentes, les plus récentes en premier, issues d’un court journal en direct qui n’est pas stocké. Une trame rejetée d’un appareil d’une autre organisation n’affiche que sa raison. Voir Le journal des trames.
Liaisons descendantes et codecs
- Les liaisons descendantes applicatives sont des commandes de méthode
lora.downlink:{ "fPort": 1–223, "data": "<hex or base64>", "confirmed": false }, envoyées avec l’API Commands. Voir Liaisons descendantes. - Les codecs ont leurs propres routes : API Codec.
Refus
Les refus LoRaWAN renvoient des messages en clair, par exemple « A Basics Station gateway always runs in cloud mode. », « This gateway does not use a token. » ou une clé qui ne compte pas 32 caractères hexadécimaux. Les règles de champ en échec donnent un 400 avec issues. Voir Erreurs et limites de débit.

