Бонусные начисления
Журнал движения бонусных баллов на карте клиента: начисления с продаж и ручные корректировки. Каждая запись меняет баланс клиента bonus_accumulations_amount.
| Метод | Адрес | Назначение |
|---|---|---|
| GET | /company/bonus/accumulation | Список начислений |
| GET | /company/bonus/accumulation/{model} | Начисление |
| POST | /company/bonus/accumulation | Ручная корректировка бонусов |
Список начислений
GET
/company/bonus/accumulationПостраничный список движений бонусных баллов доступных компаний. Фильтры по клиенту, типу (income/outcome), причине, источнику и дате; format=excel отдаёт выгрузку в Excel.
Заголовки
| Заголовок | Значение | Описание |
|---|---|---|
Authorization | Bearer {token} | Токен из POST /common/auth/login |
Accept | application/json | Ответ в JSON |
Accept-Language | ru | Язык сообщений и названий: ru, uz, oz |
Параметры запроса
| Параметр | Описание |
|---|---|
filter[id] | ID — точное значение |
filter[company_id] | Компания — одно значение или список filter[company_id][] |
filter[creator_id] | Создатель — точное значение |
filter[client_id] | Клиент — точное значение |
filter[type] | Тип — точное значение |
filter[reason_type] | Тип причины — точное значение |
filter[source_type] | Источник — точное значение |
filter[source_id] | Источник — точное значение |
filter[created_at] | Создано — период: [0] — с, [1] — по (Y-m-d) |
sort[] | Сортировка, - — по убыванию: id, -id |
with[] | Подгрузить связи: company, creator.profile, client |
page | Номер страницы, с 1 |
page-size | Записей на странице, не больше 20 |
http
GET /company/bonus/accumulation?sort[0]=id&sort[1]=-idОтвет · 200
Постраничный ответ: записи в data[], пагинация в links и meta.
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
data | object[] | Данные |
data[].id | integer | ID |
data[].company_id | integer | Компания |
data[].creator_id | integer | Создатель |
data[].client_id | integer | Клиент |
data[].type | string | Тип |
data[].reason_type | string | Тип причины |
data[].amount | integer | Сумма |
data[].source_type | string | Источник |
data[].source_id | integer | Источник |
data[].comment | string | Комментарий |
data[].created_at | string | Создано |
json
{
"data": [
{
"id": 1,
"company_id": 1,
"creator_id": 2,
"client_id": 1,
"type": "income",
"reason_type": "other",
"amount": 1000,
"source_type": "sale",
"source_id": 1,
"comment": "Comment 1",
"created_at": "2026-09-30 12:47:59"
}
],
"links": {
"first": "https://api.wasyt.uz/company/bonus/accumulation?page=1",
"last": "https://api.wasyt.uz/company/bonus/accumulation?page=1",
"prev": null,
"next": null
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 1,
"links": [],
"path": "https://api.wasyt.uz/company/bonus/accumulation",
"per_page": 20,
"to": 1,
"total": 1
}
}Начисление
GET
/company/bonus/accumulation/{model}Одна запись движения бонусных баллов по ID.
Заголовки
| Заголовок | Значение | Описание |
|---|---|---|
Authorization | Bearer {token} | Токен из POST /common/auth/login |
Accept | application/json | Ответ в JSON |
Accept-Language | ru | Язык сообщений и названий: ru, uz, oz |
Параметры пути
| Параметр | Описание |
|---|---|
model | ID записи |
Ответ · 200
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
id | integer | ID |
company_id | integer | Компания |
creator_id | integer | Создатель |
client_id | integer | Клиент |
type | string | Тип |
reason_type | string | Тип причины |
amount | integer | Сумма |
source_type | string | Источник |
source_id | integer | Источник |
comment | string | Комментарий |
created_at | string | Создано |
json
{
"id": 1,
"company_id": 1,
"creator_id": 2,
"client_id": 1,
"type": "income",
"reason_type": "other",
"amount": 1000,
"source_type": "sale",
"source_id": 1,
"comment": "Comment 1",
"created_at": "2026-09-30 12:47:59"
}Ручная корректировка бонусов
POST
/company/bonus/accumulationНачисляет (type = income) или списывает (type = outcome) бонусные баллы клиента вручную и сразу меняет баланс его карты. Списать больше текущего баланса нельзя (ошибка в поле amount). Запись сохраняется с источником manualy; без reason_type причина — other.
Заголовки
| Заголовок | Значение | Описание |
|---|---|---|
Authorization | Bearer {token} | Токен из POST /common/auth/login |
Accept | application/json | Ответ в JSON |
Accept-Language | ru | Язык сообщений и названий: ru, uz, oz |
Тело запроса
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
client_id | integer | Да | Клиент. ID существующей записи, доступной пользователю |
type | string | Да | Тип. Допустимые значения: income, outcome |
reason_type | string | Нет | Тип причины. Допустимые значения: sale_defect, sale_incorrect_description, sale_overdue, sale_incorrect_size, sale_employee_error, sale_delivery_delay, sale_incomplete, other |
amount | number | Да | Сумма. До 2 знаков после запятой. Не меньше 0.01. Не больше 999999999999.99 |
comment | string | Нет | Комментарий. Макс. 1000 символов |
json
{
"client_id": 1,
"type": "income",
"reason_type": "sale_defect",
"amount": 100,
"comment": "Comment 3"
}bash
curl -X POST "https://api.wasyt.uz/company/bonus/accumulation" \
-H "Accept: application/json" \
-H "Accept-Language: ru" \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{"client_id":1,"type":"income","reason_type":"sale_defect","amount":100,"comment":"Comment 3"}'Ответ · 200
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
client_id | integer | Клиент |
type | string | Тип |
reason_type | string | Тип причины |
amount | integer | Сумма |
comment | string | Комментарий |
source_type | string | Источник |
created_at | string | Создано |
company_id | integer | Компания |
creator_id | integer | Создатель |
id | integer | ID |
json
{
"client_id": 1,
"type": "income",
"reason_type": "sale_defect",
"amount": 100,
"comment": "Comment 3",
"source_type": "manualy",
"created_at": "2026-09-30 12:51:00",
"company_id": 1,
"creator_id": 2,
"id": 2
}
