API HTTP
URL de base : http://127.0.0.1:44555 sur le PC de MyHUD. Depuis un autre appareil, utilise l'adresse affichée dans le panneau et envoie le jeton. Voir Piloter depuis un autre appareil.
Routes
| Méthode et chemin | Description |
|---|---|
POST /api/actions/<commande> | Exécute une commande. |
GET /api/actions | Liste toutes les commandes et leur payload. |
GET /api/state | Panneaux du HUD, fenêtres, scène actuelle, statut d'OBS. |
GET /api/match | Match actuel. Identique à la commande get_match. |
GET /api/veto | Veto manuel en cours. Identique à la commande veto_status. |
GET /api/presets | Presets de couleurs du HUD. |
GET /health | Indique si le serveur tourne. |
Authentification
Sur le PC de MyHUD, aucune authentification n'est nécessaire.
Depuis un autre appareil, envoie le jeton dans l'un de ces en-têtes :
Authorization: Bearer <jeton>
X-MyHUD-Token: <jeton>POST /api/actions/<commande>
Envoie le payload de la commande dans un corps JSON, avec Content-Type: application/json. Pour une commande sans payload, n'envoie pas de corps, ou {}.
curl -X POST http://127.0.0.1:44555/api/actions/set_map_result \
-H 'Content-Type: application/json' \
-d '{"map":1,"scoreA":13,"scoreB":9,"finished":true}'$body = @{ map = 1; scoreA = 13; scoreB = 9; finished = $true } | ConvertTo-Json
Invoke-RestMethod -Method Post http://127.0.0.1:44555/api/actions/set_map_result `
-ContentType 'application/json' -Body $bodyimport requests
res = requests.post(
"http://127.0.0.1:44555/api/actions/set_map_result",
json={"map": 1, "scoreA": 13, "scoreB": 9, "finished": True},
)
print(res.status_code, res.json())const res = await fetch('http://127.0.0.1:44555/api/actions/set_map_result', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ map: 1, scoreA: 13, scoreB: 9, finished: true }),
});
console.log(res.status, await res.json());Les nombres et les booléens peuvent aussi être envoyés en texte ("3", "true"). C'est utile avec les outils qui n'envoient que du texte, comme le Stream Deck.
Succès
Statut 200 :
{ "ok": true, "state": { "revision": 42 }, "result": {} }state: la partie de l'état du HUD que la commande modifie, par exemple{ "revision": 42, "vetoVisible": true }.result: les données renvoyées par la commande. Seules certaines commandes renvoient des données. Voir Commandes.
Échec
Le statut est 4xx ou 5xx :
{ "ok": false, "error": "conflict", "message": "..." }Voir Erreurs.
GET /api/actions
{
"ok": true,
"actions": [
{
"id": "set_event_name",
"description": "Sets the event name shown by the HUD and the SEN scenes.",
"needsMainWindow": true,
"payload": {
"type": "object",
"properties": { "name": { "type": "string", "maxLength": 120 } },
"required": ["name"]
}
}
]
}needsMainWindow:truesi la commande échoue quand la fenêtre principale de MyHUD est fermée.payload: le JSON Schema du payload, ounullsi la commande n'en prend pas.description: en anglais.
Utilise cette route pour construire un outil qui correspond toujours à la version de MyHUD installée.
GET /api/state
{
"ok": true,
"state": {
"revision": 42,
"scoreboardVisible": false,
"vetoVisible": true,
"statsVisible": false,
"roster": [{ "slot": 1, "name": "ZywOo" }],
"hudWindowOpen": true,
"mainWindowOpen": true,
"senScene": "versus",
"obs": { "connection": "connected", "replayBufferActive": true }
}
}| Champ | Description |
|---|---|
revision | Un nombre qui augmente à chaque changement de l'état du HUD. |
scoreboardVisible, vetoVisible, statsVisible | Panneaux visibles sur le HUD. Absents tant que le HUD ne les a pas transmis. |
roster | Joueurs par slot du HUD (1 à 9, puis 0). Utilise le slot avec show_player_stats. |
hudWindowOpen | La fenêtre overlay du HUD est ouverte. |
mainWindowOpen | La fenêtre principale de MyHUD est ouverte. |
senScene | Scène affichée dans la fenêtre des scènes, ou null si elle est fermée. |
obs.connection | connected, connecting ou disconnected. |
GET /api/presets
{ "ok": true, "presets": [{ "id": "mon-preset", "name": "Mon preset" }] }La liste est vide tant que l'overlay du HUD n'a pas été ouvert une fois.
GET /health
{ "ok": true, "service": "myhud-automation" }Pages web
Par sécurité, une page web ouverte dans un navigateur ne peut pas envoyer de commandes, même sur le PC de MyHUD. MyHUD refuse toute requête qui a un en-tête Origin. Seules GET /health, GET /api/presets et GET /api/actions acceptent les requêtes d'une page web.
Les scripts, le Stream Deck, Companion et les autres programmes n'envoient pas cet en-tête : ils fonctionnent normalement.
