Cómo se generan los SDK

Ver en Markdown

Los SDK se generan desde el contrato OpenAPI de la API y los sirve la propia API, así que el fichero que descargas siempre coincide con ella.

En esta página

Los dos SDK se generan desde el contrato OpenAPI 3.1 de la API de OpenWAF, el mismo que hay detrás de la referencia de la API. El generador es determinista: el mismo contrato produce siempre los mismos ficheros, y la compilación falla si los ficheros publicados se quedan atrás respecto al contrato.

De dónde salen los ficheros

La API sirve los ficheros con los que se compiló:

FicheroURLTipo de contenido
TypeScripthttps://dash.openwaf.dev/v1/sdk/openwaf.tsapplication/typescript
Pythonhttps://dash.openwaf.dev/v1/sdk/openwaf.pytext/x-python

Son públicos (sin token), llevan un ETag (If-None-Match responde 304 Not Modified) y se pueden guardar en caché cinco minutos. Como van dentro de la API, el fichero que descargas siempre coincide con la API en funcionamiento. Los SDK no se publican en npm ni en PyPI: el fichero se guarda en tu proyecto.

Actualizaciones

Cuando la API gana operaciones o campos, vuelve a descargar el fichero. El ETag son los 32 primeros caracteres hexadecimales del SHA-256 del fichero, así que un script puede saber si tu copia está al día sin descargarla: envíalo en If-None-Match y un 304 significa que no ha cambiado.

ETAG="\"$(shasum -a 256 openwaf.ts | cut -c1-32)\""
curl -sS -o /dev/null -w '%{http_code}\n' -H "If-None-Match: $ETAG" https://dash.openwaf.dev/v1/sdk/openwaf.ts
# 304: al día · 200: vuelve a descargarlo

Revisa las diferencias antes de guardarlo, como con cualquier dependencia.

Qué incluyen

Los SDK exponen todas las operaciones que puede llamar un token de API (owf_…): todo lo que cuelga de /v1/orgs/{org}, la llamada que indica la organización del token (GET /v1/orgs) y las CA públicas de TLS hacia el origen. Quedan fuera el inicio de sesión, el endpoint MCP, la administración de la plataforma, las rutas de los nodos de borde, las propias descargas de los SDK y los flujos de eventos en directo (Server-Sent Events, que se leen con un EventSource).

El rol y el alcance de tu token siguen aplicando: el método de una operación que tu token no puede llamar falla con 403.

Cómo corresponden los métodos a las operaciones

TypeScriptPython
Nombre del métodoEl id de la operación, como listZones, createRecord, getZoneDiffEn snake_case: list_zones, create_record, get_zone_diff
Parámetros de ruta y de consultaUn objeto: { zone, limit, before }Argumentos con nombre: zone=…, limit=…
Cuerpo de la peticiónbody en el mismo objetobody=
Opciones de cambioSegundo argumento: { reason, ifMatch, dryRun }Argumentos con nombre: reason=, if_match=, dry_run=
orgOpcional; por defecto, la organización del clienteIgual
RespuestaEl cuerpo JSON decodificado, tipadoEl cuerpo JSON decodificado (dict)

Los parámetros cuyo nombre es una palabra reservada llevan un guion bajo en Python: el from de las diferencias es from_. El comentario de cada método repite el resumen de la operación del contrato (en español) y su método y ruta HTTP.

Los ids de las operaciones y sus parámetros son los de la referencia de la API.

Última actualización:

↑↓ para moverte↵ para abriresc para cerrar