Public API
La Public API est l'API REST qui se trouve derrière le Hub et la CLI fun : une seule API, avec un seul token, pour gérer votre parc, vos données, vos alertes et les accès. Cette page présente l'URL de base, la manière de vous authentifier, l'emplacement des spécifications OpenAPI, ainsi qu'une cartographie des opérations par domaine.
URL de base et versions
| Élément | Valeur |
|---|---|
| URL de base | https://api.fundamentum-iot.com |
| v1 | Chemins sous /v1/projects/{projectId}/... : appareils et parcs, acheminement des données, alertes |
| v2 | Chemins sous /v2/... : organisations, projets, contrôle d'accès, registres, fonctions, Insight, licences |
Les deux versions sont actuelles et complémentaires : chaque domaine relève de l'une d'elles. Utilisez le même token pour les deux.
Authentification
Envoyez un token bearer OAuth2 avec chaque requête :
GET /v2/users/introspect HTTP/1.1
Host: api.fundamentum-iot.com
Authorization: Bearer $TOKEN
Le token est soit un token utilisateur (obtenu avec fun login ou votre propre client OAuth), soit un token de compte de service pour les intégrations. Consultez Authentification.
Une erreur 401 signifie que le token est absent, expiré ou destiné à un autre environnement. Une erreur 403 avec un token valide signifie que votre rôle ne dispose pas de la permission requise. Les informations d'identification des appareils (JWT d'appareil, clé de provisionnement) ne sont jamais acceptées ici.
Spécifications OpenAPI et Swagger UI
| Version | Spécification | Swagger UI |
|---|---|---|
| v1 | /v1/api/swagger.json (également /v1/openapi.yaml) |
Swagger UI v1 |
| v2 | /v2/api/openapi.json (également /v2/openapi.json et /v2/openapi.yaml) |
Swagger UI v2 |
Chaque domaine ci-dessous renvoie vers sa section dans Swagger UI, où vous pouvez vous connecter et tester des requêtes. Les deux spécifications sont au format OpenAPI 3.1. Elles constituent la référence pour chaque champ, paramètre et réponse ; cette page ne fait que les résumer.
Domaines
Appareils et parcs
| Domaine | Swagger UI | Chemins principaux |
|---|---|---|
| Appareils | v1 · Device | devices, devices/summaries, devices/{deviceId}/authentication |
| États | v1 · Device | devices/{deviceId}/states, last-states, state-types |
| Heartbeats | v1 · Heartbeat | devices/{deviceId}/heartbeats, last-heartbeats, registries/{registryId}/heartbeats, heartbeats, device-types/{deviceTypeId}/heartbeats/config |
| Types d'appareils et micrologiciel | v1 · Device Type | device-types, device-types/{deviceTypeId}/versions (une version correspond à une publication de micrologiciel), versions/{versionId}/files |
| Commandes | v1 · Commands | device/{deviceId}/commands/{shortName}, registries/{registryId}/batch-commands (lots et leur rapport) |
| Actions | v1 · Action | action-types, registries/{registryId}/actions, actions/{actionId}:cancel, :retry, devices/{deviceId}/actions |
| Capabilities et encodeurs | v1 · Capability | capabilities, capabilities/{capabilityId}/encoders, encoders, encoder-protocols |
| Transferts de fichiers | v1 · FileTransfers | transfers, transfers/{transferId}/files, history, :execute, :cancel |
| Registres | v1 | registries, registries/{registryId}/topics, registries/{registryId}/configuration |
Le terminal distant et la redirection de ports sont disponibles depuis le Hub et la CLI fun. Ils ne font pas partie des spécifications publiées. Consultez Terminal distant et redirection de ports.
Données
| Domaine | Swagger UI | Chemins principaux |
|---|---|---|
| Topics | v1 · PubSub | pub-sub-topics, pub-sub-topics/scopeable, pub-sub-topics/{scopeableTopic}/scoped |
| Connecteurs | v1 · PubSub | connectors, connectors/{connectorId}/links, connectors/{connectorId}/status |
| Messages HTTPS entrants | v1 · PubSub | POST connectors/{connectorId}/links/{linkId}/publish |
| Fonctions cloud | v2 · Functions | /v2/projects/{project_id}/functions, executions, file (téléversement), :invoke |
| Insight | v2 · Insight | /v2/projects/{project_id}/instances, pipelines (:submit, :cancel), tables, utilisateurs |
Consultez Topics, Connecteurs, Flux entrants, Fonctions cloud et Interroger vos données avec Insight.
Alertes
| Domaine | Swagger UI | Chemins principaux |
|---|---|---|
| Règles d'alerte et alertes | v1 · Alert | alert-rules, alert-rules/{alertRuleId}/alerts, devices/{deviceId}/alerts, alerts/{alertId}:resolve |
| Notifications | v2 · Projects: Alert Notifier | /v2/projects/{project_id}/alert-rules/{alert_rule_id}/notifiers |
| Utilisateurs notifiables | v1 · Alert | notifiable |
Consultez Alertes.
Gouvernance
| Domaine | Swagger UI | Chemins principaux |
|---|---|---|
| Organisations | v2 · Organizations | /v2/organizations |
| Projets | v2 · Projects | /v2/organizations/{organization_id}/projects |
| Registres | v2 | /v2/projects/{project_id}/registries, registries/{registry_id}/device_types (quotas), registries/{registry_id}/topics |
| Utilisateurs et invitations | v2 · Projects: Users/Invitations | /v2/projects/{project_id}/users |
| Rôles et permissions | v2 · Authorization: Containers | /v2/projects/{project_id}/containers, avec leurs actions, roles et permissions |
| Comptes de service | v2 · Service Accounts | /v2/projects/{project_id}/service-accounts, avec les rôles et les tokens |
| Licences | v2 · Licenses | /v2/projects/{project_id}/licenses, utilisateurs de licence et de site |
| Feature flags | v2 · Features Flags | /v2/projects/{project_id}/features/{code} |
| Utilisateur courant | v2 · Users | GET /v2/users/introspect |
Un registre créé via la v2 prend un name et une fenêtre de provisionnement (provisioning_start_at, provisioning_end_at, horodatages RFC 3339). Les appareils ne peuvent y être provisionnés qu'à l'intérieur de cette fenêtre. Ses quotas, c'est-à-dire le nombre d'appareils de chaque type d'appareil pouvant y être provisionnés, sont définis avec POST /v2/projects/{project_id}/registries/{registry_id}/device_types :
{
"ids": {
"<device-type-id>": { "provisioning_quantity": 100 }
}
}
Consultez Licences et Rôles et permissions.
Appeler l'API
Avec la CLI fun, chaque opération est disponible sous la forme fun api <version> <group> <operation> :
fun api refresh
fun api v1 device list-devices --project-id <project-id> --data-only
fun api v2 registries list-registries --project-id <project-id>
Avec curl :
curl -H "Authorization: Bearer $TOKEN" \
"https://api.fundamentum-iot.com/v1/projects/<project-id>/devices?page=1&item_per_page=25"
Les réponses, les erreurs, la pagination et les filtres suivent les Conventions.
Générer un client
Pointez n'importe quel générateur OpenAPI 3.1 vers l'URL de la spécification. Par exemple, avec OpenAPI Generator :
curl -o fundamentum-v2.json https://api.fundamentum-iot.com/v2/api/openapi.json
openapi-generator-cli generate -i fundamentum-v2.json -g python -o ./fundamentum-client
Générez un client par version, ou fusionnez-les dans votre build. Configurez le client pour qu'il envoie Authorization: Bearer <token>.