---
name: APIClientConfig
lang: ts
domain: core
version: "1.0.0"
algebraic: product
definition: |
  interface APIClientConfig {
    base_url: string
    headers?: Record<string, string>
    on_error?: (error: Error, url: string, init?: RequestInit) => void
    on_unauthorized?: () => void
  }
description: "Configuracion del cliente HTTP. Define base_url, headers fijos, callback de error global y callback de 401 Unauthorized."
tags: [api, client, config, http, fetch, auth]
uses_types: []
file_path: "frontend/types/core/api_client_config.ts"
---

## Campos

- `base_url` — prefijo de URL para todos los requests, sin slash final (ej: `"http://localhost:8484/api"`)
- `headers` — headers HTTP fijos que se mergeaan en cada peticion (ej: `{ Authorization: 'Bearer ...' }`)
- `on_error` — callback global llamado cuando cualquier peticion falla, recibe el error, la URL y el RequestInit
- `on_unauthorized` — callback llamado cuando el servidor responde 401, tipicamente redirige al login

## Uso

```typescript
import type { APIClientConfig } from '@/types/core/api_client_config'
import { apiClient } from '@/functions/core/api_client'

const config: APIClientConfig = {
  base_url: 'http://localhost:8484/api',
  headers: { 'X-Client': 'dashboard' },
  on_unauthorized: () => (window.location.href = '/login'),
}
const api = apiClient(config)
```

## Notas

Pasado como primer argumento a `api_client_ts_core`. Los interceptors `on_error` y `on_unauthorized` son globales — aplican a todos los metodos (get, post, put, del, patch) del cliente creado.
