/config/publish

Метод принимает игровой конфиг от CI и регистрирует его под именем ветки, из которой собрана эта сборка.

Клиент той же сборки запрашивает это имя в /config/version и скачивает именно этот файл. Сборка другой ветки спрашивает своё имя и получает свою строку, даже если байты файла совпали.

Адрес метода

/config/publish

Не требует сессию пользователя

Метод вызывает CI, у которого нет игрока. Вместо сессии проверяется общий секрет.

Авторизация вызова

Секрет передаётся в заголовке X-Config-Publish-Secret и сверяется со значением config_publish_secret из настроек админ-панели («Конфиг» → «Секрет публикации конфига»).

Если настройка пуста, метод закрыт: пустой секрет не совпадает ни с чем, включая отсутствующий заголовок.

Параметры

Параметр Обязательный Тип Описание
version ДА string Имя ветки, 1–191 символ. Это лейбл строки config_version, его же клиент передаёт в /config/version и в config_version при авторизации
file ДА string Сырые байты .cdb, закодированные в base64. Хеш версии считается по этим байтам, до кодирования
activate НЕТ int 1 — перевести строку в active. Без этого новая версия остаётся draft и на production не резолвится. По умолчанию 0
set_default НЕТ int 1 — сделать строку версией по умолчанию этого сервера. Строка должна быть active, поэтому вместе с первым публикационным вызовом передаётся и activate=1. По умолчанию 0

file читается из JSON-тела целиком и в таблицу маршрута не входит: строковый параметр маршрута ограничен 250 символами.

Результат

{
    "response": {
        "version": "feature/energy-fix",
        "revision": 1,
        "hash": "0123456789abcdef0123456789abcdef",
        "status": "active",
        "url": "https://cdn.example/0123456789abcdef0123456789abcdef.cdb",
        "unchanged": 0,
        "reimport": 0
    }
}
Поле Тип Описание
version string Лейбл, под которым строка сохранена
revision int Номер ревизии. Повтор тех же байт его не увеличивает
hash string md5 сырых байт файла
status string draft, active или archived
url string Адрес скачивания {config_storage_url}/{hash}.cdb
unchanged int 1, если эти байты уже были импортированы под этим лейблом. Ревизия не менялась. activate и set_default при этом всё равно применяются
reimport int 1, если лейбл уже существовал и содержимое файла изменилось

Поведение

Новый лейбл создаётся как draft, если activate не передан. Повтор того же файла под другим лейблом создаёт вторую версию с тем же hash.

Архивная строка с activate=1 снова становится active и получает новое содержимое, если файл изменился. Без activate реимпорт в архив отклоняется.

Ошибки

Неверный или отсутствующий секрет — 10403 Permission denied.

Нет file, это не base64 или не JSON конфига — 10002 с именем file. Лейбл длиннее 191 символа — 10002 с именем version.

Отказ импорта (архив без activate, set_default без активной строки) — 10405, причина в поле details.