Saltar al contenido principal

API REST del core

nota

Página generada automáticamente. No la edites a mano: corrige la fuente y vuelve a generar. Verificado contra nopal@d6d86a5 (2026-10-17).

Inventario de las rutas de NOPAL obtenido por análisis estático del código (decoradores @router.* y dependencias de acceso). No se ejecuta NOPAL. El acceso mostrado es el declarado en la ruta; una comprobación de rol dentro del cuerpo de una función no se detecta.

Cómo leer el acceso​

ValorSignificado
PúblicaSin sesión. Solo login, primer arranque y la página principal.
Sesión (admin u operador)Requiere sesión iniciada; el rol se relee del registro de usuarios en cada petición.
Solo adminRequiere el rol admin. El rol de operador se guarda internamente como operador.
PolíticaRutas ya migradas a la Authorization Policy (ADR-006): consultan la acción indicada antes de ejecutar. El resto usa solo el rol.

Resumen​

AccesoRutas
Pública5
Sesión (admin u operador)150
Solo admin53
Total208

NOPAL Intelligence (IA)​

backend/api/ai.py · 25 rutas

MétodoRutaAccesoPolíticaDescripción
GET/api/ai/actionsSesión (admin u operador)—Acciones que ESTE usuario puede ejecutar por medio de la IA.
POST/api/ai/actions/{token}/cancelSesión (admin u operador)——
POST/api/ai/actions/{token}/confirmSesión (admin u operador)—Ejecuta una acción de riesgo que quedó esperando confirmación.
POST/api/ai/askSesión (admin u operador)—Pregunta en lenguaje natural sobre el taller.
GET/api/ai/configSolo admin—Configuración vigente, sin la API key (solo si está puesta o no).
PUT/api/ai/configSolo admin——
GET/api/ai/conversationsSesión (admin u operador)—Listado sin los mensajes: una conversación larga no tiene por qué viajar entera solo para pintar la barra lateral.
DELETE/api/ai/conversationsSesión (admin u operador)CLEAR_ALL_CONVERSATIONSBorrar el historial completo (C-4): operación de almacenamiento solo para admin. Afecta lo que vieron todos los usuarios, pero no da acceso…
GET/api/ai/conversations/{conversation_id}Sesión (admin u operador)——
PUT/api/ai/conversations/{conversation_id}Sesión (admin u operador)——
DELETE/api/ai/conversations/{conversation_id}Sesión (admin u operador)——
POST/api/ai/enabledSolo admin—Enciende o apaga la capa sin tocar el registro de IAs guardadas.
GET/api/ai/presetsSolo admin—Proveedores conocidos para poblar el selector de la interfaz.
GET/api/ai/providersSolo admin—Las IAs guardadas, sin sus claves. Marca cuál está activa.
POST/api/ai/providersSolo admin—Agrega una IA al registro. La primera que se agrega queda activa.
PUT/api/ai/providers/{provider_id}Solo admin——
DELETE/api/ai/providers/{provider_id}Solo admin—Borrar la IA activa pasa la activación a la primera que quede; si no queda ninguna, la capa se apaga sola en vez de apuntar a la nada.
POST/api/ai/providers/{provider_id}/activateSolo admin——
GET/api/ai/statusSesión (admin u operador)—Estado resumido para pintar el indicador de la UI. No contacta al servidor de IA (eso es /test, que sí cuesta una petición de red).
GET/api/ai/suggestionsSesión (admin u operador)—Preguntas rápidas del asistente. Lista vacía = usar las de fábrica, que el frontend traduce; las guardadas van tal cual.
PUT/api/ai/suggestionsSolo admin——
POST/api/ai/testSolo admin—Prueba la conexión contra el servidor de IA.
GET/api/ai/tiersSolo admin—Niveles del modo automático y cómo se encadenan si uno falla. La UI los pinta; los nombres de modelo salen de la configuración, no de acá.
GET/api/ai/toolsSesión (admin u operador)—Catálogo de herramientas de solo lectura que se le ofrecen al modelo.
POST/api/ai/tools/{tool_name}Sesión (admin u operador)—Ejecuta una herramienta directamente, sin pasar por el modelo.

Autenticación y usuarios​

backend/api/auth.py · 9 rutas

MétodoRutaAccesoPolíticaDescripción
POST/api/auth/loginPública——
POST/api/auth/logoutPública——
GET/api/auth/meSesión (admin u operador)——
POST/api/auth/setupPública—Crea la cuenta admin inicial y arranca la sesión de una — solo funciona una vez, mientras auth_users.json esté vacío.
GET/api/auth/setup-requiredPública—Público a propósito (todavía no puede existir ninguna sesión antes de que exista el primer usuario) — el frontend lo consulta antes de deci…
GET/api/auth/usersSolo admin——
POST/api/auth/usersSolo admin——
POST/api/auth/users/removeSolo admin——
POST/api/auth/users/updateSolo admin—Cambia el rol y/o resetea la contraseña de un usuario existente — usado desde Configuración > Usuarios.

Impresoras Bambu Lab​

backend/api/bambu_printers.py · 9 rutas

MétodoRutaAccesoPolíticaDescripción
GET/api/bambu/printersSesión (admin u operador)—Impresoras Bambu Lab registradas en NOPAL, con su status actual (leído del caché que mantiene el hilo MQTT persistente de cada una).
POST/api/bambu/printersSolo admin—Registra una impresora Bambu Lab -- valida el access code contra la impresora real (handshake MQTT) antes de guardar.
DELETE/api/bambu/printers/{printer_id}Solo admin——
POST/api/bambu/printers/{printer_id}/cancelSesión (admin u operador)——
POST/api/bambu/printers/{printer_id}/pauseSesión (admin u operador)——
POST/api/bambu/printers/{printer_id}/resumeSesión (admin u operador)——
POST/api/bambu/printers/{printer_id}/sendSesión (admin u operador)—Sube un archivo .3mf de la biblioteca de NOPAL a la impresora y arranca la impresión.
POST/api/bambu/printers/{printer_id}/test-connectionSesión (admin u operador)—Diagnóstico bajo demanda de una impresora ya registrada -- de solo lectura, no requiere admin.
POST/api/bambu/printers/discoverSolo admin—Escucha anuncios SSDP de impresoras Bambu Lab en modo LAN (pasivo, sin probe activo -- ver bambu_service.py).

Respaldos de configuración​

backend/api/config_backup.py · 4 rutas

MétodoRutaAccesoPolíticaDescripción
POST/api/config-backup/exportSolo admin——
GET/api/config-backup/groupsSolo admin—Qué se puede respaldar, y cuáles existen en esta instalación.
POST/api/config-backup/importSolo admin——
POST/api/config-backup/inspectSolo admin—Qué trae el respaldo, sin escribir nada. La persona tiene derecho a ver qué va a sobrescribir antes de aceptarlo.

Consola y macros​

backend/api/console.py · 4 rutas

MétodoRutaAccesoPolíticaDescripción
POST/api/console/commandSesión (admin u operador)SEND_CONSOLE_COMMANDEnvía un comando de consola/G-code a la impresora indicada.
GET/api/console/messagesSesión (admin u operador)—Últimos mensajes de la consola G-code de la impresora indicada.
GET/api/macrosSesión (admin u operador)—Lista de macros configurados en la impresora indicada.
POST/api/macros/runSesión (admin u operador)RUN_MACROEjecuta un macro por nombre en la impresora indicada.

Panel de control​

backend/api/dashboard.py · 1 rutas

MétodoRutaAccesoPolíticaDescripción
GET/api/dashboard/summarySesión (admin u operador)—Resumen agregado para el panel de control: salud del sistema, host, conteo de dispositivos, trabajos activos y alertas — compone datos que…

Dispositivos​

backend/api/devices.py · 1 rutas

MétodoRutaAccesoPolíticaDescripción
GET/api/devices/registrySesión (admin u operador)—Snapshot normalizado de TODAS las marcas (Klipper/Marlin/Bambu/Elegoo/ FlashForge/Láser-CNC), para la tarjeta "Todos los dispositivos" de C…

Impresoras Elegoo​

backend/api/elegoo_printers.py · 9 rutas

MétodoRutaAccesoPolíticaDescripción
GET/api/elegoo/printersSesión (admin u operador)—Impresoras Elegoo registradas en NOPAL, con su último status conocido (SDCP empuja los cambios solo, no hace falta encuestar acá).
POST/api/elegoo/printersSolo admin—Registra una impresora Elegoo -- valida que responda por SDCP real antes de guardar (ver elegoo_service._verify_connection).
DELETE/api/elegoo/printers/{printer_id}Solo admin——
POST/api/elegoo/printers/{printer_id}/cancelSesión (admin u operador)——
POST/api/elegoo/printers/{printer_id}/pauseSesión (admin u operador)——
POST/api/elegoo/printers/{printer_id}/resumeSesión (admin u operador)——
POST/api/elegoo/printers/{printer_id}/sendSesión (admin u operador)—Sube un archivo de la biblioteca de NOPAL a la impresora y arranca la impresión.
POST/api/elegoo/printers/{printer_id}/test-connectionSesión (admin u operador)—Diagnóstico bajo demanda de una impresora ya registrada -- de solo lectura, no requiere admin.
POST/api/elegoo/printers/discoverSolo admin—Escanea la red local en busca de impresoras Elegoo (broadcast UDP).

Impresoras FlashForge​

backend/api/flashforge_printers.py · 9 rutas

MétodoRutaAccesoPolíticaDescripción
GET/api/flashforge/printersSesión (admin u operador)—Impresoras FlashForge registradas en NOPAL, con su status actual (acá sí se hace un /detail real por impresora, a diferencia de Elegoo).
POST/api/flashforge/printersSolo admin—Registra una impresora FlashForge -- valida serialNumber/checkCode contra la impresora real antes de guardar (a diferencia de Elegoo, acá s…
DELETE/api/flashforge/printers/{printer_id}Solo admin——
POST/api/flashforge/printers/{printer_id}/cancelSesión (admin u operador)——
POST/api/flashforge/printers/{printer_id}/pauseSesión (admin u operador)——
POST/api/flashforge/printers/{printer_id}/resumeSesión (admin u operador)——
POST/api/flashforge/printers/{printer_id}/sendSesión (admin u operador)—Sube un archivo de la biblioteca de NOPAL a la impresora y arranca la impresión.
POST/api/flashforge/printers/{printer_id}/test-connectionSesión (admin u operador)—Diagnóstico bajo demanda de una impresora ya registrada -- de solo lectura, no requiere admin.
POST/api/flashforge/printers/discoverSolo admin—Escanea la red local en busca de impresoras FlashForge modernas (5M/5M Pro/AD5X/Creator 5).

jobs.py​

backend/api/jobs.py · 5 rutas

MétodoRutaAccesoPolíticaDescripción
GET/api/jobs/deletionsSolo admin—Registro de control: los trabajos dados de baja, con quién, cuándo y por qué.
GET/api/jobs/historySesión (admin u operador)——
POST/api/jobs/history/deleteSolo admin——
GET/api/jobs/history/exportSesión (admin u operador)—Resumen de la lista que se está viendo (mismos filtros), en XML o PDF.
POST/api/jobs/reprint-klipperSesión (admin u operador)—Vuelve a imprimir, en la misma impresora Klipper, un archivo que ya está en su carpeta de G-code.

Láser y CNC (GRBL)​

backend/api/laser.py · 46 rutas

MétodoRutaAccesoPolíticaDescripción
POST/api/laser/commandSesión (admin u operador)actionEnvía un comando GRBL suelto (jog, $H, $X, etc.).
GET/api/laser/consoleSesión (admin u operador)—Últimos mensajes transmitidos por el láser (consola en vivo).
POST/api/laser/consoleSesión (admin u operador)SEND_CONSOLE_COMMANDEnvía un comando desde la consola del láser.
GET/api/laser/historySesión (admin u operador)—Historial de trabajos láser (completados, cancelados o con error), más recientes primero.
POST/api/laser/history/snapshotSesión (admin u operador)—Adjunta la captura del grill (figura trazada) al trabajo más reciente de ese host.
POST/api/laser/homeSesión (admin u operador)—Inicia el ciclo de home ($H en GRBL, G28 en Marlin).
GET/api/laser/infoSesión (admin u operador)—Información estática de la placa controladora (chip, firmware, red).
POST/api/laser/job/cancelSesión (admin u operador)——
POST/api/laser/job/frameSesión (admin u operador)—Recorre el rectángulo que ocupa un trabajo, sin cortarlo.
GET/api/laser/job/lastSesión (admin u operador)—Último trabajo terminado (error/cancelado/completado) de esa placa, o {"job": null}. Lo usa la tarjeta TRABAJO de CNC para avisar cómo acab…
POST/api/laser/job/pauseSesión (admin u operador)——
POST/api/laser/job/resumeSesión (admin u operador)——
POST/api/laser/job/startSesión (admin u operador)—Inicia el envío de un archivo G-code (de la biblioteca) al láser.
POST/api/laser/job/start-sdSesión (admin u operador)—Corre un archivo de la biblioteca DESDE la SD de la placa: lo sube y lo arranca ahí. Es más firme que el envío línea por línea por WiFi (el…
GET/api/laser/job/statusSesión (admin u operador)——
POST/api/laser/job/z-offsetSesión (admin u operador)—Ajuste de Z en vivo (plotter): suma delta mm a la Z de lápiz abajo para los trazos que faltan.
GET/api/laser/jobs/activeSesión (admin u operador)—Todos los hosts con un trabajo propio en curso ahora mismo — para que el frontend no pierda de vista un corte activo aunque el usuario esté…
POST/api/laser/jogSesión (admin u operador)—Mueve un eje en relativo. La secuencia real (jog GRBL vs. G91/G1/G90 de Marlin) se arma en el backend según el firmware registrado para ese…
GET/api/laser/parser-stateSesión (admin u operador)—Sistema de coordenadas activo (G54/G55/...) vía '$G'.
GET/api/laser/profilesSesión (admin u operador)—Catálogo de perfiles de láser/CNC conocidos (ver printer_profiles.py) -- para poblar el selector de modelo del alta, mismo criterio que /ap…
GET/api/laser/queueSesión (admin u operador)—Trabajos en espera para enviarse al láser.
POST/api/laser/queue/addSesión (admin u operador)—Agrega un archivo G-code de la biblioteca a la cola del láser o del CNC (kind decide en qué ficha aparece — ver add_to_queue).
POST/api/laser/queue/removeSesión (admin u operador)—Quita un trabajo de la cola sin enviarlo.
POST/api/laser/queue/startSesión (admin u operador)—Saca un trabajo de la cola y lo transmite línea por línea al láser.
GET/api/laser/registrySesión (admin u operador)—Placas láser registradas en NOPAL (red y USB).
POST/api/laser/registrySolo admin—Registra una placa (red o USB) como láser o CNC disponible en NOPAL.
POST/api/laser/registry/removeSolo admin—Quita una placa registrada.
GET/api/laser/registry/statusSesión (admin u operador)—Igual que /api/laser/registry pero con un campo "online" agregado por placa (USB: existe el puerto ahora; red: probe puntual a ese host) —…
GET/api/laser/scanSolo admin—Escanea la red local en busca de otras placas láser (ESP3D) disponibles.
GET/api/laser/scan-ipSolo admin—Prueba una IP puntual en vez de barrer toda la subred — para placas fuera del rango detectado automáticamente (otra subred, modo Punto de A…
GET/api/laser/sd/availableSesión (admin u operador)—Indica si la placa activa tiene una tarjeta SD navegable.
POST/api/laser/sd/deleteSesión (admin u operador)—Elimina un archivo o carpeta de la tarjeta SD.
GET/api/laser/sd/filesSesión (admin u operador)—Lista archivos/carpetas de la tarjeta SD insertada en la placa (ESP3D).
POST/api/laser/sd/folderSesión (admin u operador)—Crea una carpeta en la tarjeta SD.
POST/api/laser/sd/formatSolo admin—Formatea la tarjeta SD -- borra TODO su contenido, sin vuelta atrás. Admin-only server-side (no solo oculto en el frontend). Ver el comenta…
POST/api/laser/sd/runSesión (admin u operador)—Corre directamente un archivo que ya está en la SD, sin volver a subirlo.
GET/api/laser/sd/statusSesión (admin u operador)—¿La placa tiene una tarjeta SD lista? (la pantalla ofrece correr desde la SD si la hay).
POST/api/laser/sd/uploadSesión (admin u operador)—Sube un archivo (desde tu computadora) directo a la tarjeta SD de la placa. No espera a que termine: el tramo lento de verdad es NOPAL->pla…
POST/api/laser/sd/upload-from-librarySesión (admin u operador)—Envía un archivo ya subido a la biblioteca de G-code de NOPAL directo a la SD de la placa -- mismo criterio de segundo plano + upload_id qu…
GET/api/laser/sd/upload-progress/{upload_id}Sesión (admin u operador)—Estado real de una subida en curso (ver sd_upload_file_tracked). Cuando status ya es "done"/"error" el frontend deja de sondear y llama a e…
POST/api/laser/sd/upload-progress/{upload_id}/clearSesión (admin u operador)——
GET/api/laser/settingsSesión (admin u operador)—Parámetros $$ actuales de la placa GRBL.
POST/api/laser/settingsSesión (admin u operador)GRBL_SETTINGSActualiza un parámetro $$ individual.
GET/api/laser/statusSesión (admin u operador)—Estado en vivo del láser (posición, estado GRBL) vía websocket.
GET/api/laser/usb-portsSesión (admin u operador)—Puertos serie USB conectados que coinciden con chips de controladoras láser.
POST/api/laser/usb-ports/testSolo admin—Prueba si el puerto USB indicado responde al protocolo GRBL (envía '?').

Configuración de registros​

backend/api/logging_config.py · 2 rutas

MétodoRutaAccesoPolíticaDescripción
GET/api/logs/configSesión (admin u operador)——
PUT/api/logs/configSesión (admin u operador)SYSTEM_CONTROL—

Registros (visor)​

backend/api/logs.py · 1 rutas

MétodoRutaAccesoPolíticaDescripción
GET/api/logsSesión (admin u operador)——

Aplicación (raíz)​

backend/main.py · 3 rutas

MétodoRutaAccesoPolíticaDescripción
GET/Pública——
GET/uploads/{filename:path}Sesión (admin u operador)—Sirve archivos de la biblioteca solo a usuarios autenticados.
GET/view/{filename:path}Sesión (admin u operador)——

Impresoras Marlin​

backend/api/marlin_printers.py · 26 rutas

MétodoRutaAccesoPolíticaDescripción
GET/api/marlin-printers/consoleSesión (admin u operador)——
POST/api/marlin-printers/consoleSesión (admin u operador)SEND_CONSOLE_COMMAND—
GET/api/marlin-printers/discoverSolo admin—Puertos USB conectados que podrían ser una impresora Marlin (aún no registrados).
POST/api/marlin-printers/homeSesión (admin u operador)HOME—
GET/api/marlin-printers/jobs/activeSesión (admin u operador)——
POST/api/marlin-printers/jogSesión (admin u operador)MOVE—
GET/api/marlin-printers/mks-wifi/discoverSolo admin—Descubre módulos oficiales MKS WiFi mediante broadcast UDP 8989.
POST/api/marlin-printers/mks-wifi/testSolo admin——
POST/api/marlin-printers/print/cancelSesión (admin u operador)CANCEL—
POST/api/marlin-printers/print/pauseSesión (admin u operador)PAUSE—
POST/api/marlin-printers/print/resumeSesión (admin u operador)RESUME—
POST/api/marlin-printers/print/startSesión (admin u operador)START_JOBInicia el envío de un archivo G-code (de la biblioteca) a la impresora.
GET/api/marlin-printers/print/statusSesión (admin u operador)VIEW_STATUS—
GET/api/marlin-printers/profilesSesión (admin u operador)—Catálogo de perfiles de impresora conocidos (ver printer_profiles.py) -- para poblar el selector de modelo del alta. Vacío para una placa M…
GET/api/marlin-printers/registrySesión (admin u operador)——
POST/api/marlin-printers/registrySolo admin—Registra una impresora Marlin por USB o por el puente TCP de MKS WiFi. El handshake es obligatorio server-side (no solo confiar en que el f…
POST/api/marlin-printers/registry/removeSolo admin——
GET/api/marlin-printers/registry/statusSesión (admin u operador)——
GET/api/marlin-printers/sd/availableSesión (admin u operador)—M21 -- si la placa reporta una tarjeta SD insertada. Usado por el modal "Enviar a impresora" para decidir si ofrece la opción de SD.
GET/api/marlin-printers/sd/filesSesión (admin u operador)—Lista G-code directamente desde la SD de la impresora (M20).
POST/api/marlin-printers/sd/print/startSesión (admin u operador)START_JOBArranca el archivo dentro de la SD con M23/M24, sin copia local.
POST/api/marlin-printers/sd/upload-and-printSesión (admin u operador)START_JOBSube un archivo de la biblioteca a la SD de la impresora (M28/M29) y arranca la impresión (M23/M24) -- opcionalmente precalentando primero…
GET/api/marlin-printers/statusSesión (admin u operador)VIEW_STATUS—
POST/api/marlin-printers/temperature-targetSesión (admin u operador)SET_TEMPERATURE—
GET/api/marlin-printers/temperaturesSesión (admin u operador)VIEW_STATUS—
POST/api/marlin-printers/usb-ports/testSolo admin—Prueba si el puerto USB indicado responde al protocolo Marlin. Si no se manda baud, autodetecta probando 115200 y 250000 en orden (ver pr…

Biblioteca de modelos y G-code​

backend/api/models.py · 10 rutas

MétodoRutaAccesoPolíticaDescripción
GET/api/browseSesión (admin u operador)—Contenido (carpetas + archivos) de una carpeta dentro de la sección indicada.
PATCH/api/filesSesión (admin u operador)—Renombra un archivo existente (conserva la extensión).
DELETE/api/filesSesión (admin u operador)—Elimina un archivo de la sección indicada.
POST/api/files/moveSesión (admin u operador)—Mueve un archivo a otra carpeta dentro de la misma sección.
POST/api/foldersSesión (admin u operador)—Crea una subcarpeta dentro de la sección indicada.
PATCH/api/foldersSesión (admin u operador)—Renombra una subcarpeta existente.
DELETE/api/foldersSesión (admin u operador)—Elimina una subcarpeta (y su contenido) de la sección indicada.
GET/api/gcode/thumbnailSesión (admin u operador)—Miniatura 2D generada por NOPAL a partir de la trayectoria real del G-code (para la galería de archivos CNC/láser) — a diferencia de /api/m…
GET/api/modelsSesión (admin u operador)—Listado plano y recursivo de todos los archivos (usado por estadísticas).
GET/api/models/thumbnailSesión (admin u operador)—Miniatura PNG incrustada por el slicer en el propio G-code (thumbnail begin/end). 404 si el archivo no trae ninguna incrustada.

Notificaciones​

backend/api/notifications.py · 1 rutas

MétodoRutaAccesoPolíticaDescripción
GET/api/notificationsSesión (admin u operador)—Cuenta de problemas activos ahora mismo (impresoras/láser/CNC/ accesorios desconectados, trabajos con error, actualización disponible) — no…

plotter.py​

backend/api/plotter.py · 2 rutas

MétodoRutaAccesoPolíticaDescripción
POST/api/plotter/generateSesión (admin u operador)—Genera el G-code de plotter y lo guarda en la raíz de la Biblioteca (G-code).
POST/api/plotter/previewSesión (admin u operador)—Trazos en mm (origen abajo a la izquierda) para dibujar la vista previa, sus números y los avisos de la imagen (notes).

Galería de plugins​

backend/api/plugins.py · 4 rutas

MétodoRutaAccesoPolíticaDescripción
GET/api/pluginsSesión (admin u operador)——
DELETE/api/plugins/{plugin_id}Solo admin——
POST/api/plugins/{plugin_id}/installSolo admin——
POST/api/plugins/{plugin_id}/updateSolo admin——

Impresoras Klipper / Moonraker​

backend/api/printers.py · 20 rutas

MétodoRutaAccesoPolíticaDescripción
GET/api/printersSesión (admin u operador)—Obtener lista de impresoras detectadas
POST/api/printers/{port}/cancelSesión (admin u operador)——
GET/api/printers/{port}/config-filesSesión (admin u operador)——
GET/api/printers/{port}/config-files/contentSesión (admin u operador)——
POST/api/printers/{port}/config-files/contentSesión (admin u operador)PRINTER_CONFIG—
POST/api/printers/{port}/firmware-restartSesión (admin u operador)FIRMWARE_RESTARTReinicia el firmware del MCU (equivalente a FIRMWARE_RESTART).
POST/api/printers/{port}/pauseSesión (admin u operador)——
GET/api/printers/{port}/queueSesión (admin u operador)——
DELETE/api/printers/{port}/queue/{job_id}Sesión (admin u operador)——
POST/api/printers/{port}/queue/startSesión (admin u operador)——
POST/api/printers/{port}/restartSesión (admin u operador)RESTART_KLIPPERReinicia el proceso de Klipper (equivalente a RESTART).
POST/api/printers/{port}/resumeSesión (admin u operador)——
POST/api/printers/{port}/sendSesión (admin u operador)—Sube un archivo de la biblioteca de NOPAL al firmware y lo imprime de inmediato o lo agrega a la cola nativa de Moonraker.
GET/api/printers/{printer_name}/statusSesión (admin u operador)—Obtener estado de una impresora específica
GET/api/printers/queue/countSesión (admin u operador)—Total de trabajos esperando turno entre todas las impresoras — para el badge del sidebar.
GET/api/printers/recent-filesSesión (admin u operador)—Últimos 3 archivos impresos en cada impresora detectada
GET/api/printers/scheduleSesión (admin u operador)——
POST/api/printers/scheduleSesión (admin u operador)——
DELETE/api/printers/schedule/{schedule_id}Sesión (admin u operador)——
GET/api/printers/statusSesión (admin u operador)—Obtener estado de todas las impresoras

Estado y preajustes​

backend/api/status.py · 11 rutas

MétodoRutaAccesoPolíticaDescripción
GET/api/statusSesión (admin u operador)——
GET/api/storageSesión (admin u operador)—Get disk storage information
GET/api/system/diagnosticsSesión (admin u operador)—Info de "Acerca de NOPAL": versión, commit/rama de git (si el checkout es un repo git; si no, "unavailable" -- NOPAL puede correr desde un…
GET/api/system/statsSesión (admin u operador)—Estadísticas de hardware (MCU + host) de la impresora indicada.
GET/api/system/temperature-presetsSesión (admin u operador)—Perfiles de precalentamiento por material para Klipper y Marlin.
POST/api/system/temperature-presetsSolo admin—Guarda perfiles: {active, materials:[{id,name,heater_bed,extruder}]}
POST/api/system/temperature-targetSesión (admin u operador)SET_TEMPERATUREActualiza la temperatura objetivo de un heater (extruder, heater_bed, etc.).
GET/api/system/temperaturesSesión (admin u operador)—Temperaturas actuales/objetivo e historial de la impresora indicada.
GET/api/system/toolheadSesión (admin u operador)—Posición actual del cabezal, ejes homeados, factor de velocidad y offset Z.
POST/api/system/updateSolo admin—Aplica git pull --ff-only para traer la última versión del repositorio.
GET/api/system/versionSesión (admin u operador)—Versión actual (commit de git) y si hay una actualización disponible en el remoto.

Sistema​

backend/api/system.py · 5 rutas

MétodoRutaAccesoPolíticaDescripción
POST/api/system/host/rebootSolo admin——
POST/api/system/host/shutdownSolo admin——
POST/api/system/nopal/restartSolo admin—Reinicia el propio panel NOPAL (no el host ni Klipper). No afecta impresiones ni conexiones de Klipper/Moonraker -- solo el panel queda ina…
GET/api/system/servicesSolo admin—Servicios systemd de Klipper/Moonraker/Crowsnest detectados en el host.
POST/api/system/services/{action}Solo admin——

Subida de archivos​

backend/api/upload.py · 1 rutas

MétodoRutaAccesoPolíticaDescripción
POST/api/uploadSesión (admin u operador)——