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.