# 🔌 REPORTE DE ENDPOINTS API DE METABASE **Fecha:** 2025-10-14 **Instancia:** metabase.nucleoriofrio.com **Autenticación:** X-API-KEY header **Formato:** JSON --- ## 📋 ENDPOINTS PRINCIPALES ### 🎯 **CARDS (Questions/Queries)** Estos son los endpoints MÁS IMPORTANTES para nuestro caso, ya que trabajaremos con las 9 queries documentadas. | Método | Endpoint | Descripción | |--------|----------|-------------| | `GET` | `/api/card` | Listar todas las cards/preguntas | | `GET` | `/api/card/:id` | Obtener detalles de una card específica | | `POST` | `/api/card` | Crear una nueva card | | `PUT` | `/api/card/:id` | Actualizar una card existente | | `DELETE` | `/api/card/:id` | Eliminar una card | | `POST` | `/api/card/:id/query` | **⭐ EJECUTAR una query y obtener resultados** | | `GET` | `/api/card/:id/query` | Ejecutar query con caché | | `GET` | `/api/card/:id/query/:export-format` | Exportar resultados (csv, json, xlsx) | **💡 Endpoint clave:** `/api/card/:id/query` - Este lo usaremos para ejecutar las 9 queries con parámetros. --- ### 🗄️ **DATABASE** | Método | Endpoint | Descripción | |--------|----------|-------------| | `GET` | `/api/database` | Listar todas las bases de datos | | `GET` | `/api/database/:id` | Obtener detalles de una BD | | `POST` | `/api/database` | Crear conexión a BD | | `PUT` | `/api/database/:id` | Actualizar conexión | | `POST` | `/api/database/:id/sync_schema` | Sincronizar esquema | | `GET` | `/api/database/:id/metadata` | Obtener metadata de tablas/campos | | `POST` | `/api/database/validate` | Validar conexión antes de guardar | --- ### 📊 **DATASET (Queries Ad-hoc)** Endpoints para ejecutar queries SQL nativas sin crear cards. | Método | Endpoint | Descripción | |--------|----------|-------------| | `POST` | `/api/dataset` | **⭐ Ejecutar query SQL nativa directamente** | | `POST` | `/api/dataset/:export-format` | Ejecutar y exportar (csv, json, xlsx) | **💡 Uso importante:** Podemos usar `/api/dataset` para probar queries SQL antes de crearlas como cards. **Ejemplo de payload:** ```json { "database": 2, "type": "native", "native": { "query": "SELECT * FROM vista_detalle_ingresos LIMIT 10", "template-tags": {} } } ``` --- ### 📁 **COLLECTION** | Método | Endpoint | Descripción | |--------|----------|-------------| | `GET` | `/api/collection` | Listar colecciones | | `GET` | `/api/collection/:id` | Detalles de colección | | `GET` | `/api/collection/:id/items` | Items dentro de colección | | `POST` | `/api/collection` | Crear colección | | `PUT` | `/api/collection/:id` | Actualizar colección | --- ### 📈 **DASHBOARD** | Método | Endpoint | Descripción | |--------|----------|-------------| | `GET` | `/api/dashboard` | Listar dashboards | | `GET` | `/api/dashboard/:id` | Detalles de dashboard | | `POST` | `/api/dashboard` | Crear dashboard | | `PUT` | `/api/dashboard/:id` | Actualizar dashboard | | `POST` | `/api/dashboard/:id/cards` | Agregar card a dashboard | | `GET` | `/api/dashboard/:id/params/:param-key/values` | Valores para parámetro | --- ### 🔍 **TABLE & FIELD** | Método | Endpoint | Descripción | |--------|----------|-------------| | `GET` | `/api/table/:id` | Detalles de tabla | | `GET` | `/api/table/:id/query_metadata` | Metadata completa de tabla | | `GET` | `/api/field/:id` | Detalles de campo | | `POST` | `/api/field/:id/values` | Valores únicos de un campo | --- ### 👤 **USER & SESSION** | Método | Endpoint | Descripción | |--------|----------|-------------| | `GET` | `/api/user/current` | Usuario autenticado actual | | `GET` | `/api/user` | Listar usuarios | | `POST` | `/api/session` | Login (crear sesión) | | `DELETE` | `/api/session` | Logout | --- ### ⚙️ **SETTINGS** | Método | Endpoint | Descripción | |--------|----------|-------------| | `GET` | `/api/setting` | Obtener configuraciones | | `PUT` | `/api/setting/:key` | Actualizar configuración | --- ### 🔐 **PERMISSIONS** | Método | Endpoint | Descripción | |--------|----------|-------------| | `GET` | `/api/permissions/graph` | Ver árbol de permisos | | `PUT` | `/api/permissions/graph` | Actualizar permisos | | `GET` | `/api/permissions/group` | Listar grupos | --- ### 📤 **UPLOAD** (Anteriormente CSV) | Método | Endpoint | Descripción | |--------|----------|-------------| | `POST` | `/api/upload/csv` | Subir CSV como tabla | --- ### 📧 **NOTIFICATION** (Reemplaza Pulse/Alert) | Método | Endpoint | Descripción | |--------|----------|-------------| | `GET` | `/api/notification` | Listar notificaciones | | `POST` | `/api/notification` | Crear notificación | | `PUT` | `/api/notification/:id` | Actualizar notificación | --- ### 🔧 **UTIL & ANALYTICS** | Método | Endpoint | Descripción | |--------|----------|-------------| | `GET` | `/api/analytics/anonymous-stats` | Estadísticas de uso (antes /util/stats) | | `GET` | `/api/util/logs` | Logs del sistema | | `POST` | `/api/util/password_check` | Validar contraseña | --- ## 🎯 ENDPOINTS CRÍTICOS PARA NUESTRO PROYECTO ### 1. **Ejecutar queries con parámetros** ```http POST /api/card/:id/query Content-Type: application/json X-API-KEY: mb_bRFd1DTqU1eK1GeYFo3z0WhwKcqdA5qHNCXko3ZV6FU= { "parameters": [ {"type": "date/single", "target": ["variable", ["template-tag", "fecha_desde"]], "value": "2025-01-01"}, {"type": "date/single", "target": ["variable", ["template-tag", "fecha_hasta"]], "value": "2025-12-31"}, {"type": "category", "target": ["variable", ["template-tag", "incluir_anulados"]], "value": false} ] } ``` ### 2. **Ejecutar SQL nativa directamente** ```http POST /api/dataset Content-Type: application/json X-API-KEY: mb_bRFd1DTqU1eK1GeYFo3z0WhwKcqdA5qHNCXko3ZV6FU= { "database": 2, "type": "native", "native": { "query": "SELECT COALESCE(SUM(...), 0) as total FROM vista_detalle_ingresos WHERE ...", "template-tags": { "incluir_anulados": { "type": "boolean", "default": false } } } } ``` ### 3. **Listar todas las cards para encontrar IDs** ```http GET /api/card?f=all X-API-KEY: mb_bRFd1DTqU1eK1GeYFo3z0WhwKcqdA5qHNCXko3ZV6FU= ``` ### 4. **Obtener metadata de una card** ```http GET /api/card/:id X-API-KEY: mb_bRFd1DTqU1eK1GeYFo3z0WhwKcqdA5qHNCXko3ZV6FU= ``` --- ## 📝 NOTAS IMPORTANTES 1. **Autenticación:** Todos los requests requieren header `X-API-KEY: mb_bRFd1DTqU1eK1GeYFo3z0WhwKcqdA5qHNCXko3ZV6FU=` 2. **Estructura de respuesta de queries:** ```json { "data": { "rows": [...], // Array de arrays con los valores "cols": [...], // Metadata de columnas (nombre, tipo, etc) "rows_truncated": 1000, // Límite de filas "native_form": {...} // Query SQL ejecutada }, "database_id": 2, "started_at": "...", "json_query": {...}, "average_execution_time": null, "status": "completed", "context": "ad-hoc", "row_count": 1, "running_time": 45 } ``` 3. **IDs de las 9 queries del Panorama:** - Query 1: `/api/card/38/query` (panorama_totales_financieros_principales) - Query 2-9: Por determinar 4. **Parámetros template-tags:** - `fecha_desde`: tipo `date/single`, opcional - `fecha_hasta`: tipo `date/single`, opcional - `incluir_anulados`: tipo `boolean`, default `false` 5. **Testing de queries:** - Usar `/api/dataset` para probar SQL antes de crear/editar cards - Usar `/api/card/:id/query` para probar cards existentes con diferentes parámetros --- ## 🚀 PRÓXIMOS PASOS 1. ✅ Listar todas las cards con `GET /api/card?f=all` para identificar las 9 queries 2. ✅ Para cada query (1-9): - Obtener metadata con `GET /api/card/:id` - Ejecutar con parámetros default usando `POST /api/card/:id/query` - Verificar estructura de respuesta - Validar que coincida con la especificación en `METABASE_QUERIES_PANORAMA.md` 3. ✅ Ajustar queries que no devuelvan la estructura correcta --- **Documento creado:** 2025-10-14 **Autor:** Claude Code **Proyecto:** Analítica Núcleo - Exploración API Metabase