Docs / SDK / Python / DNS

Python — módulo DNS

Clase webability_api.dns.Dns. Envuelve la API de DNS (/v1/dns/*): zonas y registros. Los diccionarios devueltos usan exactamente los mismos nombres de campo que el JSON de la API (rrtype, rrtypename, primaryns, defaultttl, etc.) — sin conversión a otro estilo.

Instalar y crear el objeto

pip install webability-python
from webability_api import WaApi
from webability_api.dns import Dns

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

list_zones() -> dict

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

zones = dns.list_zones()
for zone in zones["zones"]:
    print(zone["key"], zone["name"], zone["primaryns"])
print("total:", zones["count"])

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

get_zone(key_or_domain) -> dict

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

zone = dns.get_zone("midominio.com")  # o dns.get_zone(42)
print(zone["zone"]["name"], zone["zone"]["status"])
for rec in zone["records"]:
    print(rec["name"], rec["rrtypename"], rec["data"])
print("nameservers:", zone["ns"])

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

add_zone(name: str) -> dict

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

added = dns.add_zone("midominio.com")
print("zona creada:", added["key"], added["name"])

Devuelve {"status", "key", "name"}.

add_record(zone_key: int, record: dict) -> dict

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

rec = dns.add_record(added["key"], {
    "name": "@",
    "rrtype": "A",
    "ttl": 1800,
    "data": "203.0.113.10",
})
print("registro creado:", rec["key"], "en zona", rec["zone"])

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

update_record(record_key: int, fields: dict) -> dict

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

dns.update_record(rec["key"], {
    "ttl": 3600,
    "data": "203.0.113.20",
})

delete_record(record_key: int) -> dict

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

dns.delete_record(rec["key"])

delete_zone(zone_key: int) -> dict

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

dns.delete_zone(added["key"])

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