wifi-densepose/v2/crates/wifi-densepose-api/README.md

2.7 KiB

wifi-densepose-api

Crates.io Documentation License

REST and WebSocket API layer for the WiFi-DensePose pose estimation system.

Overview

wifi-densepose-api provides the HTTP service boundary for WiFi-DensePose. Built on axum, it exposes REST endpoints for pose queries, CSI frame ingestion, and model management, plus a WebSocket feed for real-time pose streaming to frontend clients.

Status: This crate is currently a stub. The intended API surface is documented below.

Planned Features

  • REST endpoints -- CRUD for scan zones, pose queries, model configuration, and health checks.
  • WebSocket streaming -- Real-time pose estimate broadcasts with per-client subscription filters.
  • Authentication -- Token-based auth middleware via tower layers.
  • Rate limiting -- Configurable per-route limits to protect hardware-constrained deployments.
  • OpenAPI spec -- Auto-generated documentation via utoipa.
  • CORS -- Configurable cross-origin support for browser-based dashboards.
  • Graceful shutdown -- Clean connection draining on SIGTERM.

Quick Start

// Intended usage (not yet implemented)
use wifi_densepose_api::Server;

#[tokio::main]
async fn main() -> anyhow::Result<()> {
    let server = Server::builder()
        .bind("0.0.0.0:3000")
        .with_websocket("/ws/poses")
        .build()
        .await?;

    server.run().await
}

Planned Endpoints

Method Path Description
GET /api/v1/health Liveness and readiness probes
GET /api/v1/poses Latest pose estimates
POST /api/v1/csi Ingest raw CSI frames
GET /api/v1/zones List scan zones
POST /api/v1/zones Create a scan zone
WS /ws/poses Real-time pose stream
WS /ws/vitals Real-time vital sign stream
Crate Role
wifi-densepose-core Shared types and traits
wifi-densepose-config Configuration loading
wifi-densepose-db Database persistence
wifi-densepose-nn Neural network inference
wifi-densepose-signal CSI signal processing
wifi-densepose-sensing-server Lightweight sensing UI server

License

MIT OR Apache-2.0