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.
This commit is contained in:
2026-04-13 23:31:42 +02:00
parent baa72e211e
commit 9a28d08e38
53 changed files with 5102 additions and 5 deletions
@@ -0,0 +1,47 @@
---
name: metabase_delete_group
kind: function
lang: py
domain: infra
version: "1.0.0"
purity: impure
signature: "def metabase_delete_group(client: MetabaseClient, group_id: int) -> None"
description: "Elimina permanentemente un Permission Group de Metabase. IRREVERSIBLE. No borra los usuarios, solo el grupo. Endpoint: DELETE /api/permissions/group/:id."
tags: [metabase, permissions, group, delete, api, python]
uses_functions: []
uses_types: []
returns: []
returns_optional: false
error_type: "error_go_core"
imports: []
params:
- name: client
desc: "instancia autenticada de MetabaseClient con permisos de superusuario"
- name: group_id
desc: "ID numerico del grupo a eliminar. ADVERTENCIA: no pasar id=1 (All Users) ni id=2 (Administrators)"
output: "None: retorna None en caso de exito (204 No Content)"
tested: false
tests: []
test_file_path: ""
file_path: "python/functions/metabase/permissions.py"
---
## Ejemplo
```python
metabase_delete_group(client, 5)
# CUIDADO: no pasar group_id=1 (All Users) ni group_id=2 (Administrators)
```
## Notas
**OPERACION IRREVERSIBLE.** El grupo se elimina permanentemente sin posibilidad de recuperacion.
Grupos especiales del sistema que NO deben borrarse:
- `id=1`: "All Users" — todos los usuarios de Metabase pertenecen automaticamente a este grupo.
- `id=2`: "Administrators" — grupo de administradores del sistema.
Esta funcion NO valida ni bloquea el borrado de esos IDs. Es responsabilidad del caller verificar que no se pasen IDs protegidos antes de invocar esta funcion.
Al borrar un grupo, los usuarios que pertenecian a el no se eliminan, solo pierden la membresia.
Error 404 si el grupo no existe.