NEXT BOOST · контракт интеграции · 26 октября 2026 · версия 2
Избранное, GameMenu, цвет и единый вход
Сайт мониторинга: next-boost.ru. Конструктор: build.next-boost.ru. Игровые списки и обновления: ms.next-boost.ru. Первый выпуск услуг мастера работает с CS 1.6.
1. Семь независимых услуг
| Ключ | Поведение |
|---|
| befirst | «Будь первым»: приоритет в Интернете, pinned=true. Закрепление сохраняется при сортировке клиентом; внутри закреплённых строк сохранять порядок position. |
| top / boost / vip | Следующие уровни каталога в этом порядке. BOOST — очередь кругов. Эти услуги сами по себе не дают избранное или GameMenu. |
| favorites | До трёх одновременно продвигаемых серверов в общем избранном мастера. Место учитывает активную услугу и резерв покупки. Это глобальный лимит CS 1.6, а не три сервера на каждый аккаунт. |
| gamemenu | Отдельный список кнопок подключения в главном меню игры. Больше не является источником избранного. |
| color | Цвет строки сервера. Не меняет ранг и не добавляет сервер в другие списки. Передаётся во всех списках, в которых сервер присутствует по своим услугам. |
Администратор выдаёт услуги через «Серверы → карточка → Услуги → Выдать услугу», указывает срок, цвет при необходимости и причину. Выдача работает без владельца и при закрытых продажах. Цена новой услуги не придумана автоматически: перед открытием публичной продажи владелец задаёт сроки и цены в настройках услуг. Лимит избранного нельзя увеличить выше трёх.
Закрытие продаж не останавливает уже выданную услугу. Для прекращения используется «Остановить». Блокировка, архив и карантин исключают сервер из экспорта.
2. Получение списков клиентом
GET https://ms.next-boost.ru/v2/capabilities
GET https://ms.next-boost.ru/v2/lists/internet
GET https://ms.next-boost.ru/v2/lists/favorites
GET https://ms.next-boost.ru/v2/lists/gamemenu
GET https://ms.next-boost.ru/v2/lists/project?build=UUID_СБОРКИ
Ключ авторизации для этих публичных GET не нужен. Параметр build сохраняйте из backend.json установленной сборки; также поддерживаются source=UUID и прежние адреса профилей. Профиль с отключённым наследованием не получает общую рекламу. Личные профили сохраняют свои закрепления и избранные; до трёх оплаченных общих избранных могут добавляться при включённом наследовании. Явное исключение адреса в профиле сохраняется.
{
"version": 2, "list": "internet", "count": 1,
"servers": [{
"address": "203.0.113.21:27015", "name": "Пример сервера",
"country": "RU", "game_mode": "classic", "position": 0,
"pinned": true, "service_tier": "befirst", "highlight_color": "#ff996b",
"promotion": {
"tier": "befirst", "priorityUntil": "2026-11-02T12:00:00Z",
"color": "#ff996b", "colorUntil": "2026-11-02T12:00:00Z",
"favoritesUntil": "2026-11-02T12:00:00Z",
"gameMenuUntil": "2026-11-02T12:00:00Z",
"validUntil": "2026-10-26T12:05:00Z"
}
}]
}
Адрес в примере зарезервирован для документации. Даты UTC. Неизвестные поля игнорируйте. Отсутствующий цвет означает стандартное оформление. Допустим только ^#[0-9a-f]{6}$; это RGB, без CSS, HTML и прозрачности. Преобразование в RGBA клиента: R/G/B из пар hex, A=255. Контраст текста и фокус клавиатуры сохранять.
Опрос списка — примерно раз в минуту, когда игра активна; поддерживайте ETag/If-None-Match и 304. При сетевой ошибке сохраните последний каталог, но после validUntil снимайте рекламный цвет/закрепление, скрывайте рекламное избранное и GameMenu. Обычный Интернет и личное избранное сохраняйте. Мастер также снимает истёкшие признаки с задержкой до 15 секунд плюс цикл обновления снимка. Нормальная синхронизация сайта и мастера занимает до двух минут.
3. Избранное без «вечных» рекламных записей
Храните отдельно: личное избранное, добавленное игроком; личный список профиля сборки; временное рекламное избранное. Итоговый показ — объединение по каноническому адресу. При завершении услуги удаляйте только временную запись. Если игрок добавил тот же адрес вручную, он остаётся. Нельзя безусловно записывать оплаченные записи в постоянный Steam Favorites/VDF: иначе они останутся после завершения услуги.
Старые протоколы /gc, /lists/internet, /lists/favorites и GET с JSON-телом продолжают работать. Цвет и сроки читаются из v2. Обновлятор, ключи шифрования, манифесты и подписанные события сборок не меняются. Новый GameMenu получается отдельным GET выше.
4. Как подключить GameMenu
Сейчас подготовлен серверный список; существующая сборка клиента не получает новое динамическое меню автоматически. При адаптации launcher/GameUI загрузите /v2/lists/gamemenu?build=…, проверьте IPv4 и порт 1–65535, очистите управляющие символы в названии и сформируйте кнопки подключения. Не исполняйте произвольную команду из ответа сервера: формируйте connect только из проверенного адреса.
Для классического меню пример записи в cstrike/resource/GameMenu.res:
"GameMenu"
{
// Остальные штатные пункты сохраняются.
"90"
{
"label" "Пример сервера"
"command" "engine connect 203.0.113.21:27015"
}
}
Это пример для будущего генератора, а не файл для замены всего меню. Генератор экранирует кавычки/обратные слеши, пишет временный файл и атомарно заменяет только управляемый блок, сохраняя резервную копию исходного меню. После завершения услуги убирает свой блок. В современном web-меню создавайте компонент кнопки вместо изменения GameMenu.res. Цвет списка не равен цвету классического GameMenu: для цветных кнопок нужна поддержка рендера GameUI/web-меню.
5. Общий вход мониторинга и конструктора
Используется двусторонний вход SSO. Существующий пользователь входит в оба своих аккаунта и один раз подтверждает связь в «Кабинет мониторинга → Настройки → Связать аккаунт конструктора». После этого кнопки «Войти через конструктор» и «Войти через NEXT BOOST» открывают связанный профиль без повторного ввода пароля.
Мониторинг: /sso/start?purpose=link — подтверждение связи
Мониторинг: /sso/start — вход через конструктор
Конструктор: /sso/start — вход через мониторинг
На обоих: /sso/authorize → /sso/callback; серверный POST /sso/exchange
Каждый сайт выдаёт собственную HttpOnly Secure cookie. Код одноразовый, 60 секунд; PKCE S256, state, точный список callback и подписанный серверный обмен. HMAC-ключ хранится только на серверах. Не кладите его, экспортный ключ или пароли пользователей в клиент/JavaScript. Совпадение email не связывает аккаунты автоматически. Пароли, баланс, владение сборками и административные права сохраняются в своих системах. Это общий способ входа для подтверждённой пары аккаунтов; общая таблица паролей и автоматическое создание второго профиля в этот выпуск не входят. Выход завершает сеанс текущего сайта; отвязка останавливает будущий SSO, существующие отдельные сеансы отзываются средствами каждого сайта.
Для настольного клиента открывайте веб-вход системным браузером; не копируйте cookie между доменами. Отдельный OAuth/device-flow для native-приложения этим мостом не предоставляется. До его появления API-ключи мониторинга создаются пользователем в кабинете с минимальными областями доступа.
6. Новая структура сайта и обмен с мастером
| Адрес | Назначение |
|---|
| /api/v1/openapi.json | OpenAPI 3.1 мониторинга. |
| /api/v1/servers, /api/v1/servers/{UUID} | Каталог, поиск и карточка; даты UTC, деньги строками. Игровые обращения направлять мастеру. |
| /api/v1/services, /quotes, /orders/balance | Услуги, расчёт цены и покупка с балансом. Для записи нужны сеанс/CSRF или разрешённый API-ключ; финансовые запросы с ключом идемпотентности. |
| /cabinet/servers/, /cabinet/services/, /cabinet/settings/ | Владение сервером, услуги и связь аккаунтов. |
| /admin/, /admin_ms/ | Админка мониторинга и отдельная панель мастера. Права независимы. |
Закрытый источник мастера остаётся GET https://next-boost.ru/ms/csbuild-export.php?mode=lists с заголовком X-CSBuild-Key. Формат schemaVersion=2: generatedAt, internet, favorites, gamemenu, random. Старые числовые ID мониторинга сохранены как соответствия; новые публичные ID UUID. Чужие игры в мастер CS 1.6 не экспортируются. Пустой/невалидный источник не заменяет последний рабочий каталог. Списки и статистика читают снимки PostgreSQL; веб-запросы не опрашивают игровые UDP-адреса.
Приёмка адаптации клиента: три одновременных избранных; четвёртая выдача отклонена; GameMenu отдельно; цвет без приоритета; befirst при смене сортировки; прекращение каждого вида услуги; сохранение личного избранного; offline/ошибка/304; профиль с наследованием и без; SSO обоих направлений без переноса ролей. Платёжные кассы отключены.