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.