---
name: metabase_add_database
kind: function
lang: py
domain: infra
version: "1.0.0"
purity: impure
signature: "def metabase_add_database(client: MetabaseClient, name: str, engine: str, details: dict) -> dict"
description: "Agrega una nueva database a Metabase via POST /api/database. Soporta cualquier engine (sqlite, postgres, mysql, etc.)."
tags: [metabase, database, add, create, api, python]
uses_functions: []
uses_types: [MetabaseClient_go_infra]
returns: []
returns_optional: false
error_type: "error_go_core"
imports: [httpx]
params:
  - name: client
    desc: "instancia autenticada de MetabaseClient"
  - name: name
    desc: "nombre descriptivo de la base de datos en Metabase"
  - name: engine
    desc: "tipo de base de datos (sqlite, postgres, mysql, etc.)"
  - name: details
    desc: "dict con parámetros de conexión específicos del engine"
output: "dict: objeto database creado con id asignado por Metabase"
tested: false
tests: []
test_file_path: ""
file_path: "python/functions/metabase/databases.py"
---

## Ejemplo

```python
# SQLite
db = metabase_add_database(client, "Ops DB", "sqlite", {"db": "/data/operations.db"})
print(db["id"])

# Postgres
db = metabase_add_database(client, "Prod PG", "postgres", {
    "host": "localhost",
    "port": 5432,
    "dbname": "myapp",
    "user": "reader",
    "password": "secret",
})
```

## Notas

Requiere permisos de superusuario. El campo `details` depende del engine:
para SQLite solo necesita `{"db": "/ruta/archivo.db"}`.
Retorna la database creada con su `id` asignado por Metabase.
