---
name: metabase_list_users
kind: function
lang: go
domain: infra
version: "1.0.0"
purity: impure
signature: "func MetabaseListUsers(client MetabaseClient, status, query string, limit, offset int) (map[string]any, error)"
description: "Lista usuarios de una instancia Metabase con filtros opcionales por estado, nombre/email y paginacion. Endpoint: GET /api/user. Requiere permisos de superusuario."
tags: [metabase, user, list, api]
uses_functions: []
uses_types: [MetabaseClient_go_infra]
returns: []
returns_optional: false
error_type: "error_go_core"
imports: [fmt]
params:
  - name: client
    desc: "cliente MetabaseClient autenticado con permisos admin"
  - name: status
    desc: "filtro por estado (active, deactivated, all o vacio)"
  - name: query
    desc: "filtro por nombre o email (vacio para sin filtro)"
  - name: limit
    desc: "tamanio de pagina (0 = default de Metabase)"
  - name: offset
    desc: "offset para paginacion (0 = inicio)"
output: "mapa con data (slice de usuarios), total, limit, offset"
tested: false
tests: []
test_file_path: ""
file_path: "functions/infra/metabase_list_users.go"
---

## Ejemplo

```go
client, _ := MetabaseAuth("http://localhost:3000", "admin@example.com", "pass")

// Listar todos los usuarios activos
users, err := MetabaseListUsers(client, "active", "", 0, 0)

// Buscar usuario por email
users, err := MetabaseListUsers(client, "", "john@", 10, 0)

// Listar desactivados
users, err := MetabaseListUsers(client, "deactivated", "", 25, 0)
```

## Notas

Retorna un map con la estructura paginada de Metabase:
- `data`: array de objetos usuario (id, email, first_name, last_name, is_superuser, etc.)
- `total`: numero total de usuarios que coinciden
- `limit`: tamanio de pagina usado
- `offset`: offset usado

### Parametros para un LLM

| Parametro | Tipo | Requerido | Descripcion |
|-----------|------|-----------|-------------|
| client | MetabaseClient | si | Cliente autenticado |
| status | string | no | "active" (default), "deactivated", "all" |
| query | string | no | Filtro por nombre o email |
| limit | int | no | Tamanio de pagina (0 = default Metabase) |
| offset | int | no | Offset para paginacion (0 = inicio) |

### Campos del usuario retornado

| Campo | Tipo | Descripcion |
|-------|------|-------------|
| id | float64 | ID numerico del usuario |
| email | string | Email unico |
| first_name | string | Nombre |
| last_name | string | Apellido |
| is_superuser | bool | Es admin |
| is_active | bool | Esta activo |
| common_name | string | Nombre completo |
| last_login | string | Fecha ultimo login |
