---
name: metabase_update_document
kind: function
lang: py
domain: infra
version: "1.1.0"
purity: impure
signature: "def metabase_update_document(client: MetabaseClient, document_id: int, *, validate: bool = True, **fields) -> dict"
description: "Actualiza un document. Solo envia los campos pasados. Si se pasa 'document', valida el ProseMirror antes de enviar (evita documentos vacíos por nodos no soportados)."
tags: [metabase, document, update, api, python]
uses_functions: [metabase_validate_document_payload_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 a actualizar"
  - name: validate
    desc: "si True (default), valida el ProseMirror antes de enviar cuando se pasa 'document'"
  - name: fields
    desc: "kwargs con campos a modificar: name, document (arbol ProseMirror), collection_id, archived"
output: "dict: document actualizado"
tested: false
tests: []
test_file_path: ""
file_path: "python/functions/metabase/documents.py"
---

## Ejemplo

```python
from metabase.documents import prosemirror_card_embed

# Renombrar
metabase_update_document(client, 1, name="Nuevo titulo")

# Reemplazar contenido con card embebida
metabase_update_document(client, 1, document={
    "type": "doc",
    "content": [
        {"type": "heading", "attrs": {"level": 1},
         "content": [{"type": "text", "text": "Resumen"}]},
        prosemirror_card_embed(42, height=450),
    ]
})

# Mover a coleccion
metabase_update_document(client, 1, collection_id=5)
```

## Notas

- La validación es automática cuando se pasa `document=...`. Si contiene nodos que el frontend no renderiza (callout, taskList, etc.), lanza `ValueError` antes de enviar.
- Usar `blockquote` en vez de `callout` para destacar texto.
- Usar `prosemirror_card_embed(card_id)` en vez de `cardEmbed` desnudo.
