Разделы документации

Admin API: домены

Одиннадцать методов Admin API для доменов: список, добавление, настройки, проверка, группы и доступ к ним, направление на proxy-сервер.

Через API доступны те же действия, что и в разделе панели Домены: добавить домен, поменять его настройки, запустить проверку, собрать домены в группы и направить их на ноду. Все методы требуют токен с доступом Полный доступ (full). Авторизация описана на странице Admin API: обзор и авторизация, формат ответов и ошибок — на странице Формат запросов, ответов и ошибок.

Объект домена

ПолеТипОписание
idстрока, UUIDID домена
nameстрокаИмя домена в нижнем регистре
cloudflareлогическоеДомен добавлен как домен за Cloudflare
dns_statusстрокаСостояние DNS на момент добавления: proxied — домен за Cloudflare указывал на сеть Cloudflare, pending — в остальных случаях. Текущее состояние смотрите в health
ssl_statusстрокаСлужебное поле. Состояние сертификата смотрите в health.tls
group_idстрока, UUID или nullГруппа домена
group_nameстрока или nullНазвание группы
no_indexлогическоеЗапрет индексации домена поисковиками
index_campaign_idстрока, UUID или nullКампания, которая открывается на корне домена
index_campaignстрока или nullНазвание этой кампании
campaign_countчислоСколько кампаний используют домен
proxy_node_idстрока, UUID или nullНода, на которую направлен домен
blockedлогическоеДомен найден в реестре блокировок
blocked_atстрока, дата RFC 3339Когда домен найден в реестре. Поля нет, если домен не в реестре
blocked_sourceстрокаНазвание или адрес реестра. Поля нет, если домен не в реестре
healthобъектРезультат последней проверки. Поля нет, пока домен не проверялся

Блок health

ПолеТипОписание
readyлогическоеtrue, когда все четыре этапа успешны, а у домена за Cloudflare ещё и proxy равен proxied
dns, http, https, tlsобъектЭтап проверки: state — ok, warning, error или pending; message — текст результата; status — код ответа HTTP, если ответ получен
addressesмассив строкАдреса, которые вернул DNS. Поля нет, если адреса не получены
proxyстрокаproxied — все адреса принадлежат сети Cloudflare, direct — не все. Поля нет, если адреса не получены
certificate_expiresстрока, дата RFC 3339Срок действия сертификата. Поля нет, если сертификат не получен
checked_atстрока, дата RFC 3339Время проверки
next_check_atстрока, дата RFC 3339Время следующей автоматической проверки
attemptsчислоЧисло неудачных проверок подряд

Что означает каждое сообщение этапа — на странице Проверка домена.

Домены

Список доменов

http
GET /api/v1/domains

Возвращает все домены команды. Параметров и постраничности нет.

Ответ — код 200 и массив объектов домена. Недавно добавленные идут первыми. Если доменов нет, приходит пустой массив [].

Добавить домены

http
POST /api/v1/domains

Добавляет один или несколько доменов с одинаковыми настройками.

ПолеТипОбязательностьОписание
nameстрокадаИмя домена. Несколько имён разделяйте запятой, пробелом или переводом строки
cloudflareлогическоенетДомен за Cloudflare. По умолчанию false
group_idстрока, UUIDнетГруппа, в которую попадут домены
new_groupстроканетНазвание новой группы. Группа создаётся, и домены попадают в неё. Не учитывается, если передан group_id
no_indexлогическоенетЗапрет индексации. По умолчанию true
index_campaign_idстрока, UUIDнетКампания на корне домена

Ответ — код 201 и объект с массивом items: добавленные домены. Поля group_name, index_campaign, campaign_count и health в этом ответе не заполнены — читайте их запросом списка.

Имена приводятся к нижнему регистру. Домен, который уже есть в трекере, пропускается без ошибки и в items не попадает.

При cloudflare: true трекер проверяет, куда указывает DNS домена. Если домен указывает не на сеть Cloudflare, он не добавляется. Если DNS ещё не отвечает, домен добавляется со статусом pending. Подробнее — на странице Работа с Cloudflare.

Ошибки:

КодcodeКогда
422validationПоле name пустое или тело не разобрано. Сообщение — name is required
422cloudflare_not_proxiedЧасть доменов за Cloudflare не проксирована. Их имена перечислены в сообщении
400bad_requestgroup_id или index_campaign_id — не UUID. Сообщение — некорректный идентификатор или значение
Внимание.

При ответе 422 с кодом cloudflare_not_proxied остальные домены из запроса уже добавлены. Перед повтором запросите список и отправьте только недостающие имена.

Пример запроса:

bash
curl -X POST https://panel.example.com/api/v1/domains \
  -H "Api-Key: <токен>" \
  -H "Content-Type: application/json" \
  -d '{"name":"track.example.com","new_group":"Nutra PL","no_index":true}'

Пример ответа:

json
{
  "items": [
    {
      "id": "3f2a9c1e-5b7d-4e8f-a1b2-c3d4e5f6a7b8",
      "name": "track.example.com",
      "ssl_status": "pending",
      "dns_status": "pending",
      "cloudflare": false,
      "group_id": "9d8c7b6a-1f2e-4d3c-b5a4-0e9f8d7c6b5a",
      "group_name": null,
      "no_index": true,
      "index_campaign_id": null,
      "index_campaign": null,
      "campaign_count": 0,
      "proxy_node_id": null,
      "blocked": false
    }
  ]
}

Изменить домен

http
PUT /api/v1/domains/{id}

Меняет настройки домена с ID из пути. Меняются только переданные поля. Имя домена изменить нельзя.

ПолеТипОбязательностьОписание
cloudflareлогическоенетПризнак домена за Cloudflare
group_idстрока, UUIDнетПеренести домен в эту группу
clear_groupлогическоенетtrue — убрать домен из группы. Важнее, чем group_id
no_indexлогическоенетЗапрет индексации
index_campaign_idстрока, UUIDнетКампания на корне домена
clear_indexлогическоенетtrue — убрать кампанию с корня домена. Важнее, чем index_campaign_id

Значения null и пустая строка в group_id и index_campaign_id ничего не меняют. Чтобы снять значение, передайте clear_group или clear_index.

Ответ — код 200 и объект домена после изменения.

Если домен после изменения считается доменом за Cloudflare, трекер снова проверяет его DNS. Когда домен указывает не на сеть Cloudflare, запрос отклоняется целиком и ни одно поле не меняется.

Ошибки:

КодcodeКогда
400bad_requestТело не разобрано или ID — не UUID
404not_foundДомена с таким ID нет
422cloudflare_not_proxiedДомен за Cloudflare не проксирован

Проверить домен

http
POST /api/v1/domains/{id}/verify

Запускает проверку DNS, HTTP, HTTPS и сертификата и ждёт её окончания. Тело не нужно.

Ответ — код 200 и объект с двумя полями: dns_status и health. Формат health — в разделе Блок health. dns_status здесь — pending, если этап dns не в состоянии ok, иначе значение health.proxy: proxied или direct.

Ошибки:

КодcodeКогда
400bad_requestID — не UUID
404not_foundДомена с таким ID нет
409check_runningДомен уже проверяется. Запросите список через несколько секунд
429rate_limitБольше 20 проверок в минуту на всю команду. Повторите через минуту

Удалить домен

http
DELETE /api/v1/domains/{id}

Удаляет домен. В корзину домен не попадает. Кампании, которые его использовали, остаются без домена.

Ответ — код 204 без тела. Если домена с таким ID нет — 404 с кодом not_found, если ID — не UUID — 400 с кодом bad_request.

Группы доменов

Группы определяют, какие домены видят баеры и верстальщики. Подробнее — на странице Группы доменов и доступ баеров.

Список групп

http
GET /api/v1/domain-groups

Ответ — код 200 и массив групп, отсортированный по названию.

ПолеТипОписание
idстрока, UUIDID группы
nameстрокаНазвание
domain_countчислоЧисло доменов в группе
shared_toмассив строкID пользователей, которым открыта группа

Создать группу

http
POST /api/v1/domain-groups
ПолеТипОбязательностьОписание
nameстрокадаНазвание группы. Пробелы по краям убираются

Ответ — код 201 и объект группы с пустым shared_to и domain_count, равным 0. Если name пустое или тело не разобрано — 422 с кодом validation и сообщением name is required.

Удалить группу

http
DELETE /api/v1/domain-groups/{id}

Удаляет группу. Домены остаются в трекере без группы, доступ пользователей к ним через эту группу пропадает.

Ответ — код 204 без тела. Если группы нет — 404 с кодом not_found, если ID — не UUID — 400 с кодом bad_request.

Открыть группу пользователям

http
POST /api/v1/domain-groups/{id}/share

Задаёт список пользователей, которым видна группа и её домены. Список заменяется целиком.

ПолеТипОбязательностьОписание
user_idsмассив строк, UUIDнетID пользователей. Пустой массив или запрос без поля закрывает группу для всех

ID, которых нет в команде, пропускаются без ошибки. ID пользователей отдаёт метод списка на странице Admin API: пользователи.

Ответ — код 204 без тела.

Ошибки: 400 с кодом bad_request — тело не разобрано или ID — не UUID; 404 с кодом not_found — группы нет.

Пример запроса:

bash
curl -X POST https://panel.example.com/api/v1/domain-groups/9d8c7b6a-1f2e-4d3c-b5a4-0e9f8d7c6b5a/share \
  -H "Api-Key: <токен>" \
  -H "Content-Type: application/json" \
  -d '{"user_ids":["1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d"]}'

Направление на proxy-сервер

Оба метода выставляют проксированную A-запись домена на адрес ноды через аккаунт Cloudflare, добавленный в трекер, и запоминают привязку. Нода должна быть в статусе ready. Подготовка описана на страницах Proxy-серверы и Работа с Cloudflare, методы нод и аккаунтов — на странице Admin API: proxy-серверы и Cloudflare.

Направить домен на ноду

http
POST /api/v1/domains/{id}/route

Направляет домен с ID из пути на ноду.

ПолеТипОбязательностьОписание
node_idстрока, UUIDдаID ноды

Ответ — код 200 и объект: ok — true, node_ip — адрес ноды.

Ошибки:

КодcodeКогда
400bad_requestID домена или node_id — не UUID
404not_foundДомена или ноды с таким ID нет
422validationНе передан node_id или тело не разобрано
422not_readyНода не готова. Её статус указан в сообщении
422cf_errorA-запись выставить не удалось. Причина — в сообщении. Текст not found означает, что зона домена не найдена ни в одном добавленном аккаунте Cloudflare
503disabledProxy-серверы на этой установке выключены

Направить несколько доменов

http
POST /api/v1/domains/route-bulk

Направляет на одну ноду до 500 доменов за запрос.

ПолеТипОбязательностьОписание
node_idстрока, UUIDдаID ноды
domain_idsмассив строк, UUIDдаID доменов, от 1 до 500

Ответ — код 200, даже если часть доменов направить не удалось. Проверяйте массив failed.

ПолеТипОписание
routedчислоСколько доменов направлено
failedмассив объектовДомены, которые направить не удалось. У ненайденного домена — id и error с текстом домен не найден, у остальных — domain с именем и error с причиной. Пустой массив, если направлены все
node_ipстрокаАдрес ноды

Ошибки те же, что у предыдущего метода, кроме cf_error: причины по каждому домену приходят в failed. Коды 400 и 404 относятся только к ноде: домен с неверным или незнакомым ID попадает в failed. Код validation возвращается также при пустом domain_ids и при списке длиннее 500 ID.

Обновлено Нужна помощь? ↗