Skip to content

Комплекты ​

Комплекты (наборы) из нескольких товаров со своей ценой и штрих-кодом. При продаже комплект раскладывается на строки своих компонентов.

МетодАдресНазначение
GET/company/product/bundleСписок комплектов
GET/company/product/bundle/{model}Просмотр комплекта
POST/company/product/bundleСоздать комплект
PUT/company/product/bundle/{model}Изменить комплект
DELETE/company/product/bundle/{model}Удалить комплект
DELETE/company/product/bundle/{value}/restoreВосстановить комплект

Список комплектов ​

GET/company/product/bundle

Комплекты компании с составом. with[]=assemblable_quantity добавляет, сколько целых комплектов можно собрать из остатков (по каждому складу отдельно, в сумме). Фильтры: common (название, штрих-код), category_id, barcode, is_free_price.

Заголовки ​

ЗаголовокЗначениеОписание
AuthorizationBearer {token}Токен из POST /common/auth/login
Acceptapplication/jsonОтвет в JSON
Accept-LanguageruЯзык сообщений и названий: ru, uz, oz

Параметры запроса ​

ПараметрОписание
filter[id]ID — точное значение
filter[company_id]Компания — одно значение или список filter[company_id][]
filter[creator_id]Создатель — точное значение
filter[category_id]Категория — точное значение
filter[barcode]Штрих-код — точное значение
filter[is_free_price]Продажа по свободной цене — точное значение
filter[created_at]Создано — период: [0] — с, [1] — по (Y-m-d)
filter[common]Общий — точное значение (с учётом вложенных)
sort[]Сортировка, - — по убыванию: id, -id
with[]Подгрузить связи: creator.profile, company, category, items.product.unit, items.product.price, assemblable_quantity
pageНомер страницы, с 1
page-sizeЗаписей на странице, не больше 20

Ответ · 200 ​

Постраничный ответ: записи в data[], пагинация в links и meta.

Поля ответа
ПолеТипОписание
dataobject[]Данные
data[].idintegerID
data[].creator_idintegerСоздатель
data[].company_idintegerКомпания
data[].category_idintegerКатегория
data[].namestringНазвание
data[].barcodestringШтрих-код
data[].pricestringЦена
data[].is_free_pricebooleanПродажа по свободной цене
data[].is_items_sold_separatelybooleanПродажа товаров из набора отдельно
data[].imagenullИзображение
data[].image_thumbsarray
data[].created_atstringСоздано
data[].updated_atstringОбновлено
data[].is_deletedboolean
json
{
    "data": [
        {
            "id": 1,
            "creator_id": 2,
            "company_id": 1,
            "category_id": 4,
            "name": "Bundle 1",
            "barcode": "0000000009001",
            "price": "3000.00",
            "is_free_price": false,
            "is_items_sold_separately": true,
            "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/bundle?page=1",
        "last": "https://api.wasyt.uz/company/product/bundle?page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [],
        "path": "https://api.wasyt.uz/company/product/bundle",
        "per_page": 20,
        "to": 1,
        "total": 1
    }
}

Просмотр комплекта ​

GET/company/product/bundle/{model}

Возвращает комплект по ID; состав подключается через with[]=items.product.unit.

Заголовки ​

ЗаголовокЗначениеОписание
AuthorizationBearer {token}Токен из POST /common/auth/login
Acceptapplication/jsonОтвет в JSON
Accept-LanguageruЯзык сообщений и названий: ru, uz, oz

Параметры пути ​

ПараметрОписание
modelID записи

Параметры запроса ​

ПараметрОписание
with[]Подгрузить связи
http
GET /company/product/bundle/1?with[0]=category&with[1]=items.product.unit&with[2]=items.product.price

Ответ · 200 ​

Поля ответа
ПолеТипОписание
idintegerID
creator_idintegerСоздатель
company_idintegerКомпания
category_idintegerКатегория
namestringНазвание
barcodestringШтрих-код
pricestringЦена
is_free_pricebooleanПродажа по свободной цене
is_items_sold_separatelybooleanПродажа товаров из набора отдельно
imagenullИзображение
image_thumbsarray
created_atstringСоздано
updated_atstringОбновлено
is_deletedboolean
categoryobjectКатегория
category.idintegerID
category.company_idintegerКомпания
category.lftinteger
category.rgtinteger
category.parent_idintegerРодитель
category.nameobjectНазвание
category.name.ozstring
category.name.rustring
category.name.uzstring
category.created_atstringСоздано
category.updated_atstringОбновлено
category.is_deletedboolean
category.textstringТекст
category.stateobject
category.state.disabledboolean
category.state.hiddenboolean
category.state.openedboolean
itemsobject[]Состав
items[].idintegerID
items[].company_idintegerКомпания
items[].bundle_idintegerКомплект
items[].product_idintegerПродукт
items[].quantityintegerКоличество
items[].pricestringЦена
items[].created_atstringСоздано
items[].updated_atstringОбновлено
items[].productobject
items[].product.idintegerID
items[].product.parent_idnullРодитель
items[].product.creator_idintegerСоздатель
items[].product.company_idintegerКомпания
items[].product.category_idintegerКатегория
items[].product.brand_idintegerБренд
items[].product.unit_idintegerЕдиница измерения
items[].product.namestringНазвание
items[].product.full_textstringПолный текст
items[].product.plustringАртикул (PLU)
items[].product.descriptionstringОписание
items[].product.is_free_pricebooleanПродажа по свободной цене
items[].product.is_favoriteboolean
items[].product.min_quantitynull
items[].product.barcodestringШтрих-код
items[].product.images_listarrayИзображения
items[].product.images_list_thumbsobject[]
items[].product.images_list_thumbs[].widen_100object
items[].product.images_list_thumbs[].widen_100.rawstring
items[].product.images_list_thumbs[].widen_100.webpstring
items[].product.images_list_thumbs[].widen_500object
items[].product.images_list_thumbs[].widen_500.rawstring
items[].product.images_list_thumbs[].widen_500.webpstring
items[].product.images_list_thumbs[].originalobject
items[].product.images_list_thumbs[].original.rawstring
items[].product.images_list_thumbs[].original.webpstring
items[].product.created_atstringСоздано
items[].product.updated_atstringОбновлено
items[].product.is_deletedboolean
items[].product.unitobject
items[].product.unit.idintegerID
items[].product.unit.company_idintegerКомпания
items[].product.unit.source_idintegerИсточник
items[].product.unit.nameobjectНазвание
items[].product.unit.name.ozstring
items[].product.unit.name.rustring
items[].product.unit.name.uzstring
items[].product.unit.accuracyintegerКол-во знаков после запятой
items[].product.unit.created_atstringСоздано
items[].product.unit.updated_atstringОбновлено
items[].product.unit.is_deletedboolean
items[].product.priceobjectЦена
items[].product.price.idintegerID
items[].product.price.updater_idintegerОбновитель
items[].product.price.company_idintegerКомпания
items[].product.price.product_idintegerПродукт
items[].product.price.source_typestringИсточник
items[].product.price.source_idintegerИсточник
items[].product.price.priceintegerЦена
items[].product.price.currencystringВалюта
items[].product.price.min_pricenull
items[].product.price.min_price_percentnull
items[].product.price.created_atstringСоздано
items[].product.price.updated_atstringОбновлено
items[].product.price.effective_min_priceinteger
items[].product.price.price_uzsinteger
items[].product.price.effective_min_price_uzsinteger
items[].product.price.price_usdnumber
items[].product.price.effective_min_price_usdinteger
items[].product.price.price_eurnumber
items[].product.price.effective_min_price_eurinteger
items[].product.price.price_rubnumber
items[].product.price.effective_min_price_rubinteger
json
{
    "id": 1,
    "creator_id": 2,
    "company_id": 1,
    "category_id": 4,
    "name": "Bundle 1",
    "barcode": "0000000009001",
    "price": "3000.00",
    "is_free_price": false,
    "is_items_sold_separately": true,
    "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
        }
    },
    "items": [
        {
            "id": 1,
            "company_id": 1,
            "bundle_id": 1,
            "product_id": 1,
            "quantity": 1,
            "price": "1000.00",
            "created_at": "2026-09-30 12:47:59",
            "updated_at": "2026-09-30 12:47:59",
            "product": {
                "id": 1,
                "parent_id": null,
                "creator_id": 1,
                "company_id": 1,
                "category_id": 4,
                "brand_id": 1,
                "unit_id": 1,
                "name": "Product 1",
                "full_text": "Product 1",
                "plu": "0001",
                "description": "Description 1",
                "is_free_price": false,
                "is_favorite": false,
                "min_quantity": null,
                "barcode": "0000000000001",
                "images_list": [
                    "https://api-minio.icangroup.uz/wasyt/test_data/images/1.png",
                    "https://api-minio.icangroup.uz/wasyt/test_data/images/2.png"
                ],
                "images_list_thumbs": [
                    {
                        "widen_100": {
                            "raw": "https://api-minio.icangroup.uz/wasyt/test_data/images/1.png",
                            "webp": "https://api-minio.icangroup.uz/wasyt/test_data/images/1.png"
                        },
                        "widen_500": {
                            "raw": "https://api-minio.icangroup.uz/wasyt/test_data/images/1.png",
                            "webp": "https://api-minio.icangroup.uz/wasyt/test_data/images/1.png"
                        },
                        "original": {
                            "raw": "https://api-minio.icangroup.uz/wasyt/test_data/images/1.png",
                            "webp": "https://api-minio.icangroup.uz/wasyt/test_data/images/1.png"
                        }
                    },
                    {
                        "widen_100": {
                            "raw": "https://api-minio.icangroup.uz/wasyt/test_data/images/2.png",
                            "webp": "https://api-minio.icangroup.uz/wasyt/test_data/images/2.png"
                        },
                        "widen_500": {
                            "raw": "https://api-minio.icangroup.uz/wasyt/test_data/images/2.png",
                            "webp": "https://api-minio.icangroup.uz/wasyt/test_data/images/2.png"
                        },
                        "original": {
                            "raw": "https://api-minio.icangroup.uz/wasyt/test_data/images/2.png",
                            "webp": "https://api-minio.icangroup.uz/wasyt/test_data/images/2.png"
                        }
                    }
                ],
                "created_at": "2026-09-30 12:47:59",
                "updated_at": "2026-09-30 12:52:16",
                "is_deleted": false,
                "unit": {
                    "id": 1,
                    "company_id": 1,
                    "source_id": 3,
                    "name": {
                        "oz": "Unit 1 oz",
                        "ru": "Unit 1 ru",
                        "uz": "Unit 1 uz"
                    },
                    "accuracy": 4,
                    "created_at": "2026-09-30 12:47:59",
                    "updated_at": "2026-09-30 12:47:59",
                    "is_deleted": false
                },
                "price": {
                    "id": 1,
                    "updater_id": 2,
                    "company_id": 1,
                    "product_id": 1,
                    "source_type": "purchase",
                    "source_id": 1,
                    "price": 1100,
                    "currency": "uzs",
                    "min_price": null,
                    "min_price_percent": null,
                    "created_at": "2026-09-30 12:47:59",
                    "updated_at": "2026-09-30 12:47:59",
                    "effective_min_price": 0,
                    "price_uzs": 1100,
                    "effective_min_price_uzs": 0,
                    "price_usd": 1.1,
                    "effective_min_price_usd": 0,
                    "price_eur": 1.1,
                    "effective_min_price_eur": 0,
                    "price_rub": 1.1,
                    "effective_min_price_rub": 0
                }
            }
        },
        {
            "id": 2,
            "company_id": 1,
            "bundle_id": 1,
            "product_id": 2,
            "quantity": 1,
            "price": "3000.00",
            "created_at": "2026-09-30 12:47:59",
            "updated_at": "2026-09-30 12:47:59",
            "product": {
                "id": 2,
                "parent_id": 1,
                "creator_id": 1,
                "company_id": 1,
                "category_id": 4,
                "brand_id": 1,
                "unit_id": 1,
                "name": "Product 1-1",
                "full_text": "Product 1-1 full text",
                "plu": "0011",
                "description": "Description 1-1",
                "is_free_price": false,
                "is_favorite": false,
                "min_quantity": null,
                "barcode": "0000000000011",
                "images_list": [
                    "https://api-minio.icangroup.uz/wasyt/test_data/images/1.png",
                    "https://api-minio.icangroup.uz/wasyt/test_data/images/2.png"
                ],
                "images_list_thumbs": [
                    {
                        "widen_100": {
                            "raw": "https://api-minio.icangroup.uz/wasyt/test_data/images/1.png",
                            "webp": "https://api-minio.icangroup.uz/wasyt/test_data/images/1.png"
                        },
                        "widen_500": {
                            "raw": "https://api-minio.icangroup.uz/wasyt/test_data/images/1.png",
                            "webp": "https://api-minio.icangroup.uz/wasyt/test_data/images/1.png"
                        },
                        "original": {
                            "raw": "https://api-minio.icangroup.uz/wasyt/test_data/images/1.png",
                            "webp": "https://api-minio.icangroup.uz/wasyt/test_data/images/1.png"
                        }
                    },
                    {
                        "widen_100": {
                            "raw": "https://api-minio.icangroup.uz/wasyt/test_data/images/2.png",
                            "webp": "https://api-minio.icangroup.uz/wasyt/test_data/images/2.png"
                        },
                        "widen_500": {
                            "raw": "https://api-minio.icangroup.uz/wasyt/test_data/images/2.png",
                            "webp": "https://api-minio.icangroup.uz/wasyt/test_data/images/2.png"
                        },
                        "original": {
                            "raw": "https://api-minio.icangroup.uz/wasyt/test_data/images/2.png",
                            "webp": "https://api-minio.icangroup.uz/wasyt/test_data/images/2.png"
                        }
                    }
                ],
                "created_at": "2026-09-30 12:47:59",
                "updated_at": "2026-09-30 12:52:16",
                "is_deleted": false,
                "unit": {
                    "id": 1,
                    "company_id": 1,
                    "source_id": 3,
                    "name": {
                        "oz": "Unit 1 oz",
                        "ru": "Unit 1 ru",
                        "uz": "Unit 1 uz"
                    },
                    "accuracy": 4,
                    "created_at": "2026-09-30 12:47:59",
                    "updated_at": "2026-09-30 12:47:59",
                    "is_deleted": false
                },
                "price": {
                    "id": 2,
                    "updater_id": 2,
                    "company_id": 1,
                    "product_id": 2,
                    "source_type": "purchase",
                    "source_id": 1,
                    "price": 2400,
                    "currency": "usd",
                    "min_price": null,
                    "min_price_percent": null,
                    "created_at": "2026-09-30 12:47:59",
                    "updated_at": "2026-09-30 12:47:59",
                    "effective_min_price": 0,
                    "price_uzs": 2400000,
                    "effective_min_price_uzs": 0,
                    "price_usd": 2400,
                    "effective_min_price_usd": 0,
                    "price_eur": 2400,
                    "effective_min_price_eur": 0,
                    "price_rub": 2400,
                    "effective_min_price_rub": 0
                }
            }
        }
    ]
}

Создать комплект ​

POST/company/product/bundle

Создаёт комплект из 1–100 разных товаров с количеством и ценой каждого. Цена комплекта обязательна, если не включена is_free_price; штрих-код не должен совпадать со штрих-кодом товара или другого комплекта. Каждый товар состава должен лежать хотя бы на одном складе компании.

Заголовки ​

ЗаголовокЗначениеОписание
AuthorizationBearer {token}Токен из POST /common/auth/login
Acceptapplication/jsonОтвет в JSON
Accept-LanguageruЯзык сообщений и названий: ru, uz, oz

Тело запроса ​

ПолеТипОбязательноОписание
namestringДаНазвание. Макс. 255 символов
category_idintegerНетКатегория. ID существующей записи, доступной пользователю
barcodeintegerНетШтрих-код. От 5 до 13 цифр. Уникальное значение в компании
pricenumberДаЦена. Не меньше 0
is_free_pricebooleanНетПродажа по свободной цене
is_items_sold_separatelybooleanНетПродажа товаров из набора отдельно
imagefileНетИзображение. Форматы: jpg, png. Макс. 2048 КБ. Размеры изображения: max_width=3840, max_height=2160
image_old_keysstring (JSON)ДаИзображение
itemsobject[]ДаСостав. Мин. 1 элементов. Макс. 100 элементов
items[].idintegerНетID
items[].product_idintegerДаТовар. Без повторов. ID существующей записи, доступной пользователю
items[].quantitynumberДаКоличество. До 8 знаков после запятой. Не меньше 0.00000001
items[].pricenumberДаЦена. До 2 знаков после запятой. Не меньше 0. Не больше 999999999999.99
json
{
    "name": "New Bundle 1",
    "category_id": 4,
    "barcode": "2000020269999",
    "price": 5000,
    "is_free_price": null,
    "is_items_sold_separately": null,
    "items": [
        {
            "product_id": 1,
            "quantity": 1,
            "price": 1100
        },
        {
            "product_id": 2,
            "quantity": 2,
            "price": 2000
        }
    ],
    "image_old_keys": "[]"
}
bash
curl -X POST "https://api.wasyt.uz/company/product/bundle" \
  -H "Accept: application/json" \
  -H "Accept-Language: ru" \
  -H "Authorization: Bearer {token}" \
  -H "Content-Type: application/json" \
  -d '{"name":"New Bundle 1","category_id":4,"barcode":"2000020269999","price":5000,"is_free_price":null,"is_items_sold_separately":null,"items":[{"product_id":1,"quantity":1,"price":1100},{"product_id":2,"quantity":2,"price":2000}],"image_old_keys":"[]"}'

Ответ · 200 ​

Поля ответа
ПолеТипОписание
namestringНазвание
category_idintegerКатегория
barcodestringШтрих-код
pricestringЦена
is_free_pricebooleanПродажа по свободной цене
is_items_sold_separatelybooleanПродажа товаров из набора отдельно
imagestringИзображение
image_thumbsarray
updated_atstringОбновлено
created_atstringСоздано
creator_idintegerСоздатель
company_idintegerКомпания
idintegerID
is_deletedboolean
json
{
    "name": "New Bundle 1",
    "category_id": 4,
    "barcode": "2000020269999",
    "price": "5000.00",
    "is_free_price": false,
    "is_items_sold_separately": false,
    "image": "https://api-minio.icangroup.uz/wasyt/images/bundle/2026/09/30/6abcbfad5aa90_27d9ed0a-c9ae-4d12-9bc7-9acd37cc7dcb.png",
    "image_thumbs": [],
    "updated_at": "2026-09-30 12:52:13",
    "created_at": "2026-09-30 12:52:13",
    "creator_id": 2,
    "company_id": 1,
    "id": 2,
    "is_deleted": false
}

Изменить комплект ​

PUT/company/product/bundle/{model}

Меняет комплект и его состав по тем же правилам, что и при создании; строки состава сопоставляются по товару и обновляются на месте, неприсланные удаляются.

Из формы (multipart/form-data) метод PUT отправляется как POST с параметром ?_method=PUT.

Заголовки ​

ЗаголовокЗначениеОписание
AuthorizationBearer {token}Токен из POST /common/auth/login
Acceptapplication/jsonОтвет в JSON
Accept-LanguageruЯзык сообщений и названий: ru, uz, oz

Параметры пути ​

ПараметрОписание
modelID записи

Тело запроса ​

ПолеТипОбязательноОписание
namestringДаНазвание. Макс. 255 символов
category_idintegerНетКатегория. ID существующей записи, доступной пользователю
barcodeintegerНетШтрих-код. От 5 до 13 цифр. Уникальное значение в компании
pricenumberДаЦена. Не меньше 0
is_free_pricebooleanНетПродажа по свободной цене
is_items_sold_separatelybooleanНетПродажа товаров из набора отдельно
imagefileНетИзображение. Форматы: jpg, png. Макс. 2048 КБ. Размеры изображения: max_width=3840, max_height=2160
image_old_keysstring (JSON)ДаИзображение
itemsobject[]ДаСостав. Мин. 1 элементов. Макс. 100 элементов
items[].idintegerНетID
items[].product_idintegerДаТовар. Без повторов. ID существующей записи, доступной пользователю
items[].quantitynumberДаКоличество. До 8 знаков после запятой. Не меньше 0.00000001
items[].pricenumberДаЦена. До 2 знаков после запятой. Не меньше 0. Не больше 999999999999.99
json
{
    "name": "Bundle 1 updated",
    "price": 2500,
    "is_items_sold_separately": 1,
    "items": [
        {
            "product_id": 1,
            "quantity": 2,
            "price": 1000
        }
    ]
}
bash
curl -X PUT "https://api.wasyt.uz/company/product/bundle/1" \
  -H "Accept: application/json" \
  -H "Accept-Language: ru" \
  -H "Authorization: Bearer {token}" \
  -H "Content-Type: application/json" \
  -d '{"name":"Bundle 1 updated","price":2500,"is_items_sold_separately":1,"items":[{"product_id":1,"quantity":2,"price":1000}]}'

Ответ · 200 ​

Поля ответа
ПолеТипОписание
idintegerID
creator_idintegerСоздатель
company_idintegerКомпания
category_idintegerКатегория
namestringНазвание
barcodestringШтрих-код
pricestringЦена
is_free_pricebooleanПродажа по свободной цене
is_items_sold_separatelybooleanПродажа товаров из набора отдельно
imagenullИзображение
image_thumbsarray
created_atstringСоздано
updated_atstringОбновлено
is_deletedboolean
json
{
    "id": 1,
    "creator_id": 2,
    "company_id": 1,
    "category_id": 4,
    "name": "Bundle 1 updated",
    "barcode": "0000000009001",
    "price": "2500.00",
    "is_free_price": false,
    "is_items_sold_separately": true,
    "image": null,
    "image_thumbs": [],
    "created_at": "2026-09-30 12:47:59",
    "updated_at": "2026-09-30 12:52:17",
    "is_deleted": false
}

Удалить комплект ​

DELETE/company/product/bundle/{model}

Мягко удаляет комплект; его штрих-код остаётся занятым.

Из формы (multipart/form-data) метод DELETE отправляется как POST с параметром ?_method=DELETE.

Заголовки ​

ЗаголовокЗначениеОписание
AuthorizationBearer {token}Токен из POST /common/auth/login
Acceptapplication/jsonОтвет в JSON
Accept-LanguageruЯзык сообщений и названий: ru, uz, oz

Параметры пути ​

ПараметрОписание
modelID записи

Ответ · 200 ​

Поля ответа
ПолеТипОписание
messagestringСообщение
json
{
    "message": "Success"
}

Восстановить комплект ​

DELETE/company/product/bundle/{value}/restore

Восстанавливает ранее удалённый комплект по ID.

Из формы (multipart/form-data) метод DELETE отправляется как POST с параметром ?_method=DELETE.

Заголовки ​

ЗаголовокЗначениеОписание
AuthorizationBearer {token}Токен из POST /common/auth/login
Acceptapplication/jsonОтвет в JSON
Accept-LanguageruЯзык сообщений и названий: ru, uz, oz

Параметры пути ​

ПараметрОписание
valueID записи (в том числе удалённой)

Ответ · 200 ​

Поля ответа
ПолеТипОписание
messagestringСообщение
json
{
    "message": "Success"
}