HTTP API сервера

У сервера есть встроенный HTTP API для получения статуса и отправки команд удалённо. Здесь описывается этот API.

По умолчанию этот HTTP API слушает на том же номере порта, что и игровой UDP-порт, но это можно изменить с помощью соответствующих status.* CVar.

Warning

В этой статье используются комментарии в JSON, чтобы упростить описание вещей. Это не стандартный JSON, и они приведены здесь лишь для примера. Не помещайте комментарии в JSON для реальных данных.

Контент может добавить сюда больше API.

Публичный API (авторизация не требуется)

GET /status

Получает базовую информацию о статусе сервера в формате JSON, используется для отображения статуса в лаунчере SS14. Движок автоматически предоставляет следующую информацию:

// Примечание: комментарии обычно недопустимы в JSON, но так удобно аннотировать вещи здесь.
{ 
    "name": "MyServer", // Имя сервера
    "players": 5, // Количество игроков на сервере
    "soft_max_players": 10, // Необязательно, максимальное количество игроков на сервере.
    "tags": ["rp:low"], // Необязательно, массив тегов (стандартные значения см. ниже)
}

Контент может редактировать эту информацию по своему желанию.

GET /info

Более подробная информация о сервере в формате JSON, которая в основном необходима при подключении к серверу (для загрузки ресурсов и некоторых других вещей).

{
  	"connect_addrees": "", // udp:// URI, задающий адрес UDP-подключения. Если не указан, автоматически предполагается тот же порт, что и у status API.
    "auth": {
  			"mode": "Required", // Режим аутентификации. Может быть одним из "Optional", "Required", "Disabled"
        "public_key": "", // Публичный ключ шифрования сервера, используемый при аутентификации. Использует API "sealed box" из libsodium.
    },
    "build": { // Информация о сборке для загрузки. См. ниже.
    },
    "desc": "My amazing server", // Необязательно, общее описание сервера, отображаемое в карточке в лаунчере.
    "links": [ // Набор ссылок для показа в лаунчере для этого сервера.
        {
            "name": "Discord", // Имя кнопки, отображаемой в лаунчере.
            "icon": "discord", // Иконка для использования для этой кнопки, можно опустить. Допустимые имена иконок см. ниже.
            "url": "https://discord.gg/abcdef" // Ссылка, которую открывает эта кнопка при нажатии. Должна быть http:// или https://
        }
    ],
    // Необязательно, задаёт информацию о политике конфиденциальности, с которой должны согласиться игроки.
    "privacy_policy": {
        // Ссылка, содержащая политику конфиденциальности, доступная через веб-браузер.
        "link": "https://example.com/privacy",
        // Идентификатор, который будет сохранён лаунчером при принятии.
        // ЭТО ДОЛЖНО БЫТЬ УНИКАЛЬНЫМ ДЛЯ КАЖДОГО СООБЩЕСТВА СЕРВЕРА. НЕ ПРОСТО КОПИРУЙТЕ ЭТО У КОГО-ТО ДРУГОГО.
        "identifier": "example",
        // "Версия" политики конфиденциальности. Это следует менять, если политика конфиденциальности сервера была обновлена.
        "version": "example"
    }
}

Подробности о информации о сборке см. в Расширенной конфигурации сборки сервера.

Контент также может редактировать это по своему желанию.

Watchdog API

Требует авторизации путём указания HTTP-заголовка WatchdogToken, совпадающего с CVar watchdog.token (автоматически задаётся при использовании watchdog).

POST /shutdown

Даёт серверу команду немедленно корректно завершить работу.

POST /update

Сообщает серверу, что доступно обновление и что ему следует автоматически завершить работу как можно скорее, чтобы можно было применить обновление. Для SS14 это означает, что сервер перезапустится, когда завершится текущий раунд.

Иконки ссылок в info

Это допустимые иконки для links в API info:

  • discord
  • forum
  • github
  • web: Общая иконка веб-сайта
  • wiki

Стандартные теги

Это стандартные понимаемые теги для поля tags в данных статуса. Лаунчер поддерживает фильтрацию и другое поведение на основе этих тегов.

18+

Ваш сервер содержит контент 18+.

lang:

Описывает язык, используемый на вашем сервере, с помощью языкового тега IETF. Примеры: lang:en для английского, lang:ru для русского и т. д.

Вы можете иметь несколько таких тегов, чтобы указать несколько языков, если по какой-то причине вам нужен многоязычный сервер?

Вы можете указать более детальный языковой тег IETF, например en-US, но лаунчер сейчас будет смотреть только на основной тег (например, en).

rp:none, rp:low, rp:med, rp:high

Указывает уровень RP (ролевой игры), ожидаемый на вашем сервере. Это очень субъективно.

region:

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

КодРегион
region:eu_wЗападная Европа
region:eu_eВосточная Европа
region:ataАнтарктида (шутливая опция)
region:grlГренландия (шутливая опция)
region:am_n_wСеверная Америка, Запад
region:am_n_cСеверная Америка, Центр
region:am_n_eСеверная Америка, Восток
region:am_cЦентральная Америка
region:am_s_sЮжная Америка, Юг
region:am_s_eЮжная Америка, Восток
region:am_s_wЮжная Америка, Запад
region:af_nСеверная Африка
region:af_cЦентральная Африка
region:af_sЮжная Африка
region:meБлижний Восток
region:as_nСеверная Азия
region:as_seЮго-Восточная Азия
region:as_eВосточная Азия
region:indИндия
region:oceОкеания
region:lunaЛуна (шутливая опция)

См. эту карту для примерного ориентира, что где находится:

region_map_ss14.png

Если для вашего региона нет хорошего подходящего варианта, дайте нам знать!

no_tag_infer

Останавливает автоматический вывод тегов, см. ниже.

Вывод тегов

Некоторые теги хаба автоматически выводятся лаунчером на основе имени сервера. В основном это предназначено для предоставления некоторых фильтров, пока все серверы не заполнят их вручную, поэтому если вы читаете это как хост сервера, просто заполните свои теги вручную, и вы можете это игнорировать. Правила следующие:

  • Если вы укажете no_tag_infer, вывод тегов вообще не выполняется.
  • [18+] или [+18] автоматически добавляет тег 18+.
  • [NRP/LRP/MRP/HRP] автоматически добавляет соответствующий уровень ролевой игры в качестве тега, если у вас вообще нет явного тега ролевой игры.
  • [EN] и [RU] добавляют английский и русский как тег соответственно, если у вас вообще нет явного языкового тега.

Мы не будем добавлять дополнительные правила (например, определение других языков) в это. Помечайте свой сервер вручную.

Subpages