
Synthèse intelligente des équipements, gestion des contrats et analytics exportables
Nouvelles fonctionnalités
Un nouveau widget pour créer une synthèse dynamique des informations de vos équipements
Créez facilement des synthèses dynamiques de vos équipements, sans avoir à configurer chaque widget manuellement, grâce au nouveau widget Liste de produits intelligente. La liste intelligente affiche automatiquement les widgets et les variables prédéfinies pour chaque équipement sélectionné.
- Pensez à autoriser la sélection multiple d'équipement au niveau de la configuration de l'arborescence de votre Dashboard pour permettre de sélectionner les produits à volonté
- Vous pouvez aussi utiliser les tags au niveau de la configuration du widget liste de produits intelligente pour que la sélection des équipements/variables à afficher s'adapte automatiquement au tag choisi. Ainsi, un nouvel équipement portant ce tag sera automatiquement intégré à la liste.
Gestion simplifiée des contrats client sur les produits
Une information qui intéressera surtout les tiers de maintenance et les parcs de machines en location, de nouveaux champs pour le numéro et la date du contrat sont désormais disponibles. Configurez facilement les contrats associés à vos produits directement depuis l'interface d'administration. Il est possible d'afficher ces informations lors de la génération de rapport au travers des widgets Information produit ou TextBox.


Récupération des statistiques en format CSV / XLSX par compte entreprise
Analysez facilement l'utilisation de la plateforme en récupérant vos statistiques au niveau du Corporate Account en format CSV / XLSX.

Améliorations & Corrections
Récupération des données pour charger les tableaux de bord plus rapidement
Nous avons optimisé la récupération des données pour accélérer le chargement de vos tableaux de bord, améliorant ainsi votre expérience utilisateur.
Gestion des Providers
Nous facilitons désormais l'intégration d'autres plateformes grâce à notre système de gestion des Providers. Vous pouvez maintenant connecter votre plateforme à d'autres services de manière plus fluide pour enrichir votre expérience IoT.
Breaking changes
Modification API
Suppression des API dépréciées - Connecteur générique
Certaines routes de l'API du connecteur générique, dépréciées depuis la version 3.0, sont supprimées. Les scripts et applications utilisant ces routes doivent être mis à jour avant la livraison de la version 3.2, sans quoi les appels vers les routes actuellement dépréciées ne fonctionneront plus. Les DTOs (body & réponses) sont aussi modifiées, il conviendra d'adapter les appels en fonction.
Changelog
Spécification OpenAPI
Téléchargement
Vous pouvez télécharger la spécification complète de l'API au format OpenAPI 3.0 :
Visualisation
Voir un aperçu de la spécification OpenAPI
Cette API utilise OpenAPI 3.0.0 et comprend les contrôleurs suivants :
Endpoints disponibles :
- Streams - Gestion des flux de données
- Alarms - Gestion des alarmes
- Alarm Histories - Historique des alarmes
- Data Points - Points de données (recommandé)
- Variables - Statistiques des variables
- Health Check - Vérification de santé du service
Informations API :
- Titre : IoT Framework Generic Connector
- Version : 3.1.2
- Sécurité : OAuth2 (Authorization Code Flow)
Pour une utilisation complète, importez le fichier JSON dans un outil compatible OpenAPI comme Swagger Editor, Postman, ou Insomnia.
Liens utiles :
- Swagger Editor - Éditeur en ligne pour OpenAPI
- Postman - Client API avec support OpenAPI
- Insomnia - Client REST avec import OpenAPI
IoT Framework Generic Connector API
Version 3.1.2 - OAS 3.0
Cette release inclut la documentation complète de l'API IoT Framework Generic Connector.
Streams
POST /api/streams ⚠️ Deprecated
Recherche les flux de données pour un équipement donné, correspondant aux filtres.
Paramètres:
| Nom | Type | Localisation | Description |
|---|---|---|---|
| x-iot-corporateaccountuuid | string | header | UUID du compte entreprise (requis) |
Corps de la requête:
{
"from": "string",
"to": "string",
"timezone": "string",
"useDeviceLocalTimezone": true,
"granularity": {},
"series": [
{
"deviceUuid": "string",
"itemType": "string",
"itemIndex": "string",
"serviceId": "string",
"aggregation": {}
}
],
"paging": {
"pageNumber": 0,
"itemsPerPage": 0
},
"pagingOrder": "string"
}
Réponses:
- 201 Created
{
"from": "",
"to": "",
"timezone": "string",
"useDeviceLocalTimezone": true,
"granularity": {},
"series": [
{
"deviceUuid": "string",
"variableUuid": "string",
"itemType": "string",
"itemIndex": "string",
"serviceId": "string",
"aggregation": {},
"dataType": {},
"deviceTimeZone": "string",
"data": [
{
"at": "string",
"value": "number | string"
}
]
}
],
"paging": {
"pageNumber": 0,
"itemsPerPage": 0
},
"pagingOrder": "string"
}
- 400 Bad Request - Paramètres invalides
- 404 Not Found - Ressources non trouvées
- 409 Conflict - Erreur lors de la requête
POST /api/streams/publish ⚠️ Deprecated
Publie un tableau de données. Deprecated - Utilisez le contrôleur Data Points.
Paramètres:
| Nom | Type | Localisation | Description |
|---|---|---|---|
| x-iot-corporateaccountuuid | string | header | UUID du compte entreprise (requis) |
Corps de la requête:
{
"at": "string",
"deviceUuid": "string",
"data": [
{
"itemType": "string",
"itemIndex": "string",
"serviceId": "string",
"type": "string",
"at": "string",
"q": 0,
"value": 0,
"oldValue": 0,
"result": 0
}
]
}
Réponses:
- 201 Created - Données publiées avec succès
- 400 Bad Request - Paramètres invalides
- 404 Not Found - Ressources non trouvées
- 409 Conflict - Erreur lors de la requête
Data Points
POST /api/ca/{corporateAccountUuid}/devices/{deviceUuid}/datapoints
Envoie des données aux variables selon l'UUID donné.
Paramètres:
| Nom | Type | Localisation | Description |
|---|---|---|---|
| corporateAccountUuid | string | path | UUID du compte entreprise (requis) |
| deviceUuid | string | path | UUID de l'équipement (requis) |
Corps de la requête:
{
"dataset": [
{
"variableUuid": "string",
"data": [
{
"date": "2023-11-06T10:08:56Z",
"value": "string"
}
]
}
]
}
Réponses:
- 200 OK
{
"result": "string"
}
- 400 Bad Request - Paramètres invalides
- 404 Not Found - Ressources non trouvées
- 409 Conflict - Erreur lors de la requête
POST /api/ca/{corporateAccountUuid}/last-values-request
Recherche les dernières valeurs de plusieurs variables.
Paramètres:
| Nom | Type | Localisation | Description |
|---|---|---|---|
| corporateAccountUuid | string | path | UUID du compte entreprise (requis) |
Corps de la requête:
{
"timezone": "UTC",
"granularity": "raw",
"variableUuids": [],
"deviceUuids": [],
"itemType": "Global",
"itemIndex": "0",
"serviceIds": []
}
Réponses:
- 200 OK
{
"results": [
{
"deviceUuid": "string",
"variableUuid": "string",
"unit": "string",
"serviceId": "string",
"itemType": "string",
"itemIndex": "string",
"aggregation": {},
"dataType": {},
"data": [
{
"at": "string",
"value": "number | string"
}
]
}
]
}
- 400 Bad Request - Paramètres invalides
- 404 Not Found - Ressources non trouvées
- 409 Conflict - Erreur lors de la requête
POST /api/ca/{corporateAccountUuid}/datapoints-request
Recherche des points de données avec filtres et pagination.
Paramètres:
| Nom | Type | Localisation | Description |
|---|---|---|---|
| corporateAccountUuid | string | path | UUID du compte entreprise (requis) |
Corps de la requête:
{
"from": 0,
"to": 0,
"timezone": "UTC",
"granularity": "raw",
"paging": {
"pageNumber": 0,
"itemsPerPage": 0
},
"pagingOrder": "string",
"aggregations": ["sum"],
"variableUuids": [],
"deviceUuids": [],
"itemType": "Global",
"itemIndex": "0",
"serviceIds": []
}
Réponses:
- 200 OK - Résultats de la recherche
- 400 Bad Request - Paramètres invalides
- 404 Not Found - Ressources non trouvées
- 409 Conflict - Erreur lors de la requête
GET /api/ca/{corporateAccountUuid}/devices/{deviceUuid}/last-values ⚠️ Deprecated
Recherche les dernières valeurs pour un équipement donné.
Paramètres:
| Nom | Type | Localisation | Description |
|---|---|---|---|
| corporateAccountUuid | string | path | UUID du compte entreprise (requis) |
| deviceUuid | string | path | UUID de l'équipement (requis) |
| serviceIds | string | query | Liste des identifiants de service (ex: 140000,141000) |
| itemType | string | query | Type d'élément (ex: Global) |
| itemIndex | string | query | Index d'élément (ex: 0) |
| language | string | query | Langue pour les traductions de variables |
Réponses:
- 200 OK
{
"devices": [
{
"deviceUuid": "string",
"deviceTimeZone": "string",
"values": [
{
"serviceGroup": "string",
"serviceType": "string",
"value": "string",
"unit": "string",
"date": "2025-11-27T16:17:57.042Z",
"serviceId": "string",
"title": "string",
"itemType": "string",
"itemIndex": "string",
"itemName": "string",
"deviceUuid": "string",
"deviceName": "string",
"variableUuid": "string"
}
]
}
]
}
- 400 Bad Request - Paramètres invalides
- 404 Not Found - Ressources non trouvées
- 409 Conflict - Erreur lors de la requête
PUT /api/ca/{corporateAccountUuid}/last-values ⚠️ Deprecated
Recherche les dernières valeurs pour plusieurs équipements.
Paramètres:
| Nom | Type | Localisation | Description |
|---|---|---|---|
| corporateAccountUuid | string | path | UUID du compte entreprise (requis) |
Corps de la requête:
{
"devices": [
{
"deviceUuid": "string",
"itemType": "string",
"itemIndex": "string",
"serviceIds": ["string"]
}
],
"language": "string"
}
Réponses:
- 200 OK - Dernières valeurs récupérées
- 400 Bad Request - Paramètres invalides
- 404 Not Found - Ressources non trouvées
- 409 Conflict - Erreur lors de la requête
PUT /api/ca/{corporateAccountUuid}/datapoints ⚠️ Deprecated
Recherche les flux de données pour un équipement donné.
Paramètres:
| Nom | Type | Localisation | Description |
|---|---|---|---|
| corporateAccountUuid | string | path | UUID du compte entreprise (requis) |
Corps de la requête:
{
"from": "string",
"to": "string",
"timezone": "string",
"useDeviceLocalTimezone": true,
"granularity": {},
"series": [
{
"deviceUuid": "string",
"itemType": "string",
"itemIndex": "string",
"serviceId": "string",
"aggregation": {}
}
],
"paging": {
"pageNumber": 0,
"itemsPerPage": 0
},
"pagingOrder": "string"
}
Réponses:
- 200 OK - Flux de données récupérés
- 400 Bad Request - Paramètres invalides
- 404 Not Found - Ressources non trouvées
- 409 Conflict - Erreur lors de la requête
Tableau de correspondance des routes API
| Ancienne route | Nouvelle route à utiliser |
|---|---|
POST /api/streams | POST /api/ca/{corporateAccountUuid}/datapoints-request |
POST /api/streams/publish | POST /api/ca/{corporateAccountUuid}/devices/{deviceUuid}/datapoints |
GET /api/ca/{corporateAccountUuid}/devices/{deviceUuid}/last-values | POST /api/ca/{corporateAccountUuid}/last-values-request |
PUT /api/ca/{corporateAccountUuid}/lastvalues | POST /api/ca/{corporateAccountUuid}/last-values-request |
PUT /api/ca/{corporateAccountUuid}/datapoints | POST /api/ca/{corporateAccountUuid}/datapoints-request |
Notes importantes
Plusieurs endpoints sont marqués comme deprecated. Il est recommandé d'utiliser les nouveaux endpoints du contrôleur Data Points pour les nouvelles intégrations.
Les dates peuvent être au format ISO 8601 (2023-11-06T10:08:56Z) ou timestamp Unix (1699265336).



