# SDK

> Clientes tipados de TypeScript y Python para la API de OpenWAF, generados desde su contrato OpenAPI, un solo fichero cada uno y sin dependencias.

OpenWAF tiene dos clientes oficiales de la API, generados desde el mismo contrato OpenAPI que la [referencia de la API](https://developers.openwaf.dev/es/api/):

| SDK | Fichero | Funciona en | Dependencias |
|---|---|---|---|
| TypeScript / JavaScript | `openwaf.ts` | Bun, Deno, Node.js con eliminación de tipos de TypeScript, navegadores y cualquier cadena de herramientas de TypeScript; usa `fetch` | Ninguna |
| Python | `openwaf.py` | Python 3.8 o posterior | Ninguna (biblioteca estándar) |

Cada SDK es un único fichero que descargas de la propia API y guardas en tu proyecto. Tiene un método por cada operación de la API que puede llamar un token de API, con parámetros y respuestas tipados, y el mismo protocolo de cambios que el panel y la CLI: un motivo en cada escritura, simulación y versión esperada.

**TypeScript**

```ts
import { OpenWAF } from "./openwaf.ts";

const owf = new OpenWAF({ baseUrl: "https://dash.openwaf.dev" }); // token de OPENWAF_TOKEN
const { items = [] } = await owf.listZones();
for (const z of items) console.log(z.name, z.status, z.config_version);
```
**Python**

```py
from openwaf import OpenWAF

owf = OpenWAF(base_url="https://dash.openwaf.dev")  # token de OPENWAF_TOKEN
for z in owf.list_zones()["items"]:
    print(z["name"], z["status"], z["config_version"])
```


- [Primeros pasos](https://developers.openwaf.dev/es/sdk/get-started/): descarga el SDK, configura un token y lista tus zonas.
- [Cómo se generan los SDK](https://developers.openwaf.dev/es/sdk/how-the-sdks-are-generated/): de dónde salen los ficheros y cómo corresponden los métodos a las operaciones de la API.
- [Autenticación y configuración](https://developers.openwaf.dev/es/sdk/authentication/): token, dirección de la API y organización.
- [Escrituras: motivo, simulación y versión](https://developers.openwaf.dev/es/sdk/writes/): el protocolo de cambios desde código.
- [Gestión de errores](https://developers.openwaf.dev/es/sdk/error-handling/): `OpenWAFError`, sus códigos y los conflictos de versión.
- [Paginación](https://developers.openwaf.dev/es/sdk/pagination/): recorre el historial de versiones y la auditoría.
- [Crear un registro DNS](https://developers.openwaf.dev/es/sdk/create-a-record/): simula, revisa y confirma un cambio.
- [Purgar la caché](https://developers.openwaf.dev/es/sdk/purge-the-cache/): purga URL tras un despliegue.
- [Referencia de TypeScript](https://developers.openwaf.dev/es/sdk/typescript/): opciones del cliente, convenciones de los métodos, errores y tipos.
- [Referencia de Python](https://developers.openwaf.dev/es/sdk/python/): constructor, convenciones de los métodos, errores y valores devueltos.
