Base URL: /api/v1
Autenticacion: Authorization: Bearer <access_token>
Roles:
ADMINOPERATORVIEWER
POST /auth/login(publico)POST /auth/refresh(publico con refresh token)POST /auth/logout(publico con refresh token)GET /auth/me(ADMIN|OPERATOR|VIEWER)
GET /users(ADMIN)POST /users(ADMIN)GET /users/:id(ADMIN)PATCH /users/:id(ADMIN)DELETE /users/:id(ADMIN)
GET /roles(ADMIN)PATCH /roles/:name(ADMIN)
GET /virtual-machines(ADMIN|OPERATOR|VIEWER)POST /virtual-machines(ADMIN|OPERATOR)GET /virtual-machines/:id(ADMIN|OPERATOR|VIEWER)PATCH /virtual-machines/:id(ADMIN|OPERATOR)DELETE /virtual-machines/:id(ADMIN)POST /virtual-machines/:id/actions/start(ADMIN|OPERATOR)POST /virtual-machines/:id/actions/stop(ADMIN|OPERATOR)POST /virtual-machines/:id/actions/reboot(ADMIN|OPERATOR)
GET /hypervisors(ADMIN|OPERATOR|VIEWER)POST /hypervisors(ADMIN)GET /hypervisors/:id(ADMIN|OPERATOR|VIEWER)PATCH /hypervisors/:id(ADMIN)POST /hypervisors/:id/actions/probe(ADMIN|OPERATOR)DELETE /hypervisors/:id(ADMIN)
GET /groups(ADMIN)POST /groups(ADMIN)PATCH /groups/:id(ADMIN)POST /groups/:id/members(ADMIN)DELETE /groups/:id/members/:userId(ADMIN)
GET /storage(ADMIN|OPERATOR|VIEWER)POST /storage/pools(ADMIN)POST /storage/volumes(ADMIN|OPERATOR)
GET /isos(ADMIN|OPERATOR|VIEWER)POST /isos/upload(ADMIN|OPERATOR) multipart (isofile)POST /isos(ADMIN|OPERATOR)DELETE /isos/:id(ADMIN)
GET /templates(ADMIN|OPERATOR|VIEWER)POST /templates(ADMIN|OPERATOR)DELETE /templates/:id(ADMIN)
GET /networks(ADMIN|OPERATOR|VIEWER)POST /networks(ADMIN)PATCH /networks/:id(ADMIN)
POST /remote-console/sessions(ADMIN|OPERATOR|VIEWER)- body:
{ "vmId": "<uuid>", "protocol": "VNC" | "RDP" } VNC: devuelvelaunchUrla pantalla noVNC +vncWsUrlRDP: devuelvelaunchUrlpara descargar archivo.rdp
- body:
GET /remote-console/sessions/:id(ADMIN|OPERATOR|VIEWER)GET /remote-console/sessions/:id/rdp-file?token=...(token temporal)DELETE /remote-console/sessions/:id(ADMIN|OPERATOR)
GET /dashboard/summary(ADMIN|OPERATOR|VIEWER)GET /dashboard/resources(ADMIN|OPERATOR|VIEWER)
GET /audit-logs(ADMIN)GET /audit-logs/:id(ADMIN)
GET /settings(ADMIN)PATCH /settings(ADMIN)
Formato:
{
"statusCode": 400,
"code": "VALIDATION_ERROR",
"message": "Invalid payload",
"details": []
}Codigos:
VALIDATION_ERRORUNAUTHORIZEDFORBIDDENNOT_FOUNDCONFLICTHYPERVISOR_UNAVAILABLEVM_INVALID_STATEINTERNAL_ERROR