Домены
Домены — адреса, на которых работают трекинговые ссылки кампаний и 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 |
домена нет или он принадлежит другой команде |
Связанные статьи
- Кампании — поле
domainкампании - Домены — регистрация, парковка, покупка в кабинете
- Публичное HTTP API — токены, скоупы, формат ошибок
