rustbase.shop Документация
Панель ↗

Публичный REST API

Серверный API для управления магазином из своих сервисов и ботов: товары, скидки, баланс игроков. Базовый адрес — твой магазин (как открывается витрина: https://твой-адрес.rustbase.shop или свой домен).

  • Тело POST-запросов — JSON.
  • Штатные ответы возвращают { "result": "success", ... }, ошибки — { "result": "fail", "message": "…" }.

Авторизация

Передавай в каждом запросе два заголовка:

ЗаголовокЗначение
X-Store-IdID магазина (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=76561197960279927
json
{ "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": "Награда за ивент" }
ПараметрОписание
steamIdSteamID64 игрока
amountСумма в рублях (> 0)
operationplus (начислить) или minus (списать)
messageКомментарий (попадёт в историю игрока)
json
{ "result": "success", "message": "Баланс изменён", "data": { "steamId": "...", "balance": 937.48 } }

Все операции с балансом пишутся в историю игрока (аудит). Списание ниже нуля запрещено — вернётся ошибка insufficient_funds.

Для изменения баланса прямо с игрового сервера используй API плагина — не нужно хранить ключ магазина во внешнем сервисе.