Aller au contenu

API Admin

L'API HTTP et WebSocket de Miravo — vérifications de santé, métriques, commandes, streaming d'événements, inspection d'instances et contrôle de simulation.

Le serveur HTTP admin s’exécute aux côtés de chaque simulation Miravo. Liaison par défaut : http://127.0.0.1:8080.

MéthodeCheminFonction
GET/healthzVérification de vivacité
GET/readyzVérification de disponibilité (moteur + adaptateurs)
GET/metricsSnapshot des métriques du moteur
GET/stateSnapshot de l’état du moteur
POST/commandsExécuter une commande du moteur
POST/shutdownArrêt gracieux (mode daemon)
GET/instances/:idDétail complet d’une instance
GET/models/:nameSchéma du modèle
GET/eventsJournal d’événements paginé
GET/wsUpgrade WebSocket pour le streaming en temps réel

Retourne 200 quand le moteur est en cours et que la boucle de tick progresse. Retourne 503 quand arrêté ou bloqué.

Fenêtre de terminal
curl -s http://127.0.0.1:8080/healthz | jq .

Retourne 200 quand le moteur est running et tous les adaptateurs activés sont connectés. Retourne 503 si un adaptateur est déconnecté ou si le moteur est en pause/arrêté.

Snapshot structurel avec les modèles, instances, configuration et adaptateurs disponibles.

Fenêtre de terminal
curl -s http://127.0.0.1:8080/state | jq .

Métriques d’exécution incluant le nombre de ticks, le nombre d’instances et les statistiques par adaptateur.

Détail complet d’une instance : valeurs des membres, paramètres, méthodes, cycle de vie, défaillances.

Fenêtre de terminal
curl -s http://127.0.0.1:8080/instances/pump-001 | jq .

Schéma du modèle avec paramètres, membres, méthodes, défaillances et définition du cycle de vie.

Fenêtre de terminal
curl -s http://127.0.0.1:8080/models/centrifugal-pump | jq .

Exécuter une commande du moteur. Accepte un objet JSON de commande — voir les types de commandes supportés ci-dessous.

Fenêtre de terminal
curl -s http://127.0.0.1:8080/commands \
-H 'content-type: application/json' \
-d '{"type":"pause"}'

Types de commandes supportés :

CommandeChamps clés
pause
resume
setSpeedmultiplier
spawnmodel, count, variation, parameterOverrides
removeInstanceinstanceId
setParameterinstanceId, parameter, value
triggerFaultinstanceId, fault
clearFaultinstanceId, fault
unquarantineinstanceId
invokeMethodinstanceId, method, arguments
loadTemplatetemplatePath, count
unloadTemplateRuntemplateRunId
resetSimulationclearPersistence
enableAdapteradapter, config
disableAdapteradapter

Exemple — appeler une méthode de modèle :

Fenêtre de terminal
curl -s http://127.0.0.1:8080/commands \
-H 'content-type: application/json' \
-d '{
"type": "invokeMethod",
"instanceId": "pump-001",
"method": "SetSpeed",
"arguments": {"speed_rpm": 900}
}'

Journal d’événements paginé avec pagination par curseur.

Récupérer les événements de défaillance récents :

Fenêtre de terminal
curl -s 'http://127.0.0.1:8080/events?type=fault:triggered&limit=10'

Paramètres de requête :

ParamètreDescription
typeFiltre : fault:triggered, fault:cleared, lifecycle:changed, instance:created, instance:removed, engine:state-changed
instanceIdFiltrer par instance
limitTaille de page (défaut 100, max 1000)
cursorCurseur pour la pagination vers l’arrière

Réponse : { "events", "nextCursor", "total" }

Upgrade en WebSocket pour le streaming d’événements en temps réel.

Fenêtre de terminal
websocat ws://127.0.0.1:8080/ws

À la connexion, le serveur envoie un message snapshot avec l’état actuel. Il pousse ensuite les événements sur les canaux souscrits.

Canaux : tick, faults, lifecycle, instances, engine, adapters (tous activés par défaut).

Changer les souscriptions :

{"type": "subscribe", "channels": ["faults", "lifecycle"]}

Maximum 10 connexions WebSocket simultanées. Les messages portent des numéros de revision monotones pour l’ordonnancement.

Définissez MIRAVO_ADMIN_TOKEN pour exiger une authentification par jeton bearer sur les endpoints de mutation :

Fenêtre de terminal
export MIRAVO_ADMIN_TOKEN=my-secret-token

Les commandes requièrent maintenant le jeton :

Fenêtre de terminal
curl -s http://127.0.0.1:8080/commands \
-H 'content-type: application/json' \
-H 'Authorization: Bearer my-secret-token' \
-d '{"type":"pause"}'

Les endpoints en lecture seule (/healthz, /readyz, /metrics, /state, /instances/*, /models/*, /events) ne requièrent pas d’authentification.

Quand vous vous liez à une adresse non-loopback, MIRAVO_ADMIN_TOKEN est requis pour les endpoints de mutation. Sans lui, POST /commands et POST /shutdown retournent 403.

OptionVariable d’envDéfautDescription
--admin-portMIRAVO_ADMIN_PORT8080Port du serveur admin
--admin-hostMIRAVO_ADMIN_HOST127.0.0.1Hôte de liaison du serveur admin
MIRAVO_ADMIN_TOKENJeton bearer pour les endpoints de mutation