# Primeros pasos con los SDK

> Descarga el SDK de TypeScript o de Python desde la API de OpenWAF, configura un token de API y lista tus zonas.

1. **Descarga el SDK** en tu proyecto. Los ficheros son públicos y no necesitan token.

**TypeScript**

   ```sh
   curl -fsSLO https://dash.openwaf.dev/v1/sdk/openwaf.ts
   ```
**Python**

   ```sh
   curl -fsSLO https://dash.openwaf.dev/v1/sdk/openwaf.py
   ```


   Guarda el fichero en el repositorio junto a tu código. Para actualizarlo, vuelve a descargarlo; lo explica [Cómo se generan los SDK](https://developers.openwaf.dev/es/sdk/how-the-sdks-are-generated/#updates).

2. **Crea un token de API** en el panel, en **Tokens de API**. **Solo lectura** basta para esta guía; usa **Técnico** para hacer cambios. Los tokens empiezan por `owf_`.

3. **Configura el cliente** con el entorno, para que el token no esté en el código:

   ```sh
   export OPENWAF_API_URL=https://dash.openwaf.dev
   read -rs OPENWAF_TOKEN && export OPENWAF_TOKEN
   ```

> **Atención**
>
>    Define siempre `OPENWAF_API_URL` (o pasa la URL base al constructor). La dirección que traen por defecto los SDK no sirve la API.


4. **Lista tus zonas.**

**TypeScript**

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

   const owf = new OpenWAF();
   const { items = [] } = await owf.listZones();
   for (const z of items) {
     console.log([z.name, z.status, "v" + z.config_version].join("\t"));
   }
   ```
   ```sh
   bun list-zones.ts        # o: node --experimental-strip-types list-zones.ts
   ```
**Python**

   ```py
   from openwaf import OpenWAF

   owf = OpenWAF()
   for z in owf.list_zones()["items"]:
       print(z["name"], z["status"], "v%d" % z["config_version"], sep="\t")
   ```
   ```sh
   python3 list_zones.py
   ```



El cliente averigua tu organización a partir del token. Cada zona tiene un `id`: los métodos de zona reciben ese id, no el nombre del dominio. Sigue con [Crear un registro DNS](https://developers.openwaf.dev/es/sdk/create-a-record/).
