API de Laboratorios (Frida)
Ruta base: /workbenches/v1. Autenticación con la sesión o token de Studio; toda operación está limitada al Cliente activo. En la API el laboratorio se llama workbench.
Operaciones
| Método y ruta | Descripción |
|---|---|
GET /workbenches/v1/plan | Tallas disponibles para el Cliente (sizes con cpu, memory, storage, gpumemMiB), talla por defecto (defaultSize) y máximos por recurso (ceiling). |
GET /workbenches/v1 | Lista de laboratorios. Filtro ownership: mine, shared, all. |
POST /workbenches/v1 | Crear. Cuerpo: name y size (nombre de talla) o resources (cpu, memory, gpumem, storage). |
GET /workbenches/v1/{id} | Detalle: status, spec (talla y recursos resueltos), usage (consumo por recurso), dashboardUrl, rejections (últimos rechazos de admisión) y access (dueño y editores). |
DELETE /workbenches/v1/{id} | Eliminar. Solo el dueño, en estado ready o failed. |
GET, POST, DELETE /workbenches/v1/{id}/members | Listar, agregar (userId, role: editor) y quitar editores. |
Ejemplo: crear con una talla
curl -X POST "https://api.<tu-dominio>/workbenches/v1" \
-H "Authorization: Bearer <token>" -H "Content-Type: application/json" \
-d '{"name": "prediccion-fugas", "size": "M"}'
{
"id": "wb_3wzamf964waf5t0cjzmqmrsdb",
"name": "prediccion-fugas",
"status": "pending",
"spec": { "size": "M", "cpu": "5", "memory": "18Gi", "gpumem": "12288", "storage": "50Gi" },
"dashboardUrl": null,
"access": { "owner": "usr_...", "editors": [] }
}
dashboardUrl se rellena cuando status pasa a ready; es la misma URL que abre el botón Abrir en Studio. Consulta el detalle cada 10 a 15 segundos hasta entonces; no antes.
Un rechazo por política llega como 422 con el recurso y el límite:
{
"error": {
"code": "LAB_POLICY_UNAVAILABLE",
"message": "gpumem 32768 exceeds the plan ceiling of 24576",
"details": { "dimension": "gpumem", "requested": "32768", "limit": "24576" }
}
}
Cantidades
Los recursos usan la notación de Kubernetes: cpu en núcleos (4) o milinúcleos (500m); memory y storage con sufijo binario (16Gi); gpumem en MiB sin sufijo (24576) o con sufijo (24Gi).
Estados
pending, provisioning, ready, failed, deleting, deleted, not_installed.
Errores
| HTTP | Cuándo |
|---|---|
| 400 | LAB_INVALID_RESOURCES: cantidad mal formada, o talla y recursos enviados a la vez. |
| 403 | No eres dueño (eliminar, compartir). |
| 404 | No existe o pertenece a otro Cliente. |
| 409 | Ya existe un laboratorio con ese nombre, o hay una eliminación en curso. |
| 422 | LAB_POLICY_UNAVAILABLE: la talla no existe en el plan o un recurso supera el máximo (details trae dimension, requested y limit). LAB_CAPACITY_UNAVAILABLE: no hay capacidad ahora. |
| 403 / 404 (miembros) | LAB_MEMBER_NOT_IN_ORGANIZATION, LAB_MEMBER_IS_OWNER, LAB_INVALID_ROLE al compartir con alguien fuera del Cliente, con el propio dueño o con un rol distinto de editor. |