---
name: metabase_setup
kind: function
lang: py
domain: infra
version: "1.0.0"
purity: impure
signature: "metabase_setup(base_url: str, admin_email: str, admin_password: str, admin_first_name: str, admin_last_name: str, site_name: str, site_locale: str) -> dict"
description: "Ejecuta el setup inicial de una instancia Metabase nueva via POST /api/setup. Obtiene el setup-token automaticamente y crea el usuario admin con preferencias del sitio."
tags: [metabase, setup, api, infra]
uses_functions: []
uses_types: []
returns: []
returns_optional: false
error_type: "error_go_core"
imports: [httpx]
params:
  - name: base_url
    desc: "URL base de Metabase a configurar"
  - name: admin_email
    desc: "correo del usuario administrador a crear"
  - name: admin_password
    desc: "contraseña del administrador"
  - name: admin_first_name
    desc: "nombre del administrador"
  - name: admin_last_name
    desc: "apellido del administrador"
  - name: site_name
    desc: "nombre del sitio Metabase"
  - name: site_locale
    desc: "código de idioma (ej: es, en, fr)"
output: "dict: resultado del setup con session token de administrador"
tested: false
tests: []
test_file_path: ""
file_path: "python/functions/metabase/setup.py"
---

## Ejemplo

```python
from metabase.setup import metabase_setup

result = metabase_setup(
    base_url="http://localhost:3000",
    admin_email="admin@fnregistry.local",
    admin_password="FnRegistry2024!",
    admin_first_name="Lucas",
    admin_last_name="Admin",
    site_name="fn-registry",
    site_locale="es",
)
print(result["id"])  # session token
```

## Notas

Solo funciona en instancias sin configurar (setup-token disponible). Si Metabase ya tiene un usuario, lanza RuntimeError.

El setup-token se obtiene automaticamente de GET /api/session/properties. Una vez usado, Metabase invalida el token.
