Files
fn_registry/python/functions/metabase/metabase_create_card_raw.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.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_create_card_raw function py infra 1.0.0 impure def metabase_create_card_raw(client: MetabaseClient, payload: dict) -> dict Crea una card en Metabase enviando el payload completo sin modificaciones. Version raw para flujos Metabase-as-code donde el caller construye el body entero. Endpoint: POST /api/card.
metabase
card
question
create
api
python
raw
as-code
metabase_auth_py_infra
false error_go_core
httpx
name desc
client instancia autenticada de MetabaseClient con sesion activa
name desc
payload dict con el payload completo de la card tal como lo espera la API de Metabase; campos minimos: name, dataset_query, display; campos opcionales preservados: visualization_settings, parameters, parameter_mappings, type, collection_id, description, archived, enable_embedding, embedding_params
dict: objeto card recien creado con id asignado por Metabase y todos los campos normalizados (display, dataset_query, visualization_settings, created_at, etc.) false
python/functions/metabase/cards.py

Ejemplo

card = metabase_create_card_raw(client, {
    "name": "Revenue by Month",
    "dataset_query": {
        "database": 1,
        "type": "native",
        "native": {"query": "SELECT date_trunc('month', created_at), SUM(total) FROM orders GROUP BY 1"},
    },
    "display": "line",
    "visualization_settings": {
        "graph.x_axis.title_text": "Month",
        "graph.y_axis.title_text": "Revenue",
    },
    "description": "Monthly revenue trend",
    "collection_id": 5,
})
print(card["id"])  # ID asignado por Metabase

Notas

No se escriben tests automaticos porque requiere una instancia real de Metabase. Los intentos de mockear client.request quedan fuera del alcance del registry por ahora — la validacion se hace en integracion contra un entorno Metabase real.

A diferencia de metabase_create_card, esta funcion no descarta ni transforma ningun campo del payload: lo envia tal cual al endpoint. Esto permite pasar visualization_settings, parameters, embedding_params, type, etc. sin que la funcion los filtre.

Si Metabase devuelve 4xx/5xx, httpx lanza HTTPStatusError sin capturar. El caller debe manejar errores si necesita recuperacion.