Публичный REST API
Серверный API для управления магазином из своих сервисов и ботов: товары, скидки, баланс игроков. Базовый адрес — твой магазин (как открывается витрина: https://твой-адрес.rustbase.shop или свой домен).
- Тело POST-запросов — JSON.
- Штатные ответы возвращают
{ "result": "success", ... }, ошибки —{ "result": "fail", "message": "…" }.
Авторизация
Передавай в каждом запросе два заголовка:
| Заголовок | Значение |
|---|---|
X-Store-Id | ID магазина (storeId) — в панели рядом с API-ключом |
X-Store-Key | Секретный ключ магазина (тот же API-ключ плагина) |
http
GET /api/v1/products.list
X-Store-Id: 42
X-Store-Key: sb_xxxxxxxxxxxxxxxxxxxxxxxxНеверная пара — 401.
Товары
Список товаров
http
GET /api/v1/products.listПример ответа:
json
{
"result": "success",
"data": [
{
"id": 123, "name": "VIP на 30 дней", "category": "Привилегии",
"type": "command", "price": 199, "discount": 10, "priceFinal": 179.1,
"blockUntil": null, "enabled": true
}
]
}Включить / выключить товары
http
POST /api/v1/products.setEnabled
{ "productIds": [123, 124], "enabled": false }Установить скидку (0–90 %)
http
POST /api/v1/products.setDiscount
{ "productIds": [123], "discount": 15 }Дата блокировки (скрыть до даты)
http
POST /api/v1/products.setBlockDate
{ "productIds": [123], "blockDate": "2026-12-10 00:00" }Снять блокировку — "blockDate": null.
Игроки
Получить баланс
http
GET /api/v1/players.balance?steamId=76561197960279927json
{ "result": "success", "data": { "steamId": "76561197960279927", "balance": 837.48 } }Если игрока нет в магазине — 404 с "playerNotFound": true.
Изменить баланс
http
POST /api/v1/players.balance.change
{ "steamId": "76561197960279927", "amount": 100, "operation": "plus", "message": "Награда за ивент" }| Параметр | Описание |
|---|---|
steamId | SteamID64 игрока |
amount | Сумма в рублях (> 0) |
operation | plus (начислить) или minus (списать) |
message | Комментарий (попадёт в историю игрока) |
json
{ "result": "success", "message": "Баланс изменён", "data": { "steamId": "...", "balance": 937.48 } }Все операции с балансом пишутся в историю игрока (аудит). Списание ниже нуля запрещено — вернётся ошибка insufficient_funds.
Для изменения баланса прямо с игрового сервера используй API плагина — не нужно хранить ключ магазина во внешнем сервисе.