From 79afd2a1ad4713335abd60bb1ee2c20b720a2c38 Mon Sep 17 00:00:00 2001 From: Jason Staack Date: Thu, 12 Mar 2026 15:42:42 -0500 Subject: [PATCH] feat(frontend): add remote access API client methods --- frontend/src/lib/api.ts | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/frontend/src/lib/api.ts b/frontend/src/lib/api.ts index cab0558..339f6d2 100644 --- a/frontend/src/lib/api.ts +++ b/frontend/src/lib/api.ts @@ -931,6 +931,43 @@ export const apiKeysApi = { api.delete(`/api/tenants/${tenantId}/api-keys/${keyId}`).then((r) => r.data), } +// ─── Remote Access ─────────────────────────────────────────────────────────── + +export const remoteAccessApi = { + openWinbox: (tenantId: string, deviceId: string) => + api + .post<{ + tunnel_id: string + host: string + port: number + winbox_uri: string + idle_timeout_seconds: number + }>(`/api/tenants/${tenantId}/devices/${deviceId}/winbox-session`) + .then((r) => r.data), + + closeWinbox: (tenantId: string, deviceId: string, tunnelId: string) => + api + .delete(`/api/tenants/${tenantId}/devices/${deviceId}/winbox-session/${tunnelId}`) + .then((r) => r.data), + + openSSH: (tenantId: string, deviceId: string, cols: number, rows: number) => + api + .post<{ + token: string + websocket_url: string + idle_timeout_seconds: number + }>(`/api/tenants/${tenantId}/devices/${deviceId}/ssh-session`, { cols, rows }) + .then((r) => r.data), + + getSessions: (tenantId: string, deviceId: string) => + api + .get<{ + winbox_tunnels: Array<{ tunnel_id: string; local_port: number; idle_seconds: number; created_at: string }> + ssh_sessions: Array<{ session_id: string; idle_seconds: number; created_at: string }> + }>(`/api/tenants/${tenantId}/devices/${deviceId}/sessions`) + .then((r) => r.data), +} + // ─── VPN (WireGuard) ──────────────────────────────────────────────────────── export interface VpnConfigResponse {