# API REST {#sec-api}

La API REST proporciona acceso HTTP al motor de cálculos del paquete R.

## Visión General

- **Framework**: R + Plumber
- **Puerto por defecto**: 8000
- **Protocolo**: HTTP/JSON
- **Ubicación**: `api/`

## Características

- **RESTful**: Endpoints siguiendo principios REST
- **JSON**: Entrada y salida en formato JSON
- **Documentación**: OpenAPI/Swagger automática
- **Async**: Soporte para operaciones asíncronas
- **Docker**: Containerizado para fácil despliegue

## Arquitectura

```{mermaid}
graph LR
    A[Cliente Web] --> B[API Plumber :8000]
    B --> C[Paquete brechaspnip]
    C --> D[(Datos)]
```

## Endpoints

### `GET /`

Health check básico.

**Respuesta**:
```json
{
  "message": "BrechaSnipApp API",
  "status": "ok"
}
```

### `GET /calcular/<id>`

Calcula brecha e inversiones para un indicador.

**Parámetros de ruta**:
- `id`: Código del indicador (ej. `s21`)

**Parámetros de query**: Ver @sec-api-endpoints

**Respuesta**: JSON con resultados completos

## Casos de Uso

- **Webapp**: Cliente principal
- **Scripts**: Automatización de cálculos
- **Integración**: Con otros sistemas de planificación

## Documentación de API

::: {.features-grid}

::: {.feature-card}
**Endpoints**
Referencia completa de los endpoints disponibles.
[Ver Endpoints &rarr;](endpoints.qmd)
:::

::: {.feature-card}
**Despliegue**
Guía para desplegar la API con Docker.
[Ver Despliegue &rarr;](../05-deployment/index.qmd)
:::

::: {.feature-card}
**Integración**
Patrones para integrar la API con otros sistemas.
[Ver Integración &rarr;](integration.qmd)
:::

:::
