NRNIC API

Всё, что можно сделать в веб-панели (добавлять и удалять домены, управлять DNS-записями), доступно и программно через REST API.

Обзор

Все эндпоинты принимают и возвращают JSON. Для аутентификации требуется API-ключ (см. ниже). Сейчас нет ни постраничной выдачи, ни ограничения частоты запросов.

Базовый URL

https://ns.nrnic.com/api

Аутентификация

API-ключ можно создать в разделе «Настройки аккаунта». Новый ключ показывается только один раз, поэтому обязательно сохраните его в надёжном месте.

Добавляйте в каждый запрос следующий заголовок Authorization:

Authorization: Bearer nrnic_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Замечания по безопасности

Относитесь к API-ключу как к паролю. Никогда не публикуйте его в открытых репозиториях и не встраивайте в клиентский JavaScript — используйте только в серверном коде. Если ключ стал известен посторонним, немедленно отзовите его в настройках аккаунта и создайте новый.

Ответы с ошибками

При ошибке возвращается соответствующий HTTP-код состояния (401/404/409/422/500 и т. д.) и JSON следующего вида.

{
  "error": {
    "code": "domain_not_found",
    "message": "Domain not found."
  }
}

Эндпоинты

Метод Путь Описание
GET/api/domainsПолучить список доменов аутентифицированного пользователя
POST/api/domainsДобавить домен
GET/api/domains/{id}Получить домен, включая статус синхронизации NS и делегирования
DELETE/api/domains/{id}Удалить домен
POST/api/domains/{id}/resyncПовторно отправить DNS-зону на все неймсерверы (ns1–ns4)
POST/api/domains/{id}/delegation-checkПроверить, делегирован ли домен на NRNIC
GET/api/domains/{id}/recordsПолучить список DNS-записей домена
POST/api/domains/{id}/recordsДобавить DNS-запись
PUT/api/domains/{id}/records/{record_id}Обновить DNS-запись
DELETE/api/domains/{id}/records/{record_id}Удалить DNS-запись

Примеры

Домены

# Получить список доменов аутентифицированного пользователяcurl -s https://ns.nrnic.com/api/domains \
  -H "Authorization: Bearer nrnic_xxxxxxxx"

# Добавить доменcurl -s https://ns.nrnic.com/api/domains \
  -H "Authorization: Bearer nrnic_xxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"fqdn": "example.com"}'

# Удалить доменcurl -s -X DELETE https://ns.nrnic.com/api/domains/123 \
  -H "Authorization: Bearer nrnic_xxxxxxxx"

DNS-записи

# Добавить DNS-записьcurl -s https://ns.nrnic.com/api/domains/123/records \
  -H "Authorization: Bearer nrnic_xxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"type": "A", "name": "@", "content": "192.0.2.1", "ttl": 3600}'

# Обновить DNS-записьcurl -s -X PUT https://ns.nrnic.com/api/domains/123/records/456 \
  -H "Authorization: Bearer nrnic_xxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"type": "A", "name": "@", "content": "192.0.2.2", "ttl": 3600}'

# Удалить DNS-записьcurl -s -X DELETE https://ns.nrnic.com/api/domains/123/records/456 \
  -H "Authorization: Bearer nrnic_xxxxxxxx"

Поля DNS-записей

typeТип записи. Одно из значений: A, AAAA, CNAME, MX, TXT, NS, SRV, CAA.
nameИмя хоста (часть поддомена). Для вершины зоны используйте "@".
contentЗначение записи (IP-адрес, имя целевого хоста и т. д.).
ttlTTL в секундах, от 60 до 604800. Если не указан, по умолчанию 3600.
priorityПриоритет для записей MX/SRV (0–65535).
weightВес для записей SRV (0–65535).
portНомер порта для записей SRV (0–65535).