shop отвечает за витрину магазина: категории, товары, корзину, промокоды и покупки. Административные операции (создание товаров, управление заказами) находятся в отдельном роутере admin.shop.
Путь: trpc.shop.*
Вложенные роутеры
categories
Работа с категориями товаров.categories.list
Получение списка видимых категорий, отсортированных по полюorder.
- Тип:
query - Доступ:
publicProcedure
Фильтр по серверу (опционально)
categories.getBySlug
Получение категории по slug. Возвращает категорию илиnull.
- Тип:
query - Доступ:
publicProcedure
Slug категории
Фильтр по серверу
items
Работа с товарами. Поляimages и metadata возвращаются распарсенными из JSON.
items.list
Получение списка видимых товаров с пагинацией, отсортированных по полюorder.
- Тип:
query - Доступ:
publicProcedure
Фильтр по серверу
Фильтр по категории
Только рекомендуемые товары
Количество (1–100, по умолчанию 50)
Смещение (минимум 0, по умолчанию 0)
items.getBySlug
Получение видимого товара по slug. Возвращает товар илиnull.
- Тип:
query - Доступ:
publicProcedure
Slug товара
Фильтр по серверу
items.getById
Получение товара по ID. Возвращает товар илиnull.
- Тип:
query - Доступ:
publicProcedure
ID товара
cart
Работа с корзиной текущего пользователя.cart.get
Получение содержимого корзины. Каждый элемент включает связанный товар (item) с распарсенными полями images и metadata.
- Тип:
query - Доступ:
protectedProcedure
Фильтр по серверу (опционально)
cart.add
Добавление товара в корзину. Если товар уже в корзине, его количество увеличивается. Проверяется наличие на складе (stock).
- Тип:
mutation - Доступ:
protectedProcedure
ID товара
Количество (минимум 1, по умолчанию 1)
ID сервера (опционально)
{ success: true }
cart.updateQuantity
Изменение количества товара в корзине. Проверяется наличие на складе.- Тип:
mutation - Доступ:
protectedProcedure
ID позиции корзины
Новое количество (минимум 1)
{ success: true }
cart.remove
Удаление позиции из корзины.- Тип:
mutation - Доступ:
protectedProcedure
ID позиции корзины
{ success: true }
cart.clear
Очистка корзины.- Тип:
mutation - Доступ:
protectedProcedure
Очистить только для указанного сервера (опционально)
{ success: true }
promocodes
Работа с промокодами.promocodes.validate
Проверка промокода для текущего пользователя.- Тип:
query - Доступ:
protectedProcedure
Промокод (минимум 1 символ, проверяется без учёта регистра)
ID сервера для проверки привязки промокода (опционально)
false, если промокод невалиденПричина невалидности (промокод не найден, неактивен, ещё не активен, истёк, исчерпан, не действует на этом сервере, уже использован)
trueОбъект промокода:
{ id, code, discountType, discountValue, minOrderAmount, maxDiscount }. Поле discountType принимает значения percent или fixed; minOrderAmount и maxDiscount могут быть null.purchases
Покупки и история заказов.purchases.checkout
Оформление заказа из корзины. Списывает средства с баланса пользователя, применяет промокод (если указан), уменьшает остатки на складе, очищает корзину и записывает активность. При наличии RCON-соединения и валидного имени игрока пытается выдать товары на сервере командами.- Тип:
mutation - Доступ:
protectedProcedure
ID сервера (опционально). Также используется для фильтрации позиций корзины и выдачи через RCON.
Промокод для скидки
Успешность оформления заказа
Уникальный ID заказа (формат
ORD-XXXXX-XXXXXXXX)Сумма до скидки
Размер скидки по промокоду
Итоговая сумма к списанию
Остаток на балансе после списания
Были ли товары выданы на сервере через RCON
purchases.history
История покупок текущего пользователя, отсортированная по дате создания (новые первыми). Денежные поля приводятся к числам,items распарсивается из JSON.
- Тип:
query - Доступ:
protectedProcedure
Количество (1–50, по умолчанию 20)
Смещение (минимум 0, по умолчанию 0)
purchases.getByOrderId
Получение заказа текущего пользователя поorderId. Возвращает заказ или null.
- Тип:
query - Доступ:
protectedProcedure
ID заказа
purchases.pending
Список оплаченных, но ещё не выданных заказов текущего пользователя (статусpaid).
- Тип:
query - Доступ:
protectedProcedure
Фильтр по серверу (опционально)