Бонусные тарифы
Уровни бонусной программы клиентов (до 10): процент кешбэка, максимальная доля оплаты бонусами и минимальная сумма покупок для входа в уровень.
| Метод | Адрес | Назначение |
|---|---|---|
| GET | /company/bonus/tariff | Список бонусных тарифов |
| PUT | /company/bonus/tariff | Сохранить бонусные тарифы |
Список бонусных тарифов
GET
/company/bonus/tariffВсе тарифы компании пользователя по порядку (sort_index, по возрастанию суммы входа) с числом клиентов в каждом (clients_count) и последним изменившим сотрудником. Без пагинации.
Заголовки
| Заголовок | Значение | Описание |
|---|---|---|
Authorization | Bearer {token} | Токен из POST /common/auth/login |
Accept | application/json | Ответ в JSON |
Accept-Language | ru | Язык сообщений и названий: ru, uz, oz |
Ответ · 200
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
[].id | integer | ID |
[].updater_id | integer | Обновитель |
[].company_id | integer | Компания |
[].name | string | Название |
[].cashback_percent | integer | Кэшбэк (в процентах) |
[].max_percent_for_sale | integer | Максимальный кэшбэк для оплаты заказа (в процентах) |
[].min_entry | integer | Минимальный порог |
[].comment | string | Комментарий |
[].color | null | Цвет |
[].sort_index | integer | |
[].updated_at | string | Обновлено |
[].clients_count | integer | |
[].updater | object | |
[].updater.id | integer | ID |
[].updater.type | string | Тип |
[].updater.role_id | integer | Роль |
[].updater.company_id | integer | Компания |
[].updater.partner_id | null | Партнёр |
[].updater.username | string | Логин |
[].updater.pinfl | null | ПИНФЛ |
[].updater.phone | string | Телефон |
[].updater.sipuni_sip_number | string | VoIP - Sipuni (SIP-номер) |
[].updater.is_confirmed | boolean | |
[].updater.are_all_companies_available | boolean | |
[].updater.last_login_at | null | |
[].updater.created_at | string | Создано |
[].updater.updated_at | string | Обновлено |
[].updater.is_deleted | boolean | |
[].updater.profile | object | |
[].updater.profile.first_name | null | Имя |
[].updater.profile.last_name | null | Фамилия |
[].updater.profile.position | null | Должность |
[].updater.profile.birth_date | null | Дата рождения |
[].updater.profile.gender | null | Пол |
[].updater.profile.full_name | string | ФИО |
json
[
{
"id": 1,
"updater_id": 2,
"company_id": 1,
"name": "Tariff 1",
"cashback_percent": 10,
"max_percent_for_sale": 30,
"min_entry": 1000,
"comment": "Comment 1",
"color": null,
"sort_index": 0,
"updated_at": "2026-09-30 12:16:43",
"clients_count": 1,
"updater": {
"id": 2,
"type": "director",
"role_id": 2,
"company_id": 1,
"partner_id": null,
"username": "director_1@local.host",
"pinfl": null,
"phone": "998020000001",
"sipuni_sip_number": "210",
"is_confirmed": true,
"are_all_companies_available": false,
"last_login_at": null,
"created_at": "2026-09-30 12:16:43",
"updated_at": "2026-09-30 12:16:43",
"is_deleted": false,
"profile": {
"first_name": null,
"last_name": null,
"position": null,
"birth_date": null,
"gender": null,
"full_name": " "
}
}
},
{
"id": 2,
"updater_id": 2,
"company_id": 1,
"name": "Tariff 2",
"cashback_percent": 20,
"max_percent_for_sale": 50,
"min_entry": 2000,
"comment": "Comment 2",
"color": null,
"sort_index": 1,
"updated_at": "2026-09-30 12:16:43",
"clients_count": 0,
"updater": {
"id": 2,
"type": "director",
"role_id": 2,
"company_id": 1,
"partner_id": null,
"username": "director_1@local.host",
"pinfl": null,
"phone": "998020000001",
"sipuni_sip_number": "210",
"is_confirmed": true,
"are_all_companies_available": false,
"last_login_at": null,
"created_at": "2026-09-30 12:16:43",
"updated_at": "2026-09-30 12:16:43",
"is_deleted": false,
"profile": {
"first_name": null,
"last_name": null,
"position": null,
"birth_date": null,
"gender": null,
"full_name": " "
}
}
}
]Сохранить бонусные тарифы
PUT
/company/bonus/tariffЗаменяет весь набор тарифов компании переданным records (до 10; названия и min_entry не повторяются): записи сортируются по min_entry, лишние старые тарифы удаляются. После сохранения все клиенты компании пересчитываются по тарифам согласно их сумме покупок. Пустой records удаляет все тарифы.
Из формы (
multipart/form-data) методPUTотправляется какPOSTс параметром?_method=PUT.
Заголовки
| Заголовок | Значение | Описание |
|---|---|---|
Authorization | Bearer {token} | Токен из POST /common/auth/login |
Accept | application/json | Ответ в JSON |
Accept-Language | ru | Язык сообщений и названий: ru, uz, oz |
Тело запроса
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
records | object[] | Нет | Мин. 0 элементов. Макс. 10 элементов |
records[].name | string | Да | Название. Без повторов. Макс. 255 символов |
records[].cashback_percent | integer | Да | Кэшбэк (в процентах). Не меньше 0. Не больше 100 |
records[].max_percent_for_sale | integer | Да | Максимальный кэшбэк для оплаты заказа (в процентах). Не меньше 0. Не больше 100 |
records[].min_entry | number | Да | Минимальный порог. До 2 знаков после запятой. Не меньше 0.01. Не больше 999999999999.99. Без повторов |
records[].comment | string | Нет | Комментарий. Макс. 1000 символов |
records[].color | string | Нет | Цвет тарифа в формате #RRGGBB. Шаблон /^#[0-9A-Fa-f]{6}$/ |
json
{
"records": [
{
"name": "Tariff 1",
"cashback_percent": 10,
"max_percent_for_sale": 10,
"min_entry": 100,
"comment": "Comment 1",
"color": "#22C55E"
},
{
"name": "Tariff 2",
"cashback_percent": 20,
"max_percent_for_sale": 20,
"min_entry": 200,
"comment": "Comment 2",
"color": null
},
{
"name": "Tariff 3",
"cashback_percent": 30,
"max_percent_for_sale": 30,
"min_entry": 300,
"comment": "Comment 3",
"color": null
}
]
}bash
curl -X PUT "https://api.wasyt.uz/company/bonus/tariff" \
-H "Accept: application/json" \
-H "Accept-Language: ru" \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{"records":[{"name":"Tariff 1","cashback_percent":10,"max_percent_for_sale":10,"min_entry":100,"comment":"Comment 1","color":"#22C55E"},{"name":"Tariff 2","cashback_percent":20,"max_percent_for_sale":20,"min_entry":200,"comment":"Comment 2","color":null},{"name":"Tariff 3","cashback_percent":30,"max_percent_for_sale":30,"min_entry":300,"comment":"Comment 3","color":null}]}'Ответ · 200
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
message | string | Сообщение |
json
{
"message": "Success"
}
