Files
fn_registry/python/functions/metabase/metabase_validate_dashboard_payload.md
T
egutierrez 9a28d08e38 feat(metabase): expansion de funciones Python — documents, collections, permissions, validation
Añade un conjunto amplio de funciones al paquete python/functions/metabase:
- Nuevos modulos: collections.py, documents.py, maintenance.py, permissions.py, validation.py (+ test).
- Ampliacion de cards.py, dashboards.py, client.py e __init__.py para exponer las nuevas operaciones.
- Funciones de documentos (create/get/update/delete/archive/copy/move + comentarios), grupos y memberships, permission/collection graphs, copy/move de cards y dashboards, validacion de MBQL/SQL y payloads, actualizacion segura de dashboards y fix_null_ratio.
- .md por funcion con frontmatter para que fn index los registre.
- Actualiza pyproject.toml y uv.lock con las dependencias resultantes.

Impacto: ampliamente mas cobertura de la API de Metabase desde el registry, reutilizable por apps y analisis. No toca Go ni frontend.
2026-04-13 23:31:42 +02:00

2.4 KiB

name, kind, lang, domain, version, purity, signature, description, tags, uses_functions, uses_types, returns, returns_optional, error_type, imports, params, output, tested, tests, test_file_path, file_path
name kind lang domain version purity signature description tags uses_functions uses_types returns returns_optional error_type imports params output tested tests test_file_path file_path
metabase_validate_dashboard_payload function py infra 1.0.0 pure def metabase_validate_dashboard_payload(payload: dict, known_card_ids: set[int]) -> list[str] Valida la estructura de un payload de dashboard de Metabase sin red. Verifica campos obligatorios, bounds de dashcards, referencias a cards conocidas y solapamientos entre dashcards. Acumula todos los issues.
metabase
validation
dashboard
dashcard
overlap
pure
pre-flight
structural
false
name desc
payload dict con los campos del dashboard a validar: name, dashcards (opcional), tabs (opcional), parameters (opcional)
name desc
known_card_ids conjunto de IDs enteros de cards que existen en Metabase; las dashcards con card_id entero deben referenciar un ID de este conjunto. Pasar set vacio si no se quiere verificar referencias.
lista de strings describiendo cada issue encontrado; lista vacia indica payload valido listo para enviarse a PUT /api/dashboard/:id true
dashboard valido sin dashcards
dashboard valido con dashcards
dashboard card id desconocido
dashboard card virtual null permitido
dashboard dashcards solapadas
dashboard dashcards adyacentes no solapan
dashboard col fuera de bounds
dashboard col mas size x excede grid
dashboard size y fuera de bounds
dashboard name ausente
dashboard tabs invalidos
dashboard parameters no list
python/functions/metabase/validation_test.py python/functions/metabase/validation.py

Ejemplo

known_ids = {c["id"] for c in metabase_list_cards(client)}
issues = metabase_validate_dashboard_payload(dashboard_payload, known_card_ids=known_ids)
if issues:
    print("Dashboard invalido:")
    for issue in issues:
        print(f"  - {issue}")
else:
    metabase_update_dashboard(client, dashboard_id, **dashboard_payload)

Notas

Bounds del grid de Metabase:

  • col in [0, 23], row >= 0
  • size_x in [1, 24], size_y in [1, 100]
  • col + size_x <= 24 (no exceder el ancho del grid)

Deteccion de solapamientos: O(n^2) sobre pares de dashcards. Optimo para dashboards tipicos (< 50 cards).

Dashcards con card_id = null son virtuales (texto, headings, iframes) y se permiten sin verificar contra known_card_ids.