RustMinerSystem

Документация

Обзор API и соглашения

Базовые URL, авторизация X-ACCESS-TOKEN, форматы ответов, включение и правила безопасности API RustMinerSystem.

Обзор API и соглашения

Этот раздел составлен по запросам нового frontend RustMinerSystem и контрактам backend API. Он охватывает администрирование mining proxy, режим Observer, групповое управление, WebSocket и встроенные endpoints PoolNode. Адреса, кошельки, credentials и IDs в примерах обезличены; источником истины остается запущенная версия.

Включение и схема credentials

В новом frontend уже есть готовая страница управления API credentials. Перед вызовом API:

  1. Установите ENABLE_CONTROL_API=1 в rust-config и перезапустите RustMinerSystem. При установке скриптом можно повторно запустить installer и выбрать «Включить API».
  2. Откройте «Настройки → API» в панели управления и получите либо создайте API Key.
  3. Используйте API Key для создания Access Token.
  4. Передавайте X-ACCESS-TOKEN в каждом запросе к открытому API.

Access Token действует примерно два часа. Создание нового Access Token немедленно делает предыдущий недействительным. Обновление API Key делает недействительными старый Key и все созданные с его помощью Access Token.

Фактические поля и форматы ответов зависят от запущенной версии RustMinerSystem.

Базовый URL

В адрес входит URL панели RustMinerSystem и ее safe route:

https://host:web-port/{safe-route}/api/...

Если панель открывается по https://miner.example.com/rms-admin/, список портов находится по адресу:

https://miner.example.com/rms-admin/api/ports

Без safe route API находится в корне сайта. Reverse proxy должен сохранять safe route и заголовок X-ACCESS-TOKEN.

Заголовок авторизации API

API использует официальный заголовок, указанный в frontend:

X-ACCESS-TOKEN: <Access Token>
Content-Type: application/json

Передавайте созданный Access Token непосредственно как значение X-ACCESS-TOKEN без дополнительного префикса.

Read-only запросы Observer используют отдельный credential:

X-OB-TOKEN: <Observer token>

Interceptor встроенного frontend также записывает нестандартный ContentType. Это внутренняя деталь UI; сторонние клиенты должны использовать стандартный Content-Type.

Ответы и ошибки

Endpoints mining proxy обычно возвращают объект, массив, строку или число непосредственно в body. Часть административных endpoints PoolNode использует envelope:

{
  "status": 0,
  "error": null,
  "data": {}
}
Состояние Значение
200 HTTP-запрос успешен; дополнительно проверьте результат операции или PoolNode status.
401 / 403 Access Token отсутствует, неверен, истек либо endpoint не принимает этот credential. Создайте новый Token и повторите запрос.
PoolNode status: 4 Проект PoolNode еще не активирован.

Причина ошибки может находиться в message, error или бизнес-поле status. HTTP 200 не всегда означает успешную бизнес-операцию.

Обозначения ответов:

Обозначение Значение
Foo Один JSON object, описанный как модель в этой главе.
Foo[] JSON array элементов Foo.
string / number Прямой scalar body без { data }.
«success scalar или HTTP 200» Frontend не зависит от body; после write выполните GET.
Envelope PoolNode { status, error, data }; читайте data только при status=0.

null в таблице — реальное отсутствие данных. Не преобразуйте его безусловно в ноль или пустую строку и разрешайте новые поля ответа.

Охват

Документация разделена на:

  • включение API, управление Key и Access Token и request headers;
  • dashboard, версии, срок хранения offline-записей и системные настройки;
  • proxy ports, lossless pumping и fee wallets;
  • workers, статистику кошельков, графики и логи;
  • web security, сертификаты и firewall;
  • read-only Observer;
  • fleet forwarding;
  • проекты, сайт, доход и subaccounts PoolNode;
  • WebSocket и обработку ошибок.

Рекомендации по безопасности

  • Публикуйте API только через HTTPS.
  • Не помещайте API, Observer или fleet credentials в URL, логи и снимки экрана.
  • Текущий frontend не предоставляет отдельные scopes или несколько credentials, поэтому считайте Access Token высокопривилегированным secret.
  • Создайте backup перед изменением портов, кошельков, allowlist, сертификатов и safe route.
  • Используйте connect/read/total timeout и ограниченный exponential backoff.
  • Если API не используется, установите ENABLE_CONTROL_API=0 и перезапустите программу.