Admin API: лицензия, копии и обновления
Метод Admin API для чтения состояния лицензии и список методов установки, которые работают только из панели под владельцем.
В группе девять методов: лицензия, резервные копии, обновления и база IP2Proxy. По API-токену доступен один — чтение состояния лицензии. Остальные восемь работают только из панели под владельцем установки. Авторизация описана на странице Admin API: обзор и авторизация, формат ответов и ошибок — на странице Формат запросов, ответов и ошибок.
Методы
Получить состояние лицензии
GET /api/v1/licenseВозвращает состояние лицензии установки: активна ли она, вид, срок и время последней проверки. Те же данные панель показывает во вкладке Настройки → Лицензия.
Права токена: full. Параметров пути, запроса и тела нет.
Метод отвечает и при неактивной лицензии, когда остальные методы возвращают 402. По нему интеграция отличает закрытый доступ от сбоя — см. Истёкшая лицензия.
Ответ — код 200 и объект:
| Поле | Тип | Описание |
|---|---|---|
license | объект | Состояние лицензии, поля — в следующей таблице |
spend_allowed | логическое | true, если доступно расширение для расходов: лицензия активна и платная. В состоянии unmanaged тоже true |
server_time | число | Время сервера трекера, секунды Unix. Сравнивайте с ним expires_at и lease_until |
operator | логическое | Для запроса с токеном всегда false |
held_deliveries | число | Для запроса с токеном всегда 0. Число событий, ожидающих продления, видно только владельцу установки в панели |
Поля объекта license:
| Поле | Тип | Всегда есть | Описание |
|---|---|---|---|
active | логическое | да | true — панель и API открыты. false — защищённые методы отвечают 402 |
state | строка | да | Состояние, значения — в разделе Значения state |
required | логическое | да | true, если установке нужна лицензия |
configured | логическое | да | true, если в установке задан сервис лицензий |
kind | строка | нет | Вид лицензии: trial — пробная, paid — платная |
expires_at | число | нет | Окончание оплаченного или пробного периода, секунды Unix. В панели — Оплачено / пробный период до |
lease_until | число | нет | До какого времени действует текущее подтверждение, секунды Unix. В панели — Работа без связи с сервисом до |
last_checked | строка, дата RFC 3339 | нет | Время последнего обращения к сервису лицензий |
last_error | строка | нет | Текст последней ошибки проверки. Сообщения разобраны на странице Подтверждение лицензии |
Необязательные поля в ответе отсутствуют, пока значения нет: kind, expires_at и lease_until — пока лицензия не активирована, а также в состояниях unmanaged, unconfigured, clock_error и invalid_certificate; last_checked — пока трекер не обращался к сервису лицензий; last_error — пока проверки проходят без ошибок.
Идентификатор установки и окончание ключа лицензии по токену не отдаются.
Ошибки: своих кодов у метода нет. Токен с доступом Сводные отчёты или Расходы расширения получит 403 с кодом token_scope.
Пример запроса:
curl https://panel.example.com/api/v1/license \
-H "Api-Key: <токен>"Пример ответа при активной платной лицензии:
{
"license": {
"required": true,
"configured": true,
"active": true,
"state": "active",
"kind": "paid",
"expires_at": 1793664000,
"lease_until": 1791113400,
"last_checked": "2026-10-04T11:20:14.512334Z"
},
"held_deliveries": 0,
"operator": false,
"spend_allowed": true,
"server_time": 1791112814
}Пример ответа после окончания срока:
{
"license": {
"required": true,
"configured": true,
"active": false,
"state": "expired",
"kind": "paid",
"expires_at": 1791072000,
"lease_until": 1791072000,
"last_checked": "2026-10-04T11:20:14.512334Z"
},
"held_deliveries": 0,
"operator": false,
"spend_allowed": false,
"server_time": 1791112814
}Значения state
state | active | Состояние в панели | Когда |
|---|---|---|---|
active | true | «Лицензия активна» | Подтверждение действует, срок не вышел |
activation_required | false | «Требуется активация» | Ключ ещё не активирован |
verification_required | false | «Нужно подтвердить лицензию» | Наступило время lease_until, новое подтверждение не получено |
expired | false | «Срок лицензии закончился» | Наступило время expires_at |
denied | false | «Лицензия недоступна» | Сервис лицензий ответил отказом |
invalid_certificate | false | «Проверка лицензии не пройдена» | Сохранённое подтверждение не подходит этой установке или домену панели |
clock_error | false | «Проверьте время на сервере» | Время на сервере переведено назад |
unconfigured | false | «Сервис лицензий не настроен» | В установке не задан сервис лицензий или домен панели |
unmanaged | true | «Лицензирование ещё не подключено» | Сборка без обязательной лицензии, required равно false |
Что делать в каждом состоянии — на страницах Подтверждение лицензии и связь с сервисом и Истечение лицензии. Трафик и приём конверсий продолжаются при любом значении state.
Проверяйте в интеграции поле active, а не только срок: доступ закрывается и при отказе сервиса лицензий, и при потере подтверждения, хотя expires_at ещё не наступил.
Методы владельца установки
Эти восемь методов по API-токену не работают при любом виде доступа. Токену Полный доступ они отвечают 403 с кодом forbidden:
| Метод | Назначение | message в ответе | Где выполнить в панели |
|---|---|---|---|
POST /api/v1/license/activate | Активировать ключ или проверить продление | Лицензию меняет только владелец установки | Получение ключа и активация |
GET /api/v1/backups, POST /api/v1/backups | Резервные копии и восстановление | Резервные копии доступны только владельцу установки | Резервные копии |
GET /api/v1/updates, POST /api/v1/updates | Обновление трекера | Обновления доступны только владельцу установки | Обновление трекера из панели |
GET /api/v1/ip2proxy, PUT /api/v1/ip2proxy, POST /api/v1/ip2proxy/update | Ключ, пакет и обновление базы IP2Proxy | База IP2Proxy доступна владельцу установки | IP2Proxy |
Пример ответа:
curl -i https://panel.example.com/api/v1/backups \
-H "Api-Key: <токен>"{"code": "forbidden", "message": "Резервные копии доступны только владельцу установки"}Токены с доступом Сводные отчёты и Расходы расширения получают на эти методы 403 с кодом token_scope. При неактивной лицензии методы копий, обновлений и IP2Proxy отвечают 402 с кодом license_required.
На POST /api/v1/license/activate, PUT /api/v1/ip2proxy и POST /api/v1/ip2proxy/update действует общий предел: 10 запросов в минуту с одного IP. Сверх него ответ — 429 с кодом rate_limited.
Почему эти методы закрыты для токена
Лицензия, копии, обновления и база IP2Proxy относятся ко всей установке на сервере, а не к данным одной команды. Поэтому трекер принимает такие запросы только при трёх условиях одновременно:
- запрос идёт из панели после входа по логину и паролю, а не по заголовку
Api-Key; - вошёл владелец установки — учётная запись владельца, созданная в мастере первого запуска;
- это собственный сеанс владельца, а не вход под пользователем.
Токен работает от имени своего создателя, но его права на установку не получает — даже если токен создал сам владелец установки. Другие владельцы и администраторы команды в панели получают на эти методы тот же ответ 403.
Из методов этой группы автоматизировать можно только наблюдение: запрашивайте GET /api/v1/license и следите за active, state и expires_at. Продление, копии и обновления выполняйте в панели.