3.7 KiB
3.7 KiB
OnEver Drive — Referencia de API REST & WebSockets
Base URL: /api
1. Autenticación
POST /api/auth/login
Inicia sesión de usuario administrativo.
- Body:
{ "email": "admin@oneverdrive.local", "password": "Admin1234!" } - Response:
{ "access_token": "eyJhbGciOi...", "token_type": "bearer", "user": { "id": 1, "email": "admin@oneverdrive.local", "role": "ADMIN" } }
2. Clientes Windows
POST /api/clients/registration-code
Genera un código temporal de un solo uso para registrar un nuevo agente Windows.
- Auth: Bearer Token (ADMIN)
- Body:
{ "client_name_hint": "SQL Server Prod", "expires_in_hours": 48 } - Response:
{ "code": "OED-4A2F-9B1C", "expires_at": "2026-08-15T12:00:00Z" }
POST /api/clients/register
Invocado por el agente Windows con el código de registro para obtener credenciales únicas.
- Body:
{ "registration_code": "OED-4A2F-9B1C", "name": "SQL Server Prod", "hostname": "WIN-SRV-2022", "os_info": "Windows Server 2022 Datacenter", "agent_version": "1.0.0" } - Response:
{ "client_code": "CLIENT-0001", "device_id": "8f3b4d7c-3b1a-4d2e-9c1a-8f3b4d7c3b1a", "device_token": "oed_sec_a8b9c0d1...", "name": "SQL Server Prod", "server_time": "2026-08-13T16:00:00Z" }
GET /api/clients
Lista todos los clientes registrados.
POST /api/clients/{id}/revoke
Revoca inmediatamente las credenciales de un cliente Windows.
3. Motor de Transferencia por Chunks
POST /api/upload/session
Inicia una nueva sesión de subida o reanuda una sesión existente incompleta.
- Headers:
X-Device-Id: <DEVICE_ID>X-Device-Token: <DEVICE_TOKEN> - Body:
{ "filename": "database_production.bak", "file_size": 12582912, "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "chunk_size": 4194304, "job_id": 1 } - Response:
{ "session_code": "6f2e8b1a-...", "filename": "database_production.bak", "file_size": 12582912, "chunk_size": 4194304, "total_chunks": 3, "received_chunks": [0], "status": "UPLOADING" }
POST /api/upload/{session_code}/chunk
Envía los bytes de un bloque específico.
- Headers:
X-Device-Id: <DEVICE_ID>X-Device-Token: <DEVICE_TOKEN>X-Chunk-Index: 1X-Chunk-SHA256: <CHUNK_HASH> - Body: Raw binary bytes
- Response:
{ "chunk_index": 1, "is_received": true, "total_received": 2, "total_chunks": 3, "progress_percent": 66.67 }
GET /api/upload/{session_code}/status
Devuelve el estado de la sesión y la lista de chunks pendientes de subida.
POST /api/upload/{session_code}/complete
Solicita el ensamblado secuencial del archivo y la verificación de integridad SHA-256 total.
- Response:
{ "session_code": "6f2e8b1a-...", "filename": "database_production.bak", "relative_path": "clients/CLIENT-0001/JOB-001/20260813_160000_database_production.bak", "file_size": 12582912, "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "status": "SUCCESS" }
4. WebSockets Telemetría en Tiempo Real
Endpoint: /ws/telemetry
Eventos transmitidos:
UPLOAD_PROGRESS:{ "session_code", "filename", "client_id", "chunk_index", "received_chunks", "total_chunks", "progress_percent" }UPLOAD_COMPLETED:{ "session_code", "filename", "client_id", "file_size", "sha256", "status" }CLIENT_REGISTERED:{ "id", "client_code", "name", "hostname", "status" }EVENT_LOG:{ "id", "timestamp", "event_type", "severity", "message" }