--- name: metabase_copy_document kind: function lang: py domain: infra version: "1.0.0" purity: impure signature: "def metabase_copy_document(client: MetabaseClient, document_id: int, name: str | None = None, collection_id: int | None = None) -> dict" description: "Copia un document clonando su contenido ProseMirror. Metabase no tiene endpoint nativo; realiza GET + POST internamente." tags: [metabase, document, copy, clone, prosemirror, api, python] uses_functions: [metabase_get_document_py_infra, metabase_create_document_py_infra] uses_types: [] returns: [] returns_optional: false error_type: "error_go_core" imports: [httpx] params: - name: client desc: "instancia autenticada de MetabaseClient" - name: document_id desc: "ID del document original a copiar" - name: name desc: "nombre del nuevo document; None usa '{original} (copia)'" - name: collection_id desc: "coleccion destino; None copia a la misma coleccion del original" output: "dict: document nuevo recien creado con id asignado y metadata completa" tested: false tests: [] test_file_path: "" file_path: "python/functions/metabase/documents.py" --- ## Ejemplo ```python # Copia simple con nombre automatico a la misma coleccion copy = metabase_copy_document(client, 42) print(copy["name"]) # "Mi documento (copia)" print(copy["id"]) # nuevo ID # Clonar a otra coleccion con nombre personalizado copy = metabase_copy_document(client, 42, name="Backup Q1", collection_id=5) ``` ## Notas Realiza 2 requests HTTP: `GET /api/document/:id` para obtener el original y `POST /api/document` para crear la copia con el mismo arbol ProseMirror. Metabase no tiene endpoint `POST /api/document/:id/copy` — esta funcion implementa la copia en cliente. Los `cardEmbed` del documento original apuntaran a los mismos cards embebidos; no se duplican los cards embebidos.