--- name: metabase_copy_card kind: function lang: py domain: infra version: "1.0.0" purity: impure signature: "def metabase_copy_card(client: MetabaseClient, card_id: int, name: str | None = None, collection_id: int | None = None, description: str | None = None) -> dict" description: "Crea una copia de una card/pregunta en Metabase via el endpoint nativo POST /api/card/:id/copy. Permite sobrescribir nombre, coleccion y descripcion en la copia." tags: [metabase, card, question, copy, duplicate, collection, api, python] uses_functions: [] uses_types: [] returns: [] returns_optional: false error_type: "error_go_core" imports: [httpx] params: - name: client desc: "instancia autenticada de MetabaseClient" - name: card_id desc: "ID de la card a copiar" - name: name desc: "nombre para la copia; None = Metabase asigna 'Copy of '" - name: collection_id desc: "ID de la coleccion destino; None = misma coleccion que el original" - name: description desc: "descripcion de la copia; None = hereda la del original" output: "dict: objeto card nueva creada por Metabase, con el id asignado y todos los campos heredados del original" tested: false tests: [] test_file_path: "" file_path: "python/functions/metabase/cards.py" --- ## Ejemplo ```python # Copia simple (nombre automatico) copy = metabase_copy_card(client, 42) print(copy["id"], copy["name"]) # "Copy of ..." # Copia a otra coleccion con nombre propio copy = metabase_copy_card(client, 42, name="Revenue Q2", collection_id=7) print(copy["collection_id"]) # 7 ``` ## Notas Usa el endpoint nativo de Metabase que copia dataset_query, display y visualization_settings. Los campos opcionales del body se omiten si son None para que Metabase aplique sus defaults (herencia del original).