Crear un registro DNS

Ver en Markdown

Añade un registro DNS con proxy desde código con el SDK, simulándolo antes, revisando las diferencias y confirmándolo contra la versión de la zona.

En esta página

Este ejemplo añade www.example.com como registro A con proxy, servido a través del borde de OpenWAF, con el protocolo completo de simular y después confirmar. El token necesita el rol Técnico.

add-www.ts
import { OpenWAF, OpenWAFError, type Applied } from "./openwaf.ts";

const owf = new OpenWAF();

// 1. Busca el id de la zona.
const { items: zones = [] } = await owf.listZones();
const zone = zones.find((z) => z.name === "example.com");
if (!zone?.id) throw new Error("no se encuentra example.com");

const record = { type: "A", name: "www", content: "203.0.113.10", proxied: true } as const;
const reason = "Poner www detrás del WAF";

// 2. Simula: no se aplica nada.
const plan = (await owf.createRecord({ zone: zone.id, body: record }, { reason, dryRun: true })) as Applied;
for (const c of plan.diff?.changes ?? []) console.log(c.op, c.path);
console.log(`versión ${plan.from_version} → ${plan.to_version}`, plan.warnings);

// 3. Confirma con la versión contra la que se hizo el plan.
try {
  const created = await owf.createRecord({ zone: zone.id, body: record }, { reason, ifMatch: plan.from_version! });
  console.log("creado", created);
} catch (err) {
  if (err instanceof OpenWAFError && err.code === "version_conflict") {
    console.error("La zona ha cambiado mientras tanto: vuelve a ejecutarlo y revisa el plan nuevo.");
  } else {
    throw err;
  }
}

La simulación imprime un cambio, add records[id=…], y la versión que crearía el registro. La llamada confirmada devuelve el registro nuevo con su id.

Varios registros en un solo cambio

Para crear, cambiar y borrar varios registros como una sola versión, usa batchRecords / batch_records (hasta 500 operaciones, todo o nada), con un cuerpo de listas create, update y delete. Recibe las mismas opciones reason, dryRun e ifMatch.

Campos del registro

type y content son obligatorios; name, ttl, priority (solo MX y SRV), proxied (solo A, AAAA y CNAME), comment y tags son opcionales. La referencia de records de la CLI describe cada campo; la referencia de la API tiene el esquema completo.

Última actualización:

↑↓ para moverte↵ para abriresc para cerrar