haply 1.1.0

Haply Robotics Client Library for the Inverse Service
Documentation
//! HTTP-specific response types.

use crate::device_model::{
    CustomVerseGripDevice, Inverse3Device, SessionInfo, VerseGripDevice, WirelessVerseGripDevice,
};
use serde::{Deserialize, Serialize};

/// Response structure for device queries.
#[derive(Debug, Deserialize)]
pub struct DevicesResponse {
    #[serde(default)]
    pub session_id: u64,
    #[serde(default)]
    pub inverse3: Vec<Inverse3Device>,
    #[serde(default)]
    pub verse_grip: Vec<VerseGripDevice>,
    #[serde(default)]
    pub wireless_verse_grip: Vec<WirelessVerseGripDevice>,
    #[serde(default)]
    pub custom_verse_grip: Vec<CustomVerseGripDevice>,
}

/// Standard API response envelope used by most 3.5 endpoints.
#[derive(Debug, Deserialize)]
pub struct ApiResponse {
    pub ok: bool,
    pub data: Option<serde_json::Value>,
    pub error: Option<String>,
}

/// Response from `GET /expert/status`.
#[derive(Debug, Deserialize, Serialize)]
pub struct ExpertStatusResponse {
    pub detection: serde_json::Value,
    pub devices: serde_json::Value,
    pub sessions: serde_json::Value,
    pub global: serde_json::Value,
}

/// Data payload from `GET /sessions`.
#[derive(Debug, Deserialize, Serialize)]
pub struct SessionListData {
    pub session_count: u32,
    pub sessions: Vec<SessionInfo>,
}

/// Response from `GET/POST/DELETE /{type}/{id}/config/paired_with`.
#[derive(Debug, Deserialize, Serialize)]
pub struct PairingResponse {
    pub inverse_id: Option<String>,
    pub verse_grip_id: Option<String>,
    pub attached: bool,
    pub force_attached: bool,
}