Docs / SDK / JavaScript / DNS

JavaScript — módulo DNS

Clase Dns (@webability/webability-js/dns). Envuelve la API de DNS (/v1/dns/*): zonas y registros. Los objetos que entran y salen usan exactamente los mismos nombres de campo que el JSON de la API (snake_case: rrtype, rrtypename, primaryns, defaultttl, etc.) — sin convertir a camelCase.

Instalar y crear el objeto

npm install @webability/webability-js
import { WaApi } from "@webability/webability-js";
import { Dns } from "@webability/webability-js/dns";

const api = new WaApi("tu-client-id", "tu-token-secreto");
const dns = new Dns(api);

async listZones()

GET /v1/dns/zone — lista las zonas (dominios) del cliente.

const zones = await dns.listZones();
for (const zone of zones.zones) {
  console.log(zone.key, zone.name, zone.primaryns);
}
console.log("total:", zones.count);

Devuelve { status, zones: [Zone], count }.

async getZone(keyOrDomain)

GET /v1/dns/zone/{key|domain} — detalle de una zona y sus registros. Acepta la clave numérica o el nombre de dominio.

const zone = await dns.getZone("midominio.com"); // o dns.getZone(42)
console.log(zone.zone.name, zone.zone.status);
for (const rec of zone.records) {
  console.log(rec.name, rec.rrtypename, rec.data);
}
console.log("nameservers:", zone.ns);

Devuelve { status, zone: Zone, records: [Record], ns: [string] }.

async addZone(name)

POST /v1/dns/zone — crea una nueva zona (dominio). Los NS de la cuenta se agregan automáticamente.

const added = await dns.addZone("midominio.com");
console.log("zona creada:", added.key, added.name);

Devuelve { status, key, name }.

async addRecord(zoneKey, record)

POST /v1/dns/zone/{key}/record — agrega un registro a una zona.

const rec = await dns.addRecord(added.key, {
  name: "@",
  rrtype: "A",
  ttl: 1800,
  data: "203.0.113.10",
});
console.log("registro creado:", rec.key, "en zona", rec.zone);

record también acepta priority, weight, port y tag (para MX, SRV, CAA, etc.).

async updateRecord(recordKey, fields)

PUT /v1/dns/record/{key} — modifica un registro existente. Solo incluye en fields los campos que quieras cambiar; los que omitas conservan su valor.

await dns.updateRecord(rec.key, {
  ttl: 3600,
  data: "203.0.113.20",
});

async deleteRecord(recordKey)

DELETE /v1/dns/record/{key} — elimina un registro.

await dns.deleteRecord(rec.key);

async deleteZone(zoneKey)

DELETE /v1/dns/zone/{key} — elimina una zona y todos sus registros.

await dns.deleteZone(added.key);

Errores de la API se lanzan como ApiError (con statusCode y code). Referencia completa de la API HTTP (headers, códigos de error, formato de respuesta): /documentacion/dns.