주요 콘텐츠로 건너뛰기
버전: 3.5.x

HTTP

기본적으로 HTTP 서비스가 시작됩니다: http://localhost:10001.

이 포트는 서비스 설정에서 변경할 수 있습니다.

개요

이 섹션에서는 서비스에서 제공하는 HTTP 경로를 설명합니다.

아래의 모든 경로는 기본 기본 URL을 기준으로 합니다: http://localhost:10001.

표준 회신용 봉투

모든 엔드포인트는 다음 두 가지 형식의 응답 중 하나를 반환합니다:

데이터 없음 응답 (변이 전용 평가 지표에서 사용됨):

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

데이터 응답 (GET 요청 및 적용된 값을 반환하는 구성 엔드포인트의 POST/DELETE 요청에서 사용됨):

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

장치 선택기 구문

장치 수준 경로는 다음 패턴을 사용합니다 /{device_type}/{id_or_index}/.... 그 {device_type} 그리고 {id_or_index} 경로 세그먼트는 대상 장치를 식별합니다.

경로 세그먼트 예시
inverse3/0인덱스(0부터 시작) Inverse3 첫 번째 Inverse3
inverse3/A14장치 ID가 Inverse3 A14
inverse3/*모든 Inverse3 (일괄 지정)
verse_grip/0인덱스를 이용한 퍼스트 버스 그립
wireless_verse_grip/*모든 무선 버즈 그립
*inverse/*모든 Inverse 시리즈 기기(Inverse3, Inverse3x, Minverse)
*verse_grip/*모든 Verse Grip 제품군(Verse Grip, Wireless VG)

와일드카드 규칙:

  • GET 모호하거나 와일드카드 선택자를 거부합니다 (반환값: 400).
  • POST 그리고 DELETE 와일드카드 허용 — 해당 작업은 일치하는 모든 장치에 적용됩니다.

세션 선택기

세션 범위 엔드포인트(basis, mount, preset, transform, filters)는 ?session=<expr> 세션을 식별하기 위한 쿼리 매개변수.

표현
(생략)모든 세션 (삭제 전용)
#123 또는 123ID가 123인 세션
:-1인덱스별 최근 세션
:0인덱스별 첫 번째 세션

예시: GET /inverse3/0/config/basis?session=:0


버전

방법: GET
URL: http://localhost:10001/version

응답 예시:

{
"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"
}

전문가 등급

방법: GET
URL: http://localhost:10001/expert/status

탐지, 장치, 세션 및 전체 설정을 포함한 상세한 상태 정보를 반환합니다.


디바이스

방법: GET
URL: http://localhost:10001/devices

현재 장치 목록을 반환하며, 다음을 포함합니다. config, statestatus.

선택적으로 다음을 전달할 수 있습니다 ?session=<expr> 스냅샷을 특정 세션의 관점에서 필터링합니다(반환된 값에 해당 세션의 기준, 마운트 및 변환을 적용합니다).

응답 예시:

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

세션

방법경로설명
받기/sessions활성 상태인 모든 v3.1 세션 나열
받기/sessions/{session_id}1회 세션 예약하기
받기/sessions/{session_id}/profile세션 프로필 이름 가져오기
게시물/sessions/{session_id}/profile세션 프로필 설정
삭제/sessions/{session_id}/profile프로필을 다음으로 초기화 "default"

게시물 /sessions/{session_id}/profile 본문:

{
"name": "my_profile"
}

항구

방법: POST
URL: http://localhost:10001/ports/{port}/reset

막힌 시리얼 포트를 해제합니다. 반환값 { "ok": true }.


장치 구성

모든 구성 엔드포인트는 다음 패턴을 사용합니다 /{device_type}/{id_or_index}/config/{setting}.

세션 범위 엔드포인트(basis, mount, preset)는 추가로 다음이 필요합니다. ?session=<expr> 쿼리 매개변수.

손잡이 (Inverse3 )

방법경로본문답변
받기/{device_type}/{id}/config/handedness--"left" 또는 "right"
게시물/{device_type}/{id}/config/handedness"left" 또는 "right"반환된 값
삭제/{device_type}/{id}/config/handedness--"right" (기본값)

토크 스케일링 (Inverse3 )

방법경로본문답변
받기/{device_type}/{id}/config/torque_scaling--{ "enabled": bool }
게시물/{device_type}/{id}/config/torque_scaling{ "enabled": bool }반환된 값
삭제/{device_type}/{id}/config/torque_scaling--{ "enabled": false }

중력 보정 (Inverse3 )

방법경로본문답변
받기/{device_type}/{id}/config/gravity_compensation--{ "enabled": bool, "scaling_factor": float }
게시물/{device_type}/{id}/config/gravity_compensation{ "enabled": bool, "scaling_factor": float }반환된 값
삭제/{device_type}/{id}/config/gravity_compensation--{ "enabled": true, "scaling_factor": 1.0 }

기본값 (모든 기기, 세션 범위)

방법경로본문답변
받기/{device_type}/{id}/config/basis?session=--{ "permutation": "XYZ" }
게시물/{device_type}/{id}/config/basis?session={ "permutation": "ZXY" }반환된 값
삭제/{device_type}/{id}/config/basis?session=--{ "permutation": "XYZ" }

마운트 (모든 장치, 세션 범위)

방법경로본문답변
받기/{device_type}/{id}/config/mount?session=--{ "transform": {...} }
게시물/{device_type}/{id}/config/mount?session={ "transform": {...} }반환된 값
삭제/{device_type}/{id}/config/mount?session=--정체성 변환

모양 변환 (마운트 및 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 }
}
}

사전 설정 (모든 기기, 세션 범위)

방법경로본문답변
받기/{device_type}/{id}/config/preset?session=--{ "preset": "arm_front_centered" }
게시물/{device_type}/{id}/config/preset?session={ "preset": "arm_front_centered" }반환된 값
삭제/{device_type}/{id}/config/preset?session=--{ "preset": "device_defaults" }

사용 가능한 값: device_defaults, arm_front, arm_front_centered, led_front, led_front_centered, custom.


장치 필터 (Inverse3 , 세션 범위)

필터 엔드포인트 사용 /{device_type}/{id}/config/filters/{filter}?session=<expr>.

감쇠

균일 감쇠와 방향성 감쇠를 모두 제어합니다. POST 본문에는 반드시 하나 이상의 필드가 포함되어야 합니다.

방법경로본문답변
받기/{device_type}/{id}/config/filters/damping?session=--{ "scalar": float, "vector": { "x": f, "y": f, "z": f } }
게시물/{device_type}/{id}/config/filters/damping?session={ "scalar": float } 또는 { "vector": {...} } 또는 둘 다반영된 가치
삭제/{device_type}/{id}/config/filters/damping?session=--둘 다 0으로 초기화됩니다

포스 게이트

방법경로본문답변
받기/{device_type}/{id}/config/filters/force_gate?session=--{ "gain": float }
게시물/{device_type}/{id}/config/filters/force_gate?session={ "gain": float }반환된 값
삭제/{device_type}/{id}/config/filters/force_gate?session=--설정에서 기본값으로 복원

장치 상태

변환 (모든 기기, 세션 범위)

작업 공간 변환 (디바이스 공간에서 애플리케이션 공간으로).

방법경로본문답변
받기/{device_type}/{id}/state/transform?session=--{ "transform": {...} }
게시물/{device_type}/{id}/state/transform?session={ "transform": {...} }반환된 값
삭제/{device_type}/{id}/state/transform?session=--정체성 변환

구성 저장

Inverse3 작동합니다. 주의: 특정 기기에 적용할 수 있는 저장 횟수(약 10,000회 EEPROM 쓰기)가 제한되어 있으므로, 설정을 너무 자주 저장하지 마십시오.

방법: POST
URL: http://localhost:10001/save_configuration

본문 예시:

{
"device_id": "049D"
}

응답 예시:

{
"ok": true
}

설정

다음 항목에 대해 설정 엔드포인트가 자동으로 생성됩니다:

  • 모든 설정(메타데이터 포함) 나열
  • 단일 설정값 읽기
  • 설정 적용 (개별 또는 일괄)
  • 키를 기본값으로 재설정하기

모든 설정 키에 대한 참조 정보는 여기에서 확인할 수 있습니다

노선

방법경로설명
받기/settings/모든 설정 키, 값 및 메타데이터를 가져옵니다.
게시물/settings/여러 설정을 한 번에 일괄 적용합니다.
받기/settings/{key}특정 설정 키의 현재 값을 가져옵니다.
게시물/settings/{key}특정 키에 새로운 값을 할당합니다.
삭제/settings/{key}키를 기본값으로 재설정합니다.

응답 형태

받기 /settings/ (모든 설정)

지정된 키를 키로 하는 객체를 반환합니다. 각 항목에는 다음이 포함됩니다:

  • value: 현재 값
  • metadata: 유형 + 제약 조건 + 잠금 상태

예시 항목:

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

받기 /settings/{key} (단일 설정)

요청된 키에 대한 값만 반환합니다(메타데이터는 포함되지 않음).

설정 적용

게시물 /settings/ (일괄 적용)

여러 키를 한 번에 일괄 적용합니다.

권장되는 데이터 형식: 키와 값을 매핑하는 JSON 객체.

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

게시물 /settings/{key} (단일 신청)

단일 키에 새로운 값을 적용합니다.

권장되는 데이터 형식: 원시 JSON 값 또는 래핑된 값(가독성을 위해 래핑된 값을 권장합니다).

{
"value": 5
}

설정 초기화

삭제 /settings/{key}

키를 기본값으로 재설정합니다.

이는 "기본값으로 초기화"하는 것과 같습니다.

타입 힌트

이 서비스는 추론하여 type_hint 자동으로. GENERIC 복합형에 대한 대체값으로 사용됩니다.

지원되는 힌트:

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

사용 중단된 레거시 엔드포인트

몇몇 POST 엔드포인트는 여전히 허용되지만 사용 중단 경고가 표시되며 향후 제거될 예정입니다 4.0. 참조: 3.5 버전 마이그레이션 가이드 전체 ‘사용 중단된 경로 → 대체 경로’ 표를 보려면.