Adset.ProAdset.ProKnowledge base
This article is currently available in Russian only.View in Russian

Домены

Домены — адреса, на которых работают трекинговые ссылки кампаний и PWA. Через API домены доступны только для чтения: получить список доменов команды с их статусами и выбрать id для поля domain кампании. Регистрация, покупка, парковка и операции с Cloudflare выполняются в кабинете (см. раздел Домены).

Получение токена, общий формат ответов, параметры списков и ошибки — в головной статье раздела.

Скоупы

Скоуп Доступ В дефолте PAT
api:domains чтение: список и карточка домена да

Write-скоупа для доменов нет.

Эндпойнты

Метод Путь Скоуп RBAC-право
GET /api/domains api:domains domain:list
GET /api/domains/{id} api:domains domain:read

Права есть у всех ролей. Видимость: ADMIN — все домены, остальные роли — домены своей команды. Чужой домен → 404.

Параметры списка GET /api/domains

Поля
Фильтры filter[...] domain, type, format, status, cf, team, user, isActive, tags
Сортировка sort domain, type, format, status, cf, team, isActive, expireDate, gsbCheck.error, virusCheck.error, created, updated
Populate по умолчанию registrator (name), cf (name, dnsRecords), user (name, email, avatar), team (name), campaigns (name, isActive), tags (name, color)
# активные домены для кампаний, ближайшие к истечению — первыми
curl -G 'https://adset.pro/api/domains' \
  -H 'Authorization: Bearer pat_…' \
  --data-urlencode 'pageSize=100' \
  --data-urlencode 'filter[type]=campaign' \
  --data-urlencode 'filter[status]=active' \
  --data-urlencode 'filter[isActive]=true' \
  --data-urlencode 'sort=expireDate:asc' \
  --data-urlencode 'select=domain,status,type,expireDate,campaigns'

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

Поле Тип Описание
id string ObjectId
domain string доменное имя
isActive boolean включён ли домен
type tracker | campaign | pwa | pending | free назначение: системный домен трекера; домен для кампаний; домен для PWA; ожидает назначения; свободен для покупки
status см. ниже этап жизненного цикла
format global | personal общий (системный) домен или домен команды
price number цена покупки с наценкой (для доменов из каталога)
registrator id | { id, name } аккаунт регистратора
cf id | объект аккаунт Cloudflare
cfZoneId, cfNsServers[] string, string[] зона и NS-серверы Cloudflare
dnsRecords[] объекты актуальные DNS-записи: { type, name, content, proxied, ttl, cfRecordId }
servingMode cf-saas | agent как обслуживается домен: через Cloudflare на edge платформы или через прокси-агент на сервере клиента
serverId, server id, объект | null привязанный сервер клиента (для agent)
customHostnameId, verificationTxt string | null данные подключения к Cloudflare SaaS
gsbCheck, virusCheck { lastCheck, error } результаты проверок Google Safe Browsing и антивируса; error заполнен, если домен помечен
healthCheck { lastCheck, error, consecutiveFails } доступность домена
registrationError string | null ошибка последней попытки регистрации
campaigns[] id[] | объекты кампании, использующие домен (у системных доменов пусто)
tags[] id[] | объекты теги
team, user id | объект | null команда и владелец
expireDate date дата окончания регистрации
created, updated date только чтение

Статусы status

Значение Смысл
pending ожидает регистрации
reserved зарезервирован для покупки
registration регистрируется: покупка и добавление в Cloudflare
registered зарегистрирован у регистратора, ожидает настройки Cloudflare
active полностью активен — можно использовать в кампаниях
transfer переносится на платформу
expired срок регистрации истёк
blocked заблокирован по результатам проверок (health / virus / Safe Browsing)
cancelled регистрация отменена
deleted удалён окончательно

Для кампаний используйте домены с type = campaign, status = active, isActive = true и пустым gsbCheck.error.

Пример ответа GET /api/domains/{id}:

{
  "data": {
    "id": "6650f0e1d2c3b4a5f6e7d8c9",
    "domain": "track-de.example.com",
    "isActive": true,
    "type": "campaign",
    "status": "active",
    "format": "personal",
    "price": 0,
    "registrator": "6600…",
    "cf": "6601…",
    "domainId": 0,
    "cfZoneId": "a1b2…",
    "cfNsServers": ["ns1.cloudflare.com", "ns2.cloudflare.com"],
    "dnsRecords": [ { "type": "A", "name": "@", "content": "203.0.113.10", "proxied": true, "ttl": 1, "cfRecordId": "f3e2…" } ],
    "customHostnameId": null,
    "servingMode": "cf-saas",
    "serverId": null,
    "server": null,
    "verificationTxt": null,
    "registrationError": null,
    "gsbCheck": { "lastCheck": "2026-10-13T06:00:00.000Z" },
    "virusCheck": { "lastCheck": "2026-10-13T06:00:00.000Z" },
    "healthCheck": { "lastCheck": "2026-10-13T09:55:00.000Z", "consecutiveFails": 0 },
    "campaigns": ["6704a1b2c3d4e5f6a7b8c9d0"],
    "tags": [],
    "team": "64b0…",
    "user": "64a0…",
    "expireDate": "2027-03-01T00:00:00.000Z",
    "created": "2026-03-01T10:00:00.000Z",
    "updated": "2026-10-13T09:55:00.000Z"
  },
  "traceId": "01HX…"
}

В карточке ссылки не разворачиваются (строковые id); в списке registrator, cf, user, team, campaigns, tags приходят объектами. Секреты аккаунтов регистратора и Cloudflare в ответах маскируются.

Что не входит в публичный API

Создание и правка доменов, мастер регистрации (/wizard/*), покупка (/buying-domains), перенос (/transfer), проверки (/check, /gsb-check), операции Cloudflare (/add-to-cf, /sync-dns, /purge-cache, /detach-cf), /free-list, удаление. Эти эндпойнты не имеют скоупа и не гарантируются для интеграций.

Ошибки

HTTP Когда
403 forbidden + Insufficient OAuth scope. Required: api:domains у токена нет скоупа api:domains
404 notFound домена нет или он принадлежит другой команде

Связанные статьи