Услуги
Услуги компании, которые продаются вместе с товарами: цена, единица измерения услуги и категория. Услуги не имеют складских остатков.
| Метод | Адрес | Назначение |
|---|---|---|
| GET | /company/product/service | Список услуг |
| GET | /company/product/service/{model} | Просмотр услуги |
| POST | /company/product/service | Создать услугу |
| PUT | /company/product/service/{model} | Изменить услугу |
| DELETE | /company/product/service/{model} | Удалить услугу |
| DELETE | /company/product/service/{value}/restore | Восстановить услугу |
Список услуг
/company/product/serviceУслуги компании и филиалов с категорией и единицей измерения. Фильтры: common (название), category_id, company_id, creator_id, created_at.
Заголовки
| Заголовок | Значение | Описание |
|---|---|---|
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[category_id] | Категория — точное значение |
filter[created_at] | Создано — период: [0] — с, [1] — по (Y-m-d) |
filter[common] | Общий — точное значение (с учётом вложенных) |
sort[] | Сортировка, - — по убыванию: id, -id |
with[] | Подгрузить связи: creator.profile, company, category, service_unit |
page | Номер страницы, с 1 |
page-size | Записей на странице, не больше 20 |
Ответ · 200
Постраничный ответ: записи в data[], пагинация в links и meta.
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
data | object[] | Данные |
data[].id | integer | ID |
data[].creator_id | integer | Создатель |
data[].company_id | integer | Компания |
data[].category_id | null | Категория |
data[].service_unit_id | integer | Единица измерения (услуга) |
data[].name | string | Название |
data[].description | string | Описание |
data[].price | string | Цена |
data[].is_free_price | boolean | Продажа по свободной цене |
data[].image | null | Изображение |
data[].image_thumbs | array | |
data[].created_at | string | Создано |
data[].updated_at | string | Обновлено |
data[].is_deleted | boolean |
{
"data": [
{
"id": 2,
"creator_id": 2,
"company_id": 1,
"category_id": null,
"service_unit_id": 2,
"name": "Service 2",
"description": "Description 2",
"price": "120000.00",
"is_free_price": true,
"image": null,
"image_thumbs": [],
"created_at": "2026-09-30 12:47:59",
"updated_at": "2026-09-30 12:47:59",
"is_deleted": false
},
{
"id": 1,
"creator_id": 2,
"company_id": 1,
"category_id": 4,
"service_unit_id": 1,
"name": "Service 1",
"description": "Description 1",
"price": "50000.00",
"is_free_price": false,
"image": null,
"image_thumbs": [],
"created_at": "2026-09-30 12:47:59",
"updated_at": "2026-09-30 12:47:59",
"is_deleted": false
}
],
"links": {
"first": "https://api.wasyt.uz/company/product/service?page=1",
"last": "https://api.wasyt.uz/company/product/service?page=1",
"prev": null,
"next": null
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 1,
"links": [],
"path": "https://api.wasyt.uz/company/product/service",
"per_page": 20,
"to": 2,
"total": 2
}
}Просмотр услуги
/company/product/service/{model}Возвращает услугу по ID.
Заголовки
| Заголовок | Значение | Описание |
|---|---|---|
Authorization | Bearer {token} | Токен из POST /common/auth/login |
Accept | application/json | Ответ в JSON |
Accept-Language | ru | Язык сообщений и названий: ru, uz, oz |
Параметры пути
| Параметр | Описание |
|---|---|
model | ID записи |
Параметры запроса
| Параметр | Описание |
|---|---|
with[] | Подгрузить связи |
GET /company/product/service/1?with[0]=category&with[1]=service_unit&with[2]=company&with[3]=creator.profileОтвет · 200
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
id | integer | ID |
creator_id | integer | Создатель |
company_id | integer | Компания |
category_id | integer | Категория |
service_unit_id | integer | Единица измерения (услуга) |
name | string | Название |
description | string | Описание |
price | string | Цена |
is_free_price | boolean | Продажа по свободной цене |
image | null | Изображение |
image_thumbs | array | |
created_at | string | Создано |
updated_at | string | Обновлено |
is_deleted | boolean | |
category | object | Категория |
category.id | integer | ID |
category.company_id | integer | Компания |
category.lft | integer | |
category.rgt | integer | |
category.parent_id | integer | Родитель |
category.name | object | Название |
category.name.oz | string | |
category.name.ru | string | |
category.name.uz | string | |
category.created_at | string | Создано |
category.updated_at | string | Обновлено |
category.is_deleted | boolean | |
category.text | string | Текст |
category.state | object | |
category.state.disabled | boolean | |
category.state.hidden | boolean | |
category.state.opened | boolean | |
service_unit | object | |
service_unit.id | integer | ID |
service_unit.creator_id | null | Создатель |
service_unit.company_id | integer | Компания |
service_unit.source_id | integer | Источник |
service_unit.name | object | Название |
service_unit.name.oz | string | |
service_unit.name.ru | string | |
service_unit.name.uz | string | |
service_unit.created_at | string | Создано |
service_unit.updated_at | string | Обновлено |
service_unit.is_deleted | boolean | |
company | object | Компания |
company.id | integer | ID |
company.parent_id | null | Родитель |
company.partner_id | integer | Партнёр |
company.district_id | integer | Район |
company.industry_id | integer | Сфера деятельности |
company.name | string | Название |
company.company_name | string | Компания |
company.logo | object | Логотип |
company.logo.original | object | |
company.logo.original.raw | string | |
company.logo.original.webp | string | |
company.logo.widen_25 | object | |
company.logo.widen_25.raw | string | |
company.logo.widen_25.webp | string | |
company.logo.widen_100 | object | |
company.logo.widen_100.raw | string | |
company.logo.widen_100.webp | string | |
company.logo.widen_500 | object | |
company.logo.widen_500.raw | string | |
company.logo.widen_500.webp | string | |
company.inn | string | ИНН |
company.mfo | string | МФО |
company.address | string | Адрес |
company.latitude | null | Широта |
company.longitude | null | Долгота |
company.comment | string | Комментарий |
company.telegram_phone | string | Телефон в Telegram |
company.director_full_name | string | ФИО директора |
company.bank | string | Банк |
company.payment_account | string | Расчётный счёт |
company.agreement_number | string | Номер договора |
company.agreement_date | null | |
company.atmos_terminal_id | integer | ID терминала в Atmos |
company.uniaccess_auto_payment_credit_overdue_days | integer | |
company.uniaccess_branch_id | integer | Branch ID в Uniaccess |
company.field_of_activity | string | Направление |
company.vat_percent | string | НДС (%) |
company.is_using_new_my_uzcard_auto_payment_by_pinfl | boolean | Использует новый метод MyUzcard для автосписания по ПИНФЛ |
company.bonus_entry_period | integer | Период учёта бонусов (в месяцах) |
company.abc_segment_a | integer | |
company.abc_segment_b | integer | |
company.abc_segment_c | integer | |
company.is_pos_window_enabled | boolean | |
company.cashbox_shift_settings | object | |
company.cashbox_shift_settings.is_enabled | boolean | Включено |
company.has_bank_payment_type | boolean | |
company.is_ican_turned_on | boolean | ICAN включён |
company.is_partner_turned_on | boolean | Партнёр включён |
company.created_at | string | Создано |
company.updated_at | string | Обновлено |
company.is_deleted | boolean | |
creator | object | |
creator.id | integer | ID |
creator.type | string | Тип |
creator.role_id | integer | Роль |
creator.company_id | integer | Компания |
creator.partner_id | null | Партнёр |
creator.username | string | Логин |
creator.pinfl | null | ПИНФЛ |
creator.phone | string | Телефон |
creator.sipuni_sip_number | string | VoIP - Sipuni (SIP-номер) |
creator.is_confirmed | boolean | |
creator.are_all_companies_available | boolean | |
creator.last_login_at | null | |
creator.created_at | string | Создано |
creator.updated_at | string | Обновлено |
creator.is_deleted | boolean | |
creator.profile | object | |
creator.profile.first_name | null | Имя |
creator.profile.last_name | null | Фамилия |
creator.profile.position | null | Должность |
creator.profile.birth_date | null | Дата рождения |
creator.profile.gender | null | Пол |
creator.profile.full_name | string | ФИО |
{
"id": 1,
"creator_id": 2,
"company_id": 1,
"category_id": 4,
"service_unit_id": 1,
"name": "Service 1",
"description": "Description 1",
"price": "50000.00",
"is_free_price": false,
"image": null,
"image_thumbs": [],
"created_at": "2026-09-30 12:47:59",
"updated_at": "2026-09-30 12:47:59",
"is_deleted": false,
"category": {
"id": 4,
"company_id": 1,
"lft": 4,
"rgt": 5,
"parent_id": 3,
"name": {
"oz": "Category 1-1-1 oz",
"ru": "Category 1-1-1 ru",
"uz": "Category 1-1-1 uz"
},
"created_at": "2026-09-30 12:47:59",
"updated_at": "2026-09-30 12:47:59",
"is_deleted": false,
"text": "Category 1-1-1 ru",
"state": {
"disabled": false,
"hidden": false,
"opened": true
}
},
"service_unit": {
"id": 1,
"creator_id": null,
"company_id": 1,
"source_id": 9,
"name": {
"oz": "Соат",
"ru": "Час",
"uz": "Soat"
},
"created_at": "2026-09-30 12:47:59",
"updated_at": "2026-09-30 12:47:59",
"is_deleted": false
},
"company": {
"id": 1,
"parent_id": null,
"partner_id": 1,
"district_id": 1,
"industry_id": 1,
"name": "Company 1",
"company_name": "Company 1",
"logo": {
"original": {
"raw": "https://api.wasyt.uz/test_data/images/1.png",
"webp": "https://api.wasyt.uz/storage/thumbs/original/6a21a10b2d2ed8f4573f3842b10dc1df1778568717.webp"
},
"widen_25": {
"raw": "https://api.wasyt.uz/storage/thumbs/widen/25/6a21a10b2d2ed8f4573f3842b10dc1df1778568717.png",
"webp": "https://api.wasyt.uz/storage/thumbs/widen/25/6a21a10b2d2ed8f4573f3842b10dc1df1778568717.webp"
},
"widen_100": {
"raw": "https://api.wasyt.uz/storage/thumbs/widen/100/6a21a10b2d2ed8f4573f3842b10dc1df1778568717.png",
"webp": "https://api.wasyt.uz/storage/thumbs/widen/100/6a21a10b2d2ed8f4573f3842b10dc1df1778568717.webp"
},
"widen_500": {
"raw": "https://api.wasyt.uz/storage/thumbs/widen/500/6a21a10b2d2ed8f4573f3842b10dc1df1778568717.png",
"webp": "https://api.wasyt.uz/storage/thumbs/widen/500/6a21a10b2d2ed8f4573f3842b10dc1df1778568717.webp"
}
},
"inn": "000000001",
"mfo": "00001",
"address": "Address 1",
"latitude": null,
"longitude": null,
"comment": "Comment 1",
"telegram_phone": "998000000001",
"director_full_name": "Director 1",
"bank": "Bank 1",
"payment_account": "00000000000000000001",
"agreement_number": "001/2026",
"agreement_date": null,
"atmos_terminal_id": 97007302,
"uniaccess_auto_payment_credit_overdue_days": 3,
"uniaccess_branch_id": 1,
"field_of_activity": "trading",
"vat_percent": "12.00",
"is_using_new_my_uzcard_auto_payment_by_pinfl": true,
"bonus_entry_period": 12,
"abc_segment_a": 75,
"abc_segment_b": 15,
"abc_segment_c": 10,
"is_pos_window_enabled": true,
"cashbox_shift_settings": {
"is_enabled": true
},
"has_bank_payment_type": false,
"is_ican_turned_on": true,
"is_partner_turned_on": false,
"created_at": "2026-09-30 12:47:58",
"updated_at": "2026-09-30 12:49:04",
"is_deleted": false
},
"creator": {
"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:47:59",
"updated_at": "2026-09-30 12:47:59",
"is_deleted": false,
"profile": {
"first_name": null,
"last_name": null,
"position": null,
"birth_date": null,
"gender": null,
"full_name": " "
}
}
}Создать услугу
/company/product/serviceСоздаёт услугу: название и единица измерения услуги компании обязательны; цена, категория, описание и изображение — нет. is_free_price без значения — false.
Заголовки
| Заголовок | Значение | Описание |
|---|---|---|
Authorization | Bearer {token} | Токен из POST /common/auth/login |
Accept | application/json | Ответ в JSON |
Accept-Language | ru | Язык сообщений и названий: ru, uz, oz |
Тело запроса
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
name | string | Да | Название. Макс. 255 символов |
category_id | integer | Нет | Категория. ID существующей записи, доступной пользователю |
service_unit_id | integer | Да | Единица измерения (услуга). ID существующей записи, доступной пользователю |
price | number | Нет | Цена. Не меньше 0 |
is_free_price | boolean | Нет | Продажа по свободной цене |
description | string | Нет | Описание. Макс. 10000 символов |
image | file | Нет | Изображение. Форматы: jpg, png. Макс. 2048 КБ. Размеры изображения: max_width=3840, max_height=2160 |
image_old_keys | string (JSON) | Да | Изображение |
{
"name": "New Service 1",
"category_id": 4,
"service_unit_id": 1,
"price": 85000,
"is_free_price": null,
"description": "Service description",
"image_old_keys": "[]"
}curl -X POST "https://api.wasyt.uz/company/product/service" \
-H "Accept: application/json" \
-H "Accept-Language: ru" \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{"name":"New Service 1","category_id":4,"service_unit_id":1,"price":85000,"is_free_price":null,"description":"Service description","image_old_keys":"[]"}'Ответ · 200
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
name | string | Название |
category_id | integer | Категория |
service_unit_id | integer | Единица измерения (услуга) |
price | string | Цена |
is_free_price | boolean | Продажа по свободной цене |
description | string | Описание |
image | string | Изображение |
image_thumbs | array | |
updated_at | string | Обновлено |
created_at | string | Создано |
creator_id | integer | Создатель |
company_id | integer | Компания |
id | integer | ID |
is_deleted | boolean |
{
"name": "New Service 1",
"category_id": 4,
"service_unit_id": 1,
"price": "85000.00",
"is_free_price": false,
"description": "Service description",
"image": "https://api-minio.icangroup.uz/wasyt/images/service/2026/09/30/6abcbfcb5d61d_fd1a99e3-5dd5-490b-84f9-30f5487a172b.png",
"image_thumbs": [],
"updated_at": "2026-09-30 12:52:43",
"created_at": "2026-09-30 12:52:43",
"creator_id": 2,
"company_id": 1,
"id": 8,
"is_deleted": false
}Изменить услугу
/company/product/service/{model}Меняет данные услуги по тем же правилам, что и при создании; is_free_price без значения сбрасывается в false.
Из формы (
multipart/form-data) методPUTотправляется какPOSTс параметром?_method=PUT.
Заголовки
| Заголовок | Значение | Описание |
|---|---|---|
Authorization | Bearer {token} | Токен из POST /common/auth/login |
Accept | application/json | Ответ в JSON |
Accept-Language | ru | Язык сообщений и названий: ru, uz, oz |
Параметры пути
| Параметр | Описание |
|---|---|
model | ID записи |
Тело запроса
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
name | string | Да | Название. Макс. 255 символов |
category_id | integer | Нет | Категория. ID существующей записи, доступной пользователю |
service_unit_id | integer | Да | Единица измерения (услуга). ID существующей записи, доступной пользователю |
price | number | Нет | Цена. Не меньше 0 |
is_free_price | boolean | Нет | Продажа по свободной цене |
description | string | Нет | Описание. Макс. 10000 символов |
image | file | Нет | Изображение. Форматы: jpg, png. Макс. 2048 КБ. Размеры изображения: max_width=3840, max_height=2160 |
image_old_keys | string (JSON) | Да | Изображение |
{
"name": "Updated Service 1",
"service_unit_id": 1,
"price": 95000,
"is_free_price": null,
"description": "Updated description"
}curl -X PUT "https://api.wasyt.uz/company/product/service/1" \
-H "Accept: application/json" \
-H "Accept-Language: ru" \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{"name":"Updated Service 1","service_unit_id":1,"price":95000,"is_free_price":null,"description":"Updated description"}'Ответ · 200
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
id | integer | ID |
creator_id | integer | Создатель |
company_id | integer | Компания |
category_id | integer | Категория |
service_unit_id | integer | Единица измерения (услуга) |
name | string | Название |
description | string | Описание |
price | string | Цена |
is_free_price | boolean | Продажа по свободной цене |
image | null | Изображение |
image_thumbs | array | |
created_at | string | Создано |
updated_at | string | Обновлено |
is_deleted | boolean |
{
"id": 1,
"creator_id": 2,
"company_id": 1,
"category_id": 4,
"service_unit_id": 1,
"name": "Updated Service 1",
"description": "Updated description",
"price": "95000.00",
"is_free_price": false,
"image": null,
"image_thumbs": [],
"created_at": "2026-09-30 12:47:59",
"updated_at": "2026-09-30 12:52:45",
"is_deleted": false
}Удалить услугу
/company/product/service/{model}Мягко удаляет услугу; её можно восстановить.
Из формы (
multipart/form-data) методDELETEотправляется какPOSTс параметром?_method=DELETE.
Заголовки
| Заголовок | Значение | Описание |
|---|---|---|
Authorization | Bearer {token} | Токен из POST /common/auth/login |
Accept | application/json | Ответ в JSON |
Accept-Language | ru | Язык сообщений и названий: ru, uz, oz |
Параметры пути
| Параметр | Описание |
|---|---|
model | ID записи |
Ответ · 200
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
message | string | Сообщение |
{
"message": "Success"
}Восстановить услугу
/company/product/service/{value}/restoreВосстанавливает ранее удалённую услугу по ID.
Из формы (
multipart/form-data) методDELETEотправляется какPOSTс параметром?_method=DELETE.
Заголовки
| Заголовок | Значение | Описание |
|---|---|---|
Authorization | Bearer {token} | Токен из POST /common/auth/login |
Accept | application/json | Ответ в JSON |
Accept-Language | ru | Язык сообщений и названий: ru, uz, oz |
Параметры пути
| Параметр | Описание |
|---|---|
value | ID записи (в том числе удалённой) |
Ответ · 200
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
message | string | Сообщение |
{
"message": "Success"
}
