Skip to main content
Version : 3.5.x

HTTP

Par défaut, le service HTTP démarre sur : http://localhost:10001.

Le port peut être modifié dans la configuration du service.

Vue d'ensemble

Cette section décrit les routes HTTP mises à disposition par le service.

Toutes les routes ci-dessous utilisent l'URL de base par défaut : http://localhost:10001.

Enveloppe de réponse standard

Tous les points de terminaison renvoient l'une des deux enveloppes suivantes :

Réponse « aucune donnée » (utilisée pour les critères d'évaluation basés uniquement sur les mutations) :

{ "ok": true }
{ "ok": false, "error": "reason string" }

Réponse de données (utilisée par GET, ainsi que par POST/DELETE sur les points de terminaison de configuration qui renvoient la valeur appliquée) :

{ "ok": true, "data": { "..." : "..." } }
{ "ok": false, "error": "reason string" }

Syntaxe du sélecteur de périphériques

Les routes au niveau des périphériques utilisent le modèle /{device_type}/{id_or_index}/.... Le {device_type} et {id_or_index} Les segments de chemin identifient le ou les appareils cibles.

Exemple de segment de cheminSignification
inverse3/0Premier Inverse3 index (à partir de 0)
inverse3/A14Inverse3 l'identifiant de l'appareil A14
inverse3/*Tous Inverse3 (symbolique)
verse_grip/0Premier coup de main par l'index
wireless_verse_grip/*Toutes les poignées Verse sans fil
*inverse/*Tous les appareils de la gamme Inverse (Inverse3, Inverse3x, Minverse)
*verse_grip/*Tous les appareils de la gamme Verse Grip (Verse Grip, Wireless VG)

Règles relatives aux caractères génériques :

  • GET refuse les sélecteurs ambigus ou contenant des caractères génériques (renvoie 400).
  • POST et DELETE accepte les caractères génériques : l'opération s'applique à tous les périphériques correspondants.

Sélecteur de session

Les points de terminaison liés à la session (basis, mount, preset, transform, filters) nécessitent un ?session=<expr> paramètre de requête permettant d'identifier la session.

ExpressionSignification
(omission)Toutes les sessions (suppression uniquement)
#123 ou 123Session portant le numéro d'identification 123
:-1Dernière session par index
:0Première session par index

Exemple : GET /inverse3/0/config/basis?session=:0


Version

Méthode : GET
URL : http://localhost:10001/version

Exemple de réponse :

{
"build_time": "2024-08-07T16:01:53Z",
"git_branch": "main",
"git_describe": "3.5.0-2-gce34c39e",
"git_hash": "ce34c39e",
"git_tag": "3.5.0",
"project_name": "haply-inverse-service",
"project_version": "3.5.0"
}

Statut d'expert

Méthode : GET
URL : http://localhost:10001/expert/status

Renvoie des informations détaillées sur l'état, notamment concernant la détection, les appareils, les sessions et les paramètres généraux.


Dispositifs

Méthode : GET
URL : http://localhost:10001/devices

Renvoie l'inventaire actuel des périphériques, comprenant config, stateet status.

Vous pouvez, si vous le souhaitez, passer ?session=<expr> pour filtrer l'instantané selon la perspective d'une session spécifique (applique la base, le montage et les transformations de cette session aux valeurs renvoyées).

Exemple de réponse :

{
"inverse3": [
{
"device_id": "04BA",
"config": { "...": "..." },
"state": { "...": "..." },
"status": { "...": "..." }
}
]
}

Séances

MéthodeCheminDescription
OBTENIR/sessionsRépertorier toutes les sessions v3.1 actives
OBTENIR/sessions/{session_id}Réservez une séance
OBTENIR/sessions/{session_id}/profileRécupérer le nom du profil de session
PUBLICATION/sessions/{session_id}/profileDéfinir le profil de session
SUPPRIMER/sessions/{session_id}/profileRéinitialiser le profil à "default"

PUBLICATION /sessions/{session_id}/profile corps :

{
"name": "my_profile"
}

Ports

Méthode : POST
URL : http://localhost:10001/ports/{port}/reset

Débloque un port série. Renvoie { "ok": true }.


Configuration de l'appareil

Tous les points de terminaison de configuration suivent le modèle /{device_type}/{id_or_index}/config/{setting}.

Les points de terminaison liés à la session (basis, mount, preset) nécessitent en outre un ?session=<expr> paramètre de requête.

Latéralité (Inverse3 )

MéthodeCheminCorpsRéponse
OBTENIR/{device_type}/{id}/config/handedness--"left" ou "right"
PUBLICATION/{device_type}/{id}/config/handedness"left" ou "right"valeur renvoyée
SUPPRIMER/{device_type}/{id}/config/handedness--"right" (par défaut)

Mise à l'échelle du couple (Inverse3 )

MéthodeCheminCorpsRéponse
OBTENIR/{device_type}/{id}/config/torque_scaling--{ "enabled": bool }
PUBLICATION/{device_type}/{id}/config/torque_scaling{ "enabled": bool }valeur renvoyée
SUPPRIMER/{device_type}/{id}/config/torque_scaling--{ "enabled": false }

Compensation de la gravité (Inverse3 )

MéthodeCheminCorpsRéponse
OBTENIR/{device_type}/{id}/config/gravity_compensation--{ "enabled": bool, "scaling_factor": float }
PUBLICATION/{device_type}/{id}/config/gravity_compensation{ "enabled": bool, "scaling_factor": float }valeur renvoyée
SUPPRIMER/{device_type}/{id}/config/gravity_compensation--{ "enabled": true, "scaling_factor": 1.0 }

Base (tous les appareils, portée de session)

MéthodeCheminCorpsRéponse
OBTENIR/{device_type}/{id}/config/basis?session=--{ "permutation": "XYZ" }
PUBLICATION/{device_type}/{id}/config/basis?session={ "permutation": "ZXY" }valeur renvoyée
SUPPRIMER/{device_type}/{id}/config/basis?session=--{ "permutation": "XYZ" }

Monter (tous les périphériques, au niveau de la session)

MéthodeCheminCorpsRéponse
OBTENIR/{device_type}/{id}/config/mount?session=--{ "transform": {...} }
PUBLICATION/{device_type}/{id}/config/mount?session={ "transform": {...} }valeur renvoyée
SUPPRIMER/{device_type}/{id}/config/mount?session=--transformation d'identité

Transformer la forme (utilisé par les fonctions `mount` et `state/transform`) :

{
"transform": {
"position": { "x": 0, "y": 0, "z": 0 },
"rotation": { "x": 0, "y": 0, "z": 0, "w": 1 },
"scale": { "x": 1, "y": 1, "z": 1 }
}
}

Préréglage (tous les appareils, au niveau de la session)

MéthodeCheminCorpsRéponse
OBTENIR/{device_type}/{id}/config/workspace_preset?session=--{ "preset": "arm_front_centered" }
PUBLICATION/{device_type}/{id}/config/workspace_preset?session={ "preset": "arm_front_centered" }valeur renvoyée
SUPPRIMER/{device_type}/{id}/config/workspace_preset?session=--{ "preset": "device_defaults" }

Valeurs disponibles : device_defaults, arm_front, arm_front_centered, led_front, led_front_centered, custom.


Filtres de périphériques (Inverse3 , au niveau de la session)

Utilisation des points de terminaison de filtrage /{device_type}/{id}/config/filters/{filter}?session=<expr>.

Amortissement

Contrôle à la fois l'amortissement uniforme et l'amortissement directionnel. Au moins un champ doit être présent dans le corps de la balise POST.

MéthodeCheminCorpsRéponse
OBTENIR/{device_type}/{id}/config/filters/damping?session=--{ "scalar": float, "vector": { "x": f, "y": f, "z": f } }
PUBLICATION/{device_type}/{id}/config/filters/damping?session={ "scalar": float } ou { "vector": {...} } ou les deuxvaleurs reprises
SUPPRIMER/{device_type}/{id}/config/filters/damping?session=--les deux sont remis à zéro

Force Gate

MéthodeCheminCorpsRéponse
OBTENIR/{device_type}/{id}/config/filters/force_gate?session=--{ "gain": float }
PUBLICATION/{device_type}/{id}/config/filters/force_gate?session={ "gain": float }valeur renvoyée
SUPPRIMER/{device_type}/{id}/config/filters/force_gate?session=--récupérer les paramètres par défaut

État de l'appareil

Transformer (tous les appareils, au niveau de la session)

Transformation de l'espace de travail (de l'espace matériel à l'espace applicatif).

MéthodeCheminCorpsRéponse
OBTENIR/{device_type}/{id}/state/transform?session=--{ "transform": {...} }
PUBLICATION/{device_type}/{id}/state/transform?session={ "transform": {...} }valeur renvoyée
SUPPRIMER/{device_type}/{id}/state/transform?session=--transformation d'identité

Sauvegarder la configuration

Fonctionne uniquement avec Inverse3 . Attention : évitez d'enregistrer la configuration trop souvent, car le nombre d'enregistrements pouvant être effectués sur un appareil donné est limité (~10 000 écritures EEPROM).

Méthode : POST
URL : http://localhost:10001/save_configuration

Exemple de corps :

{
"device_id": "049D"
}

Exemple de réponse :

{
"ok": true
}

Paramètres

Les points de terminaison de configuration sont générés automatiquement pour :

  • Liste de tous les paramètres (y compris les métadonnées)
  • Lecture d'une valeur de paramètre
  • Application des paramètres (individuellement ou par lots)
  • Réinitialisation d'une clé à sa valeur par défaut

Vous trouverez ici toutes les références aux paramètres clés

Itinéraires

MéthodeItinéraireDescription
OBTENIR/settings/Récupérer toutes les clés, valeurs et métadonnées des paramètres.
PUBLICATION/settings/Appliquer plusieurs paramètres en une seule fois.
OBTENIR/settings/{key}Récupérer la valeur actuelle d'une clé de paramètre spécifique.
PUBLICATION/settings/{key}Attribuer une nouvelle valeur à une clé spécifique.
SUPPRIMER/settings/{key}Réinitialiser une clé à sa valeur par défaut.

Forme de la réponse

OBTENIR /settings/ (tous les paramètres)

Renvoie un objet dont les clés correspondent aux paramètres. Chaque entrée comprend :

  • value: la valeur actuelle
  • metadata: type + contraintes + état de verrouillage

Exemples d'entrées :

{
"devices/detection/timeout": {
"metadata": {
"constraint": {
"range": {
"max": 15,
"min": 1,
"step": 0
}
},
"locked": false,
"type_hint": "INT"
},
"value": 5
}
}

OBTENIR /settings/{key} (réglage unique)

Renvoie uniquement la valeur (sans métadonnées) associée à la clé demandée.

Appliquer les paramètres

PUBLICATION /settings/ (application groupée)

Appliquer plusieurs clés en une seule fois.

Format recommandé pour le corps du message : un objet JSON associant des clés à des valeurs.

{
"devices/detection/timeout": 5,
"devices/detection/advanced/wvg_description_filter": ["Haply USB Transceiver", "Haply Handle"]
}

PUBLICATION /settings/{key} (application unique)

Attribuer une nouvelle valeur à une seule clé.

Format recommandé pour le corps : soit une valeur JSON brute, soit une valeur encapsulée (privilégiez l'encapsulation pour plus de clarté).

{
"value": 5
}

Réinitialisation des paramètres

SUPPRIMER /settings/{key}

Rétablit la valeur par défaut de la clé.

Cela revient à « rétablir les paramètres par défaut ».

Indications de type

Le service en déduit type_hint automatiquement. GENERIC sert de solution de secours pour les types complexes.

Conseils pris en charge :

  • BOOL
  • INT
  • FLOAT
  • STRING
  • VEC2
  • VEC3
  • VEC4
  • TRANSFORM
  • ARR_INT
  • ARR_FLOAT
  • ARR_STRING
  • GENERIC

Points de terminaison hérités obsolètes

Les points de terminaison suivants sont toujours acceptés, mais génèrent un avertissement de dépréciation. Ils seront supprimés dans la version 4.0. Veuillez utiliser les routes de remplacement à la place.

Chemin obsolèteRemplacement
POST /force_scalePOST /settings/devices/force_scale
POST /gravity_compensationPOST /{type}/{id}/config/gravity_compensation
POST /torque_scalingPOST /{type}/{id}/config/torque_scaling
POST /device_handednessPOST /{type}/{id}/config/handedness
POST /serial_enablePOST /settings/system/serial_enable
POST /experimental/features/grip_dropped_simulation_stopperPOST /settings/features/grip_hook/enabled
POST /experimental/features/screensaver_enablePOST /settings/features/screensaver/enabled