Документация
API проекта и сайта PoolNode
Активация проекта, порты, endpoints, сайт, TLS, сертификаты, шаблоны и app configuration встроенного PoolNode.
API проекта и сайта PoolNode
Эти /api/poolnode/* endpoints вызываются административной панелью RustMinerSystem. Они отличаются от пользовательского API PoolNode /api/user/* и предназначены для владельца node.
PoolNode часто возвращает { status, error, data }. Frontend извлекает data и считает status: 4 признаком неактивированного проекта.
Заявка и активация проекта
| Метод | Путь | Body/назначение |
|---|---|---|
| GET | /api/poolnode/project/info |
Статус, имя и fee configuration проекта. |
| POST | /api/poolnode/project/apply |
Заявка { name, token }. |
| POST | /api/poolnode/project/active |
Активация { code, token, captcha_token }. |
| POST | /api/poolnode/project/unactive |
Деактивировать текущий проект. |
Деактивация очищает состояние проекта, fees и ports в frontend. Сначала сохраните settlement и website data.
Порты и endpoints node
| Метод | Путь | Назначение |
|---|---|---|
| GET | /api/poolnode/ports |
Получить порты PoolNode. |
| POST | /api/poolnode/port/new |
Создать порт на node servers. |
| POST | /api/poolnode/extra/{port} |
Изменить public mode и unified wallet listen port. |
| DELETE | /api/port/{id} |
Удалить node port через общий endpoint. |
| GET | /api/poolnode/endpoints |
Регионы/upstream endpoints. |
| GET | /api/poolnode/ping/{id} |
Измерить latency endpoint. |
| GET | /api/poolnode/project/stats?k={coin} |
Статистика одной node currency. |
| GET | /api/poolnode/sync/info |
Sync success, failure и details. |
Для некоторых монет к ping добавляется ?k=KAS. Пример создания:
{
"port": 3333,
"name": "Pool Port",
"currency": "PI-BTC",
"pool_address": "<JSON string с endpoint ID>",
"mode": 1,
"protocol": 0,
"category": "poolnode",
"proxy_addr": ""
}
Extra settings:
{
"mode": 1,
"proxy_addr": "<wallet или subaccount для public mode>"
}
Настройки сайта
| Метод | Путь | Запрос/назначение |
|---|---|---|
| GET | /api/poolnode/index/port |
Получить web port. |
| POST | /api/poolnode/index/port |
Изменить через { "r": 8080 }. |
| GET | /api/poolnode/route |
Получить safe route сайта. |
| POST | /api/poolnode/route |
Изменить через { "k": "route" }. |
| GET | /api/poolnode/enable/index |
Состояние public access. |
| POST | /api/poolnode/enable/index/{flag} |
Переключить public access; backend flag инвертирован относительно UI boolean. |
| GET | /api/poolnode/index/tls |
Состояние TLS. |
| POST | /api/poolnode/index/tls/{flag} |
Настроить TLS. |
Изменение порта, route и TLS может перезапустить service. Подготовьте новый URL заранее.
Сертификат сайта
| Метод | Путь | Назначение |
|---|---|---|
| GET | /api/poolnode/cert |
Получить тип текущего сертификата. |
| POST | /api/poolnode/cert/upload |
Загрузить PEM и private key сайта. |
| POST | /api/poolnode/cert/reset |
Восстановить встроенный сертификат. |
Body имеет вид { pem, key }; оба значения — Base64 от UTF-8 текста.
Branding и templates
| Метод | Путь | Назначение |
|---|---|---|
| GET | /api/poolnode/webconfig |
Получить name, logo, notice и branding. |
| POST | /api/poolnode/webconfig |
Сохранить website configuration. |
| GET | /api/poolnode/pool/asset/selected |
Текущий template. |
| GET | /api/poolnode/pool/assets |
Все доступные templates. |
| GET | /api/poolnode/pool/asset/status |
Статус загрузки template. |
| POST | /api/poolnode/pool/asset |
Выбрать template. |
| POST | /api/poolnode/pool/asset/reset |
Восстановить стандартный template. |
Website configuration передается как Base64 JSON:
{
"k": "<Base64(JSON.stringify(config))>"
}
Выбор template:
{
"asset_id": 1,
"item_id": 2
}
App communication
| Метод | Путь | Назначение |
|---|---|---|
| GET | /api/poolnode/project/url |
Получить app API URL, name и invitation code. |
| POST | /api/poolnode/project/url |
Сохранить app communication URL. |
{
"api_url": "https://pool.example.com/safe-route",
"refresh": 0
}
Полные модели ответов
PoolNode обычно использует:
{
"status": 0,
"error": null,
"data": {}
}
status=0 означает успех, status=4 — project не активирован, error содержит описание ошибки, data — бизнес-значение. Несколько переиспользованных endpoints proxy ports возвращают массивы или scalars напрямую.
Project
GET /api/poolnode/project/info возвращает в data:
| Поле | Тип | Значение |
|---|---|---|
cid |
number | ID project/customer. |
name |
string | Имя project. |
created_at |
string | Время создания. |
config |
array | Fee config по валютам. |
config[].coin |
string | Код валюты PoolNode. |
config[].email |
string | Revenue email; скрывайте его. |
config[].r |
string/number | Fee ratio как дробь 0–1. |
Apply и activate возвращают объекты business state. Unactivate возвращает success envelope и изменяет состояние project.
Endpoints, ports, statistics и sync
/api/poolnode/endpoints возвращает enveloped Endpoint[]; в каждом есть id, coin, name, nullable url. pool_address при create port — не hostname: выберите endpoint с совпадающим coin и отправьте JSON.stringify(endpoint.id). Ping использует тот же id и возвращает latency в миллисекундах в data.
/api/poolnode/ports возвращает port rows напрямую. server соответствует общей модели порта; в pool_address находится строка endpoint ID. Node stat содержит port, online, conn, offline, delay, coin. Create возвращает ID или success scalar; после edit/delete обновите список.
/api/poolnode/project/stats?k={coin} возвращает { hashrate, hashrate1440, online, conn }; первые три могут быть null.
/api/poolnode/sync/info возвращает:
{
"summary": { "sc": 0, "fl": 0, "ty": 0, "lt": "..." },
"details": [
{ "sc": 1, "fl": 0, "ty": 0, "lt": "..." }
]
}
sc — success count/flag, fl — failure count, ty — sync type, lt — последнее время sync.
Web, TLS и certificate state
GET возвращают enveloped values: index/port — number, route — string, enable/index, index/tls, cert — number. Frontend считает enable/index.data=0 включенным public access, а cert.data=0 — встроенным сертификатом. Writes возвращают status=0; изменения port, route, TLS и certificate могут перезапустить сайт.
Site config и templates
webconfig.data — Base64 JSON string с совместимостью с прямым объектом. После decode frontend считает logo, title, title1, title2, rotate, title3, bottom, fee строками.
pool/asset/selected.data — массив, первые два значения которого являются asset_id и item_id; разрешайте дополнительные status values. pool/asset/status.data — { is_downloading: number }.
Каждая запись pool/assets.data содержит:
| Поле | Тип | Значение |
|---|---|---|
id |
number | ID template asset. |
cid |
number | ID project/category. |
theme |
string | Имя template. |
cover |
string | URL preview. |
uid |
number/null | ID publisher. |
created_at / updated_at |
string | Timestamps. |
items |
array | Доступные версии. |
items[].id |
number | ID version item. |
items[].version |
string | Версия. |
items[].zip_url |
string/null | Download URL, который может быть закрыт. |
Выбирайте asset_id и item_id из одного template. Select/reset успешны только при data="Ok".
App config
GET возвращает { invite_code, name, url } напрямую или в data. invite_code может быть числом; преобразуйте в строку для отображения. После POST повторите GET для canonical url.
