PUT /api/v1/dns/zone/{zoneName}/record — изменить DNS-запись

Изменяет существующую DNS-запись по совокупности параметров: имя узла, тип записи и текущее значение.

Операция идемпотентна: если новое значение совпадает с текущим, изменения не применяются, возвращается статус 200 OK без записи в LDAP.

Запрос

curl -k --negotiate -u : -X PUT \
  "https://<server>:<port>/api/v1/dns/zone/example.com/record" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "www",
    "type": "A",
    "rdata": "192.168.1.10",
    "newRdata": "192.168.1.20",
    "ttl": 7200
  }'

Параметры запроса

Параметр Тип Обязательный Описание и значения

zoneName

string

✅

Имя зоны (FQDN)

partition

string

–

Партиция, в которой находится зона: domain, forest, legacy, custom

partitionName

string

–

Имя пользовательской партиции (обязательно при partition=custom)

Поля тела запроса

Поле Тип Обязательное Описание и значения

name

string

✅

Имя узла (без домена). Например: www, @ (для корня), mail

type

string

✅

Тип записи: A, AAAA, CNAME, MX, NS, PTR, SRV, TXT

rdata

string

✅

Текущее значение записи (для идентификации)

newRdata

string

✅

Новое значение записи в формате, соответствующем типу

ttl

uint32

–

Новое время жизни записи в секундах (если не указано, сохраняется текущее)

Примеры запросов

Обновление A-записи:

curl -k --negotiate -u : -X PUT \
  "https://api-host.example.com:9443/api/v1/dns/zone/example.com/record" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "www",
    "type": "A",
    "rdata": "10.10.1.10",
    "newRdata": "10.10.1.20",
    "ttl": 7200
  }'

Обновление MX-записи с сохранением TTL:

curl -k --negotiate -u : -X PUT \
  "https://api-host.example.com:9443/api/v1/dns/zone/example.com/record" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "@",
    "type": "MX",
    "rdata": "10 mail.example.com.",
    "newRdata": "5 mail2.example.com."
  }'

Ответ "200 OK"

{
  "name": "www",
  "nameUnicode": "www",
  "type": "A",
  "ttl": 7200,
  "rdata": "192.168.1.20"
}

SOA-специфика

При обновлении SOA-записи:

  • newRdata должен содержать увеличенный serial (в противном случае — 400);

  • если newRdata идентичен текущему, возвращается 200 OK без записи в LDAP.

Ошибки

Код Причина

400

SOA serial не увеличен; неверный формат rdata или newRdata; отсутствует обязательное поле; ttl вне диапазона

401

Отсутствует или невалиден билет Kerberos

404

Запись не найдена в зоне

409

Зона существует в нескольких партициях — требуется явное указание partition (ответ содержит availablePartitions)

500

Внутренняя ошибка сервера при обновлении записи

Обновлено: