Docs / SDK / PHP / DNS
PHP — módulo DNS
Clase Webability\Api\Dns. Envuelve la API de DNS (/v1/dns/*): zonas y registros. Los arrays 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
composer require webability/webability-php
use Webability\Api\Wa;
use Webability\Api\Dns;
$api = new Wa('tu-client-id', 'tu-token-secreto');
$dns = new Dns($api);
listZones(): array
GET /v1/dns/zone — lista las zonas (dominios) del cliente.
$zones = $dns->listZones();
foreach ($zones['zones'] as $zone) {
echo $zone['key'], ' ', $zone['name'], ' ', $zone['primaryns'], "\n";
}
echo 'total: ', $zones['count'];
Devuelve array{status: string, zones: array, count: int}.
getZone(string $keyOrDomain): array
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->getZone('midominio.com'); // o $dns->getZone('42')
echo $zone['zone']['name'], ' ', $zone['zone']['status'], "\n";
foreach ($zone['records'] as $rec) {
echo $rec['name'], ' ', $rec['rrtypename'], ' ', $rec['data'], "\n";
}
print_r($zone['ns']);
Devuelve array{status: string, zone: array, records: array, ns: array}.
addZone(string $name): array
POST /v1/dns/zone — crea una nueva zona (dominio). Los NS de la cuenta se agregan automáticamente.
$added = $dns->addZone('midominio.com');
echo 'zona creada: ', $added['key'], ' ', $added['name'];
Devuelve array{status: string, key: int, name: string}.
addRecord(int $zoneKey, array $record): array
POST /v1/dns/zone/{key}/record — agrega un registro a una zona.
$rec = $dns->addRecord($added['key'], [
'name' => '@',
'rrtype' => 'A',
'ttl' => 1800,
'data' => '203.0.113.10',
]);
echo 'registro creado: ', $rec['key'], ' en zona ', $rec['zone'];
$record también acepta priority, weight, port y tag (para MX, SRV, CAA, etc.).
updateRecord(int $recordKey, array $fields): array
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->updateRecord($rec['key'], [
'ttl' => 3600,
'data' => '203.0.113.20',
]);
deleteRecord(int $recordKey): array
DELETE /v1/dns/record/{key} — elimina un registro.
$dns->deleteRecord($rec['key']);
deleteZone(int $zoneKey): array
DELETE /v1/dns/zone/{key} — elimina una zona y todos sus registros.
$dns->deleteZone($added['key']);
Errores de la API (plantilla no encontrada, zona duplicada, etc.) se lanzan como Webability\Api\ApiError (con statusCode y code). Referencia completa de la API HTTP (headers, códigos de error, formato de respuesta): /documentacion/dns.