Files
fn_registry/python/functions/metabase/metabase_validate_card_payload.md
egutierrez 4300f1242d 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.3 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_card_payload function py infra 1.0.0 pure def metabase_validate_card_payload(payload: dict) -> list[str] Valida la estructura de un payload de card de Metabase sin necesidad de red. Recorre todos los checks y acumula todos los issues en vez de abortar al primero. Retorna lista vacia si el payload es valido.
metabase
validation
card
pure
pre-flight
structural
false
name desc
payload dict con los campos de la card a validar: name, display, dataset_query, type (opcional), visualization_settings (opcional), parameters (opcional), archived (opcional)
lista de strings describiendo cada issue estructural encontrado; lista vacia indica payload valido listo para enviarse a POST/PUT /api/card true
card valido retorna lista vacia
card display invalido
card display ausente
card name ausente
card name vacio
card dataset query ausente
card dataset query sin database
card nativa sin sql
card nativa mbql5
card type invalido
card type valido
card visualization settings no dict
card parameters no list
card archived no bool
card acumula multiples errores
python/functions/metabase/validation_test.py python/functions/metabase/validation.py

Ejemplo

issues = metabase_validate_card_payload({
    "name": "Revenue by Month",
    "display": "line",
    "dataset_query": {
        "database": 1,
        "type": "native",
        "native": {"query": "SELECT date_trunc('month', created_at), SUM(total) FROM orders GROUP BY 1"},
    },
})
if issues:
    print("Payload invalido:", issues)
else:
    metabase_update_card(client, card_id, **payload)

Notas

Displays validos: scalar, table, line, bar, pie, area, row, funnel, smartscalar, gauge, progress, combo, pivot, map, scatter, waterfall, sankey, object.

Tipos validos (campo type): question, model, metric.

Soporta dos formatos de SQL nativo:

  • Legacy: dataset_query.native.query
  • MBQL5: dataset_query.stages[0].native

No aborta al primer error — recolecta todos los issues para que el caller pueda mostrarlos todos de una vez.