gamification.transaction.create

Scope: gamification

Кто может вызывать: Только admin или manager; параметр date — только администратор портала. Подробнее: Права доступа

Создать транзакцию начисления или списания для одного или нескольких пользователей.

HTTP: POST

Побочные эффекты: создаётся одна или несколько транзакций в истории баланса; для accrualType=grat с categoryId — пост в ленте; сбрасывается кеш дашбордов.

Параметр date записывает операцию в прошлое: дата операции (TRANSACT_DATE) и отметка изменения (TIMESTAMP_X) становятся равны переданной. По этой дате операция попадает в историю баланса, в месяцы дашбордов и в месячный лимит благодарностей. Будущая дата не принимается. Пост в ленте для grat публикуется текущим моментом.

Параметры метода

Параметр Тип Обяз. Описание
userId int да* ID одного пользователя
userIds int[] да* Массив ID пользователей (приоритет перед userId)
amount float да Сумма операции
currency string да Валюта: BAL или THX
operationType string да Тип операции: accrual или debit (псевдоним: operation)
accrualType string да Тип начисления (код из справочника начислений модуля)
description string нет Описание транзакции
categoryId int нет ID категории благодарности (для accrualType=grat — пост в ленте)
date string нет Только администратор портала. Дата операции в прошлом: Y-m-d, Y-m-d H:i[:s], ISO 8601 со смещением (2026-05-14T10:00:00+03:00) или в UTC (2026-05-14T07:00:00Z), d.m.Y, d.m.Y H:i[:s] или unix-время. Не позже текущего момента. По умолчанию — момент вызова

Часовой пояс date. Строка со смещением (+03:00) или Z переводится в часовой пояс сервера; строка без смещения (2026-05-14 10:00:00, 14.05.2026) считается временем сервера. transactDate в ответе и TRANSACT_DATE в истории — во времени сервера: 2026-05-14T07:00:00Z на сервере с поясом Москвы даст 2026-05-14 10:00:00.

* Требуется хотя бы один из: userId или userIds.

Возвращаемые данные

result.result:

Поле Тип Описание
items array Созданные операции, по одной на пользователя: userId, currency, amount, operationType, transactionId, balance (баланс после операции), transactDate (Y-m-d H:i:s во времени сервера, только если передан date)
count int Количество созданных операций

Обработка ошибок

Справочник кодов ошибок.

Код Описание
UNAUTHORIZED Пользователь не авторизован
ACCESS_DENIED Вызывающий не является admin/manager; date передал не администратор портала
VALIDATION_ERROR Отсутствует обязательный параметр; date не распознана или в будущем (details.field = date)
USER_NOT_FOUND Пользователь не найден
INVALID_CURRENCY Неизвестная валюта
INVALID_OPERATION Неизвестный тип операции
INVALID_ACCRUAL_TYPE Неизвестный тип начисления
INSUFFICIENT_BALANCE Недостаточно баланса для списания

Пример запроса (POST)

curl -X POST "https://{портал}/rest/{user_id}/{webhook_code}/gamification.transaction.create.json" \
          -H "Content-Type: application/json" \
          -d '{
            "userId": 42,
            "amount": 100,
            "currency": "BAL",
            "operationType": "accrual",
            "accrualType": "manual",
            "description": "Награда за проект",
            "date": "2026-05-14 10:00:00"
          }'
        

Пример ответа:

{
          "result": {
            "result": {
              "items": [
                {
                  "userId": 42,
                  "currency": "BAL",
                  "amount": 100,
                  "operationType": "accrual",
                  "transactionId": 9060,
                  "balance": 1350,
                  "transactDate": "2026-05-14 10:00:00"
                }
              ],
              "count": 1
            },
            "total": null,
            "next": null,
            "error": null
          }
        }
        
Предыдущая
Следующая