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.jsonOpenAPI 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 обоих направлений без переноса ролей. Платёжные кассы отключены.