WEB API

API позволяет получить информацию с серверов, а так же отправить сигналы из вне.
Убедитесь, что web-сервер включен в настройках Skcrew вашего прокси сервера.

web-server-enabled: true
web-server-port: 1338
web-server-user: admin
web-server-password: admin

Тут вы так же можете конфигурировать порт web-сервера и данные для авторизации, чтобы получить доступ к API.
Авторизация происходит путем передачи логина и пароля в base64 в заголовке запроса:

Authorization: Basic base64_encode("login:password")
curl localhost:1338/players -H "Authorization: Basic YWRtaW46YWRtaW4="

Доступные маршруты для запросов.

GET    /players

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

  • server:string - позволяет получить игроков с определенных серверов

curl localhost:1338/players -H "Authorization: Basic YWRtaW46YWRtaW4="
{
  "data": [
    {
      "name": "Lotzy",
      "uuid": "a0970e26-b9f4-3f73-bd06-ede16c390d34",
      "join_date": 1706008310,
      "time_played": 1089,
      "server_name": "lobby"
    }
  ]
}

GET    /players/{UUID/NICKNAME}

Позволяет получить игрока, если он онлайн, по его нику или UUID. А также сервер целиком, на котором он находится.

curl localhost:1338/players/Lotzy -H "Authorization: Basic YWRtaW46YWRtaW4="
{
  "data": {
    "name": "Lotzy",
    "uuid": "a0970e26-b9f4-3f73-bd06-ede16c390d34",
    "join_date": 1706008310,
    "time_played": 2335,
    "server_name": "lobby",
    "server": {
      "name": "lobby",
      "address": "127.0.0.1",
      "port": 25565,
      "hostname": "127.0.0.1",
      "online": true,
      "connection_date": 1706008017,
      "uptime": 2628,
      "players_count": 1,
      "players": [
        {
          "name": "Lotzy",
          "uuid": "a0970e26-b9f4-3f73-bd06-ede16c390d34",
          "join_date": 1706008310,
          "time_played": 2335,
          "server_name": "lobby"
        }
      ]
    }
  }
}

GET  POST    /players/{UUID/NICKNAME}/kick

Позволяет кикнуть игрока с прокси сервера, по его нику или UUID.
При использовании POST запроса можно указать причину кика. Причина может быть указана как обычным текстом, так и компонентом AdventureAPI ( Velocity ) или ChatComponentAPI ( Bungeecord ) в формате JSON.

curl localhost:1338/players/Lotzy/kick -X POST -H "Authorization: Basic YWRtaW46YWRtaW4=" -H "Content-Type: application/json" -d '"GO OUT FROM SERVER"'
{ 
  "data":
    "Player Lotzy kicked"
}

GET    /players/{UUID/NICKNAME}/connect/{SERVER}

Позволяет переместить игрока на другой сервер, по его нику или UUID.

curl localhost:1338/players/Lotzy/connect/lobby -H "Authorization: Basic YWRtaW46YWRtaW4="
{ 
  "data":
    "Player Lotzy connected to server lobby"
}

GET    /servers

Получить список всех серверов и игроков на них.
Возможные параметры:

  • online:boolean - позволяет получить только те сервера, которые включены

curl localhost:1338/servers?online=true -H "Authorization: Basic YWRtaW46YWRtaW4="
{
  "data": [
    {
      "name": "lobby",
      "address": "127.0.0.1",
      "port": 25565,
      "hostname": "127.0.0.1",
      "online": true,
      "connection_date": 1706008017,
      "uptime": 2132,
      "players_count": 1,
      "players": [
        {
          "name": "Lotzy",
          "uuid": "a0970e26-b9f4-3f73-bd06-ede16c390d34",
          "join_date": 1706008310,
          "time_played": 1839,
          "server_name": "lobby"
        }
      ]
    }
  ]
}

POST    /servers/{SERVER}/signal

Позволяет отправить сигнал на подключенный сервер.
В теле запроса передается сам сигнал.

curl localhost:1338/servers/lobby/signal -X POST -H "Authorization: Basic YWRtaW46YWRtaW4=" -H "Content-Type: application/json" -d "{'signals':[{'key':'broadcast','data':['Hello world!']}]}"
{ 
  "data": {
    "response": "Signals successfully sended to servers" 
  } 
}

POST    /signal

Позволяет отправить сигнал на подключенные сервера.
В теле запроса передается сам сигнал и список серверов.

curl localhost:1338/servers/lobby/signal -X POST -H "Authorization: Basic YWRtaW46YWRtaW4=" -H "Content-Type: application/json" -d "{'servers':['lobby'],'signals':[{'key':'broadcast','data':['Hello world!']}]}"
{ 
  "data": {
    "response": "Signals successfully sended to servers" 
  } 
}

Пример реализации доступа к API на языке Python вы можете посмотреть по этой ссылке