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.