POST /api/v1/dns/zone/{zoneName}/record/bulk — выполнить пакет операций с DNS-записями

Обрабатывает пакет, включающий до 100 операций (create, update, delete) с DNS-записями.

Каждая операция выполняется независимо.

Узлы автоматически создаются при необходимости.

Операции create и update в bulk-запросах отклоняются для записей с type=DHCID.

Запрос

curl -k --negotiate -u : -X POST \
  "https://<server>:<port>/api/v1/dns/zone/example.com/record/bulk" \
  -H "Content-Type: application/json" \
  -d '{
    "operations": [
      {
        "op": "create",
        "name": "www",
        "type": "A",
        "rdata": "10.10.0.1",
        "ttl": 3600
      },
      {
        "op": "create",
        "name": "mail",
        "type": "A",
        "rdata": "10.10.0.2",
        "ttl": 3600
      },
      {
        "op": "delete",
        "name": "old",
        "type": "A",
        "rdata": "10.10.0.3"
      }
    ]
  }'

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

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

zoneName

string

✅

Имя зоны (FQDN)

partition

string

–

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

partitionName

string

–

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

Поля операций

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

op

string

✅

Тип операции: create, update, delete

name

string

✅

Имя узла (например: www, @, mail)

type

string

✅

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

ttl

uint32

–

Время жизни записи (только для create и update)

rdata

string

✅

Текущее значение записи (для update и delete)

newRdata

string

⚠️

Новое значение записи (только для update)

Примеры операций

Создание A-записи:

{"op": "create", "name": "www", "type": "A", "rdata": "192.168.1.10"}

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

{"op": "update", "name": "mail", "type": "A", "rdata": "10.0.0.10", "newRdata": "10.0.0.11"}

Удаление A-записи:

{"op": "delete", "name": "ftp", "type": "A", "rdata": "10.0.0.11"}

Ответ "200 OK"

{
  "results": [
    {
      "op": "create",
      "name": "www",
      "type": "A",
      "rdata": "10.10.0.1",
      "success": true
    },
    {
      "op": "create",
      "name": "mail",
      "type": "A",
      "rdata": "10.10.0.2",
      "success": true
    },
    {
      "op": "delete",
      "name": "old",
      "type": "A",
      "rdata": "10.10.0.3",
      "success": true
    }
  ]
}

Ответ "207 Multi-Status"

{
  "results": [
    {
      "op": "create",
      "name": "www",
      "type": "A",
      "rdata": "10.10.0.1",
      "success": true
    },
    {
      "op": "update",
      "name": "mail",
      "type": "A",
      "rdata": "10.0.0.10",
      "newRdata": "10.0.0.11",
      "success": false,
      "error": "SOA serial must be greater than current value; current=123, provided=122"
    },
    {
      "op": "delete",
      "name": "ftp",
      "type": "A",
      "rdata": "10.0.0.11",
      "success": true
    }
  ]
}

Ошибки

Код Причина

400

Некорректный формат запроса: превышен лимит (более 100 операций), отсутствует обязательное поле operations, неверный тип операции, пустой список операций

401

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

409

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

422

Все операции не прошли валидацию (например, все newRdata некорректны, или все rdata не найдены)

500

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

Обновлено: