> ## Documentation Index
> Fetch the complete documentation index at: https://docs.ss14.art/llms.txt
> Use this file to discover all available pages before exploring further.

# HTTP API сервера

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

По умолчанию этот HTTP API слушает тот же номер порта, что и игровой UDP-порт, но это можно изменить с помощью соответствующих [CVars](../general-development/tips/config-file-reference) `status.*`.

<Warning>
  Эта статья использует комментарии в JSON для упрощения описания. Это нестандартный JSON, он используется только для примера. Не используйте комментарии в JSON для реальных данных.
</Warning>

Контент может добавлять к этому свои API.

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

### `GET /status`

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

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

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

### `GET /info`

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

```json theme={null}
{
    "connect_addrees": "", // URI udp://, указывающий адрес UDP-подключения. Автоматически определяется как тот же порт, что и у 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"
    }
}
```

Подробнее об информации о сборке см. [Advanced Server Build Configuration](../general-development/setup/server-hosting-tutorial#server-build-configuration).

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

## API для Watchdog

Требует авторизации путём указания заголовка HTTP `WatchdogToken`, соответствующего CVar `watchdog.token` (автоматически устанавливается при использовании [watchdog](../server-hosting/setting-up-ss14-watchdog)).

### `POST /shutdown`

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

### `POST /update`

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

## Иконки информационных ссылок

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

* `discord`
* `forum`
* `github`
* `web`: Обычная иконка сайта
* `wiki`

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

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

### `18+`

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

### `lang:`

Указывает язык, используемый на вашем сервере, с помощью [тега языка IETF](https://en.wikipedia.org/wiki/IETF_language_tag). Примеры: `lang:en` для английского, `lang:ru` для русского и т.д.

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

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

### `rp:none`, `rp:low`, `rp:med`, `rp:high`

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

### `region:`

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

| Code            | 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`   | Луна (мемный вариант)       |

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

<img src="https://mintcdn.com/meowmew/ziQKzpWpMFQkx6ZJ/images/region_map_ss14.png?fit=max&auto=format&n=ziQKzpWpMFQkx6ZJ&q=85&s=3a376456a95f96c24af7e5d9ac0adfdb" alt="region_map_ss14.png" width="2754" height="1398" data-path="images/region_map_ss14.png" />

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

### `no_tag_infer`

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

## Определение тегов

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

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

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