Saltar al contenido principal

API

DashAI expone una API RESTful en /api/v1. Todos los endpoints devuelven JSON. La API está construida con FastAPI y soporta documentación OpenAPI en /docs (Swagger UI) y /redoc.

Estructura de Rutas

Archivo del routerRecursoPropósito
components.py/api/v1/componentListar y filtrar componentes registrados
datasets.py/api/v1/datasetCargar, listar y validar datasets
model_sessions.py/api/v1/model-sessionCRUD para sesiones de entrenamiento de modelos
runs.py/api/v1/runCRUD para ejecuciones de entrenamiento, métricas y gráficos de optimización
jobs.py/api/v1/jobEncolar trabajos y consultar el estado de un trabajo
explorers.py/api/v1/explorerLanzar y recuperar exploraciones de datos
explainers.py/api/v1/explainerLanzar explicaciones de modelos
converters.py/api/v1/converterAplicar transformaciones de datos
predict.py/api/v1/predictEjecutar predicciones sobre nuevos datos
plugins.py/api/v1/pluginGestionar plugins instalados
generative_session.py/api/v1/generative-sessionSesiones de modelos generativos
generative_process.py/api/v1/generative-processEjecución y resultados de procesos generativos

Endpoints Clave

Componentes

GET /api/v1/component/
GET /api/v1/component/?select_types=["Model","Metric"]

Devuelve todos los componentes registrados con sus esquemas y metadatos. Acepta un parámetro de consulta opcional select_types para filtrar por categoría de componente. El frontend usa esta respuesta para renderizar formularios de configuración de forma dinámica.

Datasets

GET    /api/v1/dataset/
POST /api/v1/dataset/
GET /api/v1/dataset/{dataset_id}
PATCH /api/v1/dataset/{dataset_id}
DELETE /api/v1/dataset/{dataset_id}
GET /api/v1/dataset/{dataset_id}/sample
GET /api/v1/dataset/{dataset_id}/info
GET /api/v1/dataset/{dataset_id}/types
GET /api/v1/dataset/{dataset_id}/model-sessions-exist
GET /api/v1/dataset/filter/
POST /api/v1/dataset/copy
PATCH /api/v1/dataset/{dataset_id}/columns/rename
GET /api/v1/dataset/export/csv

POST crea una entrada de dataset (la carga se maneja como datos de formulario multiparte). PATCH renombra un dataset. El endpoint /sample devuelve 10 filas representativas; /info devuelve el esquema y metadatos de las columnas; /types devuelve los tipos de datos por columna. /filter/ soporta paginación y filtrado de columnas para la cuadrícula de datos del frontend. POST /copy duplica un dataset existente. /export/csv descarga el dataset completo como un archivo CSV.

Sesiones de Modelo (Experimentos)

GET    /api/v1/model-session/
POST /api/v1/model-session/
GET /api/v1/model-session/{session_id}
PATCH /api/v1/model-session/{session_id}
DELETE /api/v1/model-session/{session_id}
POST /api/v1/model-session/validation

Una ModelSession captura la configuración completa del experimento — dataset, tarea, columnas de entrada/salida, proporciones de división y métricas seleccionadas. POST /validation verifica que las columnas del dataset seleccionado son compatibles con la tarea elegida antes de crear la sesión.

Ejecuciones

GET    /api/v1/run/
POST /api/v1/run/
GET /api/v1/run/{run_id}
PATCH /api/v1/run/{run_id}
PATCH /api/v1/run/{run_id}/reset
DELETE /api/v1/run/{run_id}
DELETE /api/v1/run/{run_id}/operations
GET /api/v1/run/{run_id}/operations/count
GET /api/v1/run/plot/{run_id}/{plot_type}

Cada ejecución pertenece a una ModelSession y almacena el nombre del modelo, los parámetros, la configuración del optimizador y los artefactos de entrenamiento. PATCH /{run_id}/reset restablece una ejecución al estado NOT_STARTED. /operations/count devuelve el número de explicadores y predicciones asociados a una ejecución; DELETE /operations los elimina todos. /plot/{run_id}/{plot_type} obtiene los gráficos de optimización de hiperparámetros — plot_type es uno de history, slice, contour o importance.

Trabajos

POST   /api/v1/job/
GET /api/v1/job/status/{job_id}

Todas las operaciones de larga duración (entrenamiento, exploración, predicción, conversión) se envían como trabajos. POST encola un trabajo y devuelve un ID de trabajo de inmediato. El frontend consulta GET /status/{job_id} hasta que el trabajo alcanza el estado finished o error.

Exploradores

GET    /api/v1/explorer/
POST /api/v1/explorer/
GET /api/v1/explorer/{explorer_id}/
PATCH /api/v1/explorer/{explorer_id}/
DELETE /api/v1/explorer/{explorer_id}/
POST /api/v1/explorer/{explorer_id}/results/
PUT /api/v1/explorer/{explorer_id}/results/

Los exploradores ejecutan visualizaciones (gráficos de dispersión, histogramas, etc.) sobre el dataset de un Notebook. POST / crea un registro de Explorer y encola un ExplorerJob. POST /{explorer_id}/results/ recupera el resultado calculado; PUT lo actualiza. Los resultados se almacenan como especificaciones JSON de Plotly.

Converters

POST   /api/v1/converter/
GET /api/v1/converter/{converter_list_id}
GET /api/v1/converter/notebook/{notebook_id}
DELETE /api/v1/converter/{converter_list_id}

POST guarda un paso de converter individual en un Notebook. GET /notebook/{notebook_id} devuelve todos los registros de converters finalizados para ese Notebook. DELETE revierte el dataset del Notebook al estado previo al converter eliminado y vuelve a encolar todos los converters anteriores.

Explicadores

GET    /api/v1/explainer/global
POST /api/v1/explainer/global
GET /api/v1/explainer/global/{explainer_id}
GET /api/v1/explainer/global/plot/{explainer_id}
DELETE /api/v1/explainer/global/{explainer_id}

GET /api/v1/explainer/local
POST /api/v1/explainer/local
GET /api/v1/explainer/local/{explainer_id}
GET /api/v1/explainer/local/plot/{explainer_id}
DELETE /api/v1/explainer/local/{explainer_id}
POST /api/v1/explainer/local/validate-dataset

PATCH /api/v1/explainer/

Los explicadores globales (p. ej., Permutation Feature Importance) producen una explicación única que cubre todo el modelo. Los explicadores locales (p. ej., KernelShap) producen explicaciones por instancia. Ambos soportan un endpoint /plot que devuelve la visualización. POST /local/validate-dataset verifica que un dataset de entrada es compatible con la ejecución entrenada antes de crear un explicador local.

Predicciones

GET    /api/v1/predict/
POST /api/v1/predict/
DELETE /api/v1/predict/{prediction_id}
GET /api/v1/predict/filter_datasets
POST /api/v1/predict/preview

POST / crea un trabajo de predicción persistido vinculado a una ejecución entrenada. GET /filter_datasets devuelve solo los datasets cuyo esquema de columnas es compatible con el dataset de entrenamiento de la ejecución. POST /preview ejecuta una predicción sincrónica y devuelve el resultado de inmediato sin persistirlo — útil para inferencia interactiva rápida.

Sesiones y Procesos Generativos

GET    /api/v1/generative-session/
POST /api/v1/generative-session/
GET /api/v1/generative-session/{session_id}
PATCH /api/v1/generative-session/{session_id}
DELETE /api/v1/generative-session/{session_id}

POST /api/v1/generative-process/
GET /api/v1/generative-process/{process_id}
GET /api/v1/generative-process/{process_id}/results

Una GenerativeSession almacena el modelo y los parámetros para un flujo de trabajo generativo (texto a texto, texto a imagen, ControlNet, etc.). PATCH actualiza los parámetros de la sesión y registra una instantánea en el historial de parámetros. Cada invocación crea un registro GenerativeProcess que rastrea el estado y almacena las cargas útiles de entrada/salida a través de registros ProcessData. GET /{process_id}/results devuelve la salida una vez que el proceso finaliza.

Inyección de Dependencias

Los endpoints reciben dependencias a través del mecanismo Depends de FastAPI combinado con el contenedor di de Kink:

@router.post("/")
@inject
async def enqueue_job(
job_params: JobParams,
session_factory: sessionmaker = Depends(lambda: di["session_factory"]),
component_registry: ComponentRegistry = Depends(lambda: di["component_registry"]),
job_queue: BaseJobQueue = Depends(lambda: di["job_queue"]),
):
...

Internacionalización

La API soporta respuestas multilingües. Los nombres de visualización y descripciones de los componentes se almacenan como objetos MultilingualString, y la API los filtra según el encabezado Accept-Language.

Documentación Interactiva

Al ejecutar DashAI localmente, puedes explorar la API completa de forma interactiva:

  • Swagger UI: http://localhost:8000/docs
  • ReDoc: http://localhost:8000/redoc