# Módulo de Configuración — Banco y País — API Reference

Base URL: `/api`  
Todos los endpoints requieren `Authorization: Bearer <token>`.  
Estos módulos son **catálogos globales** — no filtran por empresa activa.

---

## IDs en base64

```js
btoa(String(id))           // 1 → "MQ=="
parseInt(atob("MQ=="), 10) // → 1
```

---

## 1. Banco

Prefijo: `/api/base/banco/`

### Endpoints

| Método | URL | Permiso | Descripción |
|---|---|---|---|
| `POST` | `/api/base/banco/listar` | `base.banco.listar` | Lista paginada |
| `GET` | `/api/base/banco/detalle/{id}` | `base.banco.detalle` | Detalle |
| `GET` | `/api/base/banco/cargar-datos-edicion/{id}` | `base.banco.cargarDatosEdicion` | Datos para edición |
| `POST` | `/api/base/banco/guardar` | `base.banco.guardar` | Crear o actualizar |
| `POST` | `/api/base/banco/cambiar-estado` | `base.banco.cambiarEstado` | Activar / Eliminar |
| `POST` | `/api/base/banco/exportar-excel` | `base.banco.exportarExcel` | Excel |
| `POST` | `/api/base/banco/exportar-pdf` | `base.banco.exportarPdf` | PDF |

---

### `POST /listar`

```json
{
  "perPage":        10,
  "searchQuery":    "BBVA",
  "bancoEstado":    "Activo",
  "sort_field":     "bancoAlias",
  "sort_direction": "asc"
}
```

---

### `POST /guardar` — Crear

```json
{
  "bancoAlias": "BBVA"
}
```

### `POST /guardar` — Actualizar

```json
{
  "idBanco":    "MQ==",
  "bancoAlias": "BBVA Bancomer"
}
```

| Campo | Regla |
|---|---|
| `bancoAlias` | Requerido |

---

### `POST /cambiar-estado`

```json
{
  "idBanco": "MQ==",
  "estado":  "Activo"
}
```

`estado`: `"Activo"` | `"Eliminado"`

---

### Exportación

```
POST /api/base/banco/exportar-excel
POST /api/base/banco/exportar-pdf
```

Acepta los mismos filtros que `/listar`. Para PDF, usa `"output_mode": "inline"` para preview.

---

## 2. País

Prefijo: `/api/base/pais/`

### Endpoints

| Método | URL | Permiso | Descripción |
|---|---|---|---|
| `POST` | `/api/base/pais/listar` | `base.pais.listar` | Lista paginada |
| `GET` | `/api/base/pais/detalle/{id}` | `base.pais.detalle` | Detalle |
| `GET` | `/api/base/pais/cargar-datos-edicion/{id}` | `base.pais.cargarDatosEdicion` | Datos para edición |
| `POST` | `/api/base/pais/guardar` | `base.pais.guardar` | Crear o actualizar |
| `POST` | `/api/base/pais/cambiar-estado` | `base.pais.cambiarEstado` | Activar / Eliminar |
| `POST` | `/api/base/pais/exportar-excel` | `base.pais.exportarExcel` | Excel |
| `POST` | `/api/base/pais/exportar-pdf` | `base.pais.exportarPdf` | PDF |

---

### `POST /listar`

```json
{
  "perPage":        10,
  "searchQuery":    "México",
  "paisEstado":     "Activo",
  "sort_field":     "paisAlias",
  "sort_direction": "asc"
}
```

---

### `POST /guardar` — Crear

```json
{
  "paisAlias":  "México",
  "paisCodigo": "MX"
}
```

### `POST /guardar` — Actualizar

```json
{
  "idPais":     "MQ==",
  "paisAlias":  "México",
  "paisCodigo": "MEX"
}
```

| Campo | Regla |
|---|---|
| `paisAlias` | Requerido |
| `paisCodigo` | Opcional |

---

### `POST /cambiar-estado`

```json
{
  "idPais": "MQ==",
  "estado": "Activo"
}
```

`estado`: `"Activo"` | `"Eliminado"`

---

### Exportación

```
POST /api/base/pais/exportar-excel
POST /api/base/pais/exportar-pdf
```

---

## Respuesta paginada (ambos módulos)

```json
{
  "success":          true,
  "code":             200,
  "data":             [...],
  "lastPage":         3,
  "totalData":        25,
  "totalPage":        10,
  "currentPage":      1,
  "recordsTotal":     25,
  "recordsFiltered":  25,
  "draw":             1
}
```
