Товары складов
Складские позиции: товар каталога на конкретном складе с остатком, ценами и статусом. Здесь же раздел «Все товары» (весь каталог, включая ещё не оприходованные товары), поиск по PLU и движение позиции.
| Метод | Адрес | Назначение |
|---|---|---|
| GET | /company/stock/product/catalog/stats | Шапка раздела «Все товары» |
| GET | /company/stock/product/catalog | Список «Все товары» |
| GET | /company/stock/product/plu/{plu} | Найти позиции по PLU |
| GET | /company/stock/product/{model}/movement-history | Движение позиции |
| GET | /company/stock/product | Список складских позиций |
| GET | /company/stock/product/{model} | Складская позиция |
Шапка раздела «Все товары»
/company/stock/product/catalog/statsДля той же отфильтрованной выборки, что и список каталога, возвращает branches (вкладки филиалов с числом позиций), cards (число товаров, стоимость остатка по валютам закупки, неликвид, нулевой остаток, признак «Свободная цена (все)») и counts — счётчики статусных вкладок.
Заголовки
| Заголовок | Значение | Описание |
|---|---|---|
Authorization | Bearer {token} | Токен из POST /common/auth/login |
Accept | application/json | Ответ в JSON |
Accept-Language | ru | Язык сообщений и названий: ru, uz, oz |
Ответ · 200
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
branches | object | |
branches.total | integer | Всего записей |
branches.items | object[] | Состав |
branches.items[].id | integer | ID |
branches.items[].name | string | Название |
branches.items[].count | integer | Количество |
cards | object | |
cards.products_count | integer | |
cards.stock_amount | object | |
cards.stock_amount.uzs | integer | |
cards.stock_amount.usd | integer | |
cards.illiquid_count | integer | |
cards.zero_stock_count | integer | |
cards.free_price_all | boolean | |
counts | object | |
counts.all | integer | |
counts.favorite | integer | |
counts.active | integer | |
counts.inactive | integer | |
counts.in_stock | integer | |
counts.low_stock | integer | |
counts.zero_stock | integer | |
counts.illiquid | integer |
{
"branches": {
"total": 2,
"items": [
{
"id": 1,
"name": "Company 1",
"count": 2
},
{
"id": 2,
"name": "Company 1-1",
"count": 0
}
]
},
"cards": {
"products_count": 3,
"stock_amount": {
"uzs": 1000,
"usd": 4260
},
"illiquid_count": 0,
"zero_stock_count": 1,
"free_price_all": false
},
"counts": {
"all": 3,
"favorite": 0,
"active": 2,
"inactive": 0,
"in_stock": 0,
"low_stock": 2,
"zero_stock": 1,
"illiquid": 0
}
}Список «Все товары»
/company/stock/product/catalogВесь каталог доступных компаний: товар со складской позицией или одной строкой без склада, пока его не оприходовали. Избранные товары всегда в начале; фильтр filter[status] (favorite, active, in_stock, low_stock, zero_stock, illiquid и др.). format=excel или format=csv отдаёт выгрузку.
Заголовки
| Заголовок | Значение | Описание |
|---|---|---|
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[stock_id] | Склад — точное значение |
filter[product_id] | Продукт — точное значение |
filter[quantity] | Количество — диапазон: [0] — от, [1] — до |
filter[product.category_id] | Категория — точное значение (с учётом вложенных) |
filter[product.brand_id] | Бренд — точное значение |
filter[product.name] | Название — поиск по части строки |
filter[product.barcode] | Штрих-код — точное значение |
filter[product.is_free_price] | Продажа по свободной цене — точное значение |
filter[product.created_at] | Создано — период: [0] — с, [1] — по (Y-m-d) |
filter[common] | Общий — точное значение (с учётом вложенных) |
sort[] | Сортировка, - — по убыванию: id, -id, product_id, -product_id |
with[] | Подгрузить связи: company, stock, product, product.parent, product.category.ancestors, product.brand, product.unit, product.price, product.last_purchase_product, product_price, last_purchase_at, last_purchase_price, available_quantity, reserved_quantity, status |
page | Номер страницы, с 1 |
page-size | Записей на странице, не больше 20 |
GET /company/stock/product/catalog?with[0]=stock&with[1]=product&with[2]=statusОтвет · 200
Постраничный ответ: записи в data[], пагинация в links и meta.
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
data | object[] | Данные |
data[].id | integer | ID |
data[].company_id | integer | Компания |
data[].stock_id | null | Склад |
data[].product_id | integer | Продукт |
data[].quantity | integer | Количество |
data[].created_at | string | Создано |
data[].updated_at | string | Обновлено |
data[].status | string | Статус |
data[].days_without_movement | integer | Без движения |
data[].last_movement_at | null | Последнее движение |
data[].stock | null | |
data[].product | object | |
data[].product.id | integer | ID |
data[].product.parent_id | null | Родитель |
data[].product.creator_id | integer | Создатель |
data[].product.company_id | integer | Компания |
data[].product.category_id | integer | Категория |
data[].product.brand_id | integer | Бренд |
data[].product.unit_id | integer | Единица измерения |
data[].product.name | string | Название |
data[].product.full_text | string | Полный текст |
data[].product.plu | string | Артикул (PLU) |
data[].product.description | string | Описание |
data[].product.is_free_price | boolean | Продажа по свободной цене |
data[].product.is_favorite | boolean | |
data[].product.min_quantity | null | |
data[].product.barcode | string | Штрих-код |
data[].product.images_list | array | Изображения |
data[].product.images_list_thumbs | array | |
data[].product.created_at | string | Создано |
data[].product.updated_at | string | Обновлено |
data[].product.is_deleted | boolean |
{
"data": [
{
"id": -3,
"company_id": 1,
"stock_id": null,
"product_id": 3,
"quantity": 0,
"created_at": "2026-09-30 12:47:59",
"updated_at": "2026-09-30 12:47:59",
"status": "zero_stock",
"days_without_movement": 0,
"last_movement_at": null,
"stock": null,
"product": {
"id": 3,
"parent_id": null,
"creator_id": 2,
"company_id": 1,
"category_id": 5,
"brand_id": 1,
"unit_id": 2,
"name": "Product 2",
"full_text": "Product 2",
"plu": "0002",
"description": "Description 2",
"is_free_price": false,
"is_favorite": false,
"min_quantity": null,
"barcode": "0000000000002",
"images_list": [],
"images_list_thumbs": [],
"created_at": "2026-09-30 12:47:59",
"updated_at": "2026-09-30 12:47:59",
"is_deleted": false
}
},
{
"id": 2,
"company_id": 1,
"stock_id": 1,
"product_id": 2,
"quantity": 2,
"sources": [
{
"source_type": "purchase",
"source_id": 1,
"source_product_id": 2,
"quantity": 0.7,
"purchase_price": 2000,
"purchase_currency": "usd",
"created_at": "2026-09-30 12:47:58",
"purchase_price_uzs": 2000000,
"purchase_price_usd": 2000,
"purchase_price_eur": 2000,
"purchase_price_rub": 2000
},
{
"source_type": "purchase",
"source_id": 2,
"source_product_id": 3,
"quantity": 1.3,
"purchase_price": 2200,
"purchase_currency": "usd",
"created_at": "2026-09-30 12:47:59",
"purchase_price_uzs": 2200000,
"purchase_price_usd": 2200,
"purchase_price_eur": 2200,
"purchase_price_rub": 2200
}
],
"created_at": "2026-09-30 12:47:59",
"updated_at": "2026-09-30 12:47:59",
"status": "low_stock",
"days_without_movement": 0,
"last_movement_at": "2026-09-30 12:47:59",
"stock": {
"id": 1,
"creator_id": 2,
"company_id": 1,
"name": "Stock 1",
"is_available": true,
"created_at": "2026-09-30 12:47:59",
"updated_at": "2026-09-30 12:47:59",
"is_deleted": false
},
"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:53:18",
"is_deleted": false
}
}
],
"links": {
"first": "https://api.wasyt.uz/company/stock/product/catalog?page=1",
"last": "https://api.wasyt.uz/company/stock/product/catalog?page=1",
"prev": null,
"next": null
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 1,
"links": [],
"path": "https://api.wasyt.uz/company/stock/product/catalog",
"per_page": 20,
"to": 3,
"total": 3
}
}Найти позиции по PLU
/company/stock/product/plu/{plu}Складские позиции товара с данным PLU на всех складах или только на filter[stock_id]. Если ничего не найдено — 404.
Заголовки
| Заголовок | Значение | Описание |
|---|---|---|
Authorization | Bearer {token} | Токен из POST /common/auth/login |
Accept | application/json | Ответ в JSON |
Accept-Language | ru | Язык сообщений и названий: ru, uz, oz |
Параметры пути
| Параметр | Описание |
|---|---|
plu | Артикул (PLU) |
Параметры запроса
| Параметр | Описание |
|---|---|
with[] | Подгрузить связи |
GET /company/stock/product/plu/0001?with[0]=product&with[1]=product.unit&with[2]=product_price&with[3]=stockОтвет · 200
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
data | object[] | Данные |
data[].id | integer | ID |
data[].company_id | integer | Компания |
data[].stock_id | integer | Склад |
data[].product_id | integer | Продукт |
data[].quantity | integer | Количество |
data[].sources | object[] | |
data[].sources[].source_type | string | Источник |
data[].sources[].source_id | integer | Источник |
data[].sources[].source_product_id | integer | |
data[].sources[].quantity | integer | Количество |
data[].sources[].purchase_price | integer | Цена при покупке |
data[].sources[].purchase_currency | string | Валюта при покупке |
data[].sources[].created_at | string | Создано |
data[].sources[].purchase_price_uzs | integer | |
data[].sources[].purchase_price_usd | integer | |
data[].sources[].purchase_price_eur | integer | |
data[].sources[].purchase_price_rub | integer | |
data[].created_at | string | Создано |
data[].updated_at | string | Обновлено |
data[].product_price | object | |
data[].product_price.id | integer | ID |
data[].product_price.updater_id | integer | Обновитель |
data[].product_price.company_id | integer | Компания |
data[].product_price.product_id | integer | Продукт |
data[].product_price.source_type | string | Источник |
data[].product_price.source_id | integer | Источник |
data[].product_price.price | integer | Цена |
data[].product_price.currency | string | Валюта |
data[].product_price.min_price | null | |
data[].product_price.min_price_percent | null | |
data[].product_price.created_at | string | Создано |
data[].product_price.updated_at | string | Обновлено |
data[].product | object | |
data[].product.id | integer | ID |
data[].product.parent_id | null | Родитель |
data[].product.creator_id | integer | Создатель |
data[].product.company_id | integer | Компания |
data[].product.category_id | integer | Категория |
data[].product.brand_id | integer | Бренд |
data[].product.unit_id | integer | Единица измерения |
data[].product.name | string | Название |
data[].product.full_text | string | Полный текст |
data[].product.plu | string | Артикул (PLU) |
data[].product.description | string | Описание |
data[].product.is_free_price | boolean | Продажа по свободной цене |
data[].product.is_favorite | boolean | |
data[].product.min_quantity | null | |
data[].product.barcode | string | Штрих-код |
data[].product.images_list | array | Изображения |
data[].product.images_list_thumbs | object[] | |
data[].product.images_list_thumbs[].widen_100 | object | |
data[].product.images_list_thumbs[].widen_100.raw | string | |
data[].product.images_list_thumbs[].widen_100.webp | string | |
data[].product.images_list_thumbs[].widen_500 | object | |
data[].product.images_list_thumbs[].widen_500.raw | string | |
data[].product.images_list_thumbs[].widen_500.webp | string | |
data[].product.images_list_thumbs[].original | object | |
data[].product.images_list_thumbs[].original.raw | string | |
data[].product.images_list_thumbs[].original.webp | string | |
data[].product.created_at | string | Создано |
data[].product.updated_at | string | Обновлено |
data[].product.is_deleted | boolean | |
data[].product.unit | object | |
data[].product.unit.id | integer | ID |
data[].product.unit.company_id | integer | Компания |
data[].product.unit.source_id | integer | Источник |
data[].product.unit.name | object | Название |
data[].product.unit.name.oz | string | |
data[].product.unit.name.ru | string | |
data[].product.unit.name.uz | string | |
data[].product.unit.accuracy | integer | Кол-во знаков после запятой |
data[].product.unit.created_at | string | Создано |
data[].product.unit.updated_at | string | Обновлено |
data[].product.unit.is_deleted | boolean | |
data[].stock | object | |
data[].stock.id | integer | ID |
data[].stock.creator_id | integer | Создатель |
data[].stock.company_id | integer | Компания |
data[].stock.name | string | Название |
data[].stock.is_available | boolean | |
data[].stock.created_at | string | Создано |
data[].stock.updated_at | string | Обновлено |
data[].stock.is_deleted | boolean |
{
"data": [
{
"id": 1,
"company_id": 1,
"stock_id": 1,
"product_id": 1,
"quantity": 1,
"sources": [
{
"source_type": "purchase",
"source_id": 1,
"source_product_id": 1,
"quantity": 1,
"purchase_price": 1000,
"purchase_currency": "uzs",
"created_at": "2026-09-30 12:47:59",
"purchase_price_uzs": 1000,
"purchase_price_usd": 1,
"purchase_price_eur": 1,
"purchase_price_rub": 1
}
],
"created_at": "2026-09-30 12:47:59",
"updated_at": "2026-09-30 12:47:59",
"product_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-30T12:47:59",
"updated_at": "2026-09-30T12: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:53:30",
"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
}
},
"stock": {
"id": 1,
"creator_id": 2,
"company_id": 1,
"name": "Stock 1",
"is_available": true,
"created_at": "2026-09-30 12:47:59",
"updated_at": "2026-09-30 12:47:59",
"is_deleted": false
}
}
]
}Движение позиции
/company/stock/product/{model}/movement-historyИстория движения складской позиции: product (текущий остаток), summary (приход, расход, остаток и число операций за всё время) и постраничный журнал data от новых к старым с остатком после каждой операции (продажи, возвраты и обмены, приходы, списания, перемещения).
Заголовки
| Заголовок | Значение | Описание |
|---|---|---|
Authorization | Bearer {token} | Токен из POST /common/auth/login |
Accept | application/json | Ответ в JSON |
Accept-Language | ru | Язык сообщений и названий: ru, uz, oz |
Параметры пути
| Параметр | Описание |
|---|---|
model | ID записи |
Ответ · 200
Постраничный ответ: записи в data[], пагинация в links и meta.
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
data | object[] | Данные |
data[].id | string | ID |
data[].date | string | Дата |
data[].type | string | Тип |
data[].document_type | string | |
data[].document_id | integer | |
data[].document_code | string | |
data[].quantity | integer | Количество |
data[].remainder | integer | Остаток |
{
"product": {
"id": 22,
"product_id": 82,
"stock_id": 1,
"company_id": 1,
"quantity": 50
},
"summary": {
"income": 65,
"outcome": 12,
"remainder": 50,
"operations_count": 6
},
"data": [
{
"id": "transfer-14-transfer_in-f4c92f675c24a85d000df182754c6b05",
"date": "2030-01-05 12:00:00",
"type": "transfer_in",
"document_type": "transfer",
"document_id": 14,
"document_code": "TI-54808616",
"quantity": 3,
"remainder": 50
},
{
"id": "transfer-13-transfer_out-79fbf3c142eb3c9f624a3dd3373358f1",
"date": "2030-01-04 11:00:00",
"type": "transfer_out",
"document_type": "transfer",
"document_id": 13,
"document_code": "TO-54808616",
"quantity": -4,
"remainder": 47
}
],
"meta": {
"current_page": 1,
"last_page": 1,
"per_page": 10,
"total": 6,
"from": 1,
"to": 6
}
}Список складских позиций
/company/stock/productПостраничный список позиций складов доступных компаний с блоком total: общее количество, стоимость по закупке и по цене продажи в разрезе валют. Поиск filter[common] по названию, штрихкоду и PLU; дополнительные колонки через with[] (last_purchase_at, last_purchase_price, available_quantity, status и др.). format=excel или format=csv отдаёт выгрузку.
Заголовки
| Заголовок | Значение | Описание |
|---|---|---|
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[stock_id] | Склад — точное значение |
filter[product_id] | Продукт — точное значение |
filter[quantity] | Количество — диапазон: [0] — от, [1] — до |
filter[product.category_id] | Категория — точное значение (с учётом вложенных) |
filter[product.brand_id] | Бренд — точное значение |
filter[product.name] | Название — поиск по части строки |
filter[product.barcode] | Штрих-код — точное значение |
filter[product.is_free_price] | Продажа по свободной цене — точное значение |
filter[product.created_at] | Создано — период: [0] — с, [1] — по (Y-m-d) |
filter[common] | Общий — точное значение (с учётом вложенных) |
sort[] | Сортировка, - — по убыванию: id, -id |
with[] | Подгрузить связи: company, stock, product, product.parent, product.category.ancestors, product.brand, product.unit, product.price, product.last_purchase_product, product_price, last_purchase_at, last_purchase_price, available_quantity, reserved_quantity, status |
page | Номер страницы, с 1 |
page-size | Записей на странице, не больше 20 |
GET /company/stock/product?filter[stock_id]=1&filter[common]=0000000000011Ответ · 200
Постраничный ответ: записи в data[], пагинация в links и meta.
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
data | object[] | Данные |
data[].id | integer | ID |
data[].company_id | integer | Компания |
data[].stock_id | integer | Склад |
data[].product_id | integer | Продукт |
data[].quantity | integer | Количество |
data[].sources | object[] | |
data[].sources[].source_type | string | Источник |
data[].sources[].source_id | integer | Источник |
data[].sources[].source_product_id | integer | |
data[].sources[].quantity | number | Количество |
data[].sources[].purchase_price | integer | Цена при покупке |
data[].sources[].purchase_currency | string | Валюта при покупке |
data[].sources[].created_at | string | Создано |
data[].sources[].purchase_price_uzs | integer | |
data[].sources[].purchase_price_usd | integer | |
data[].sources[].purchase_price_eur | integer | |
data[].sources[].purchase_price_rub | integer | |
data[].created_at | string | Создано |
data[].updated_at | string | Обновлено |
{
"data": [
{
"id": 2,
"company_id": 1,
"stock_id": 1,
"product_id": 2,
"quantity": 2,
"sources": [
{
"source_type": "purchase",
"source_id": 1,
"source_product_id": 2,
"quantity": 0.7,
"purchase_price": 2000,
"purchase_currency": "usd",
"created_at": "2026-09-30 12:47:58",
"purchase_price_uzs": 2000000,
"purchase_price_usd": 2000,
"purchase_price_eur": 2000,
"purchase_price_rub": 2000
},
{
"source_type": "purchase",
"source_id": 2,
"source_product_id": 3,
"quantity": 1.3,
"purchase_price": 2200,
"purchase_currency": "usd",
"created_at": "2026-09-30 12:47:59",
"purchase_price_uzs": 2200000,
"purchase_price_usd": 2200,
"purchase_price_eur": 2200,
"purchase_price_rub": 2200
}
],
"created_at": "2026-09-30 12:47:59",
"updated_at": "2026-09-30 12:47:59"
}
],
"links": {
"first": "https://api.wasyt.uz/company/stock/product?page=1",
"last": "https://api.wasyt.uz/company/stock/product?page=1",
"prev": null,
"next": null
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 1,
"links": [],
"path": "https://api.wasyt.uz/company/stock/product",
"per_page": 20,
"to": 1,
"total": 1
},
"total": {
"quantity": "2.00000000",
"purchase_amount": {
"usd": "4260.0"
},
"sale_amount": {
"usd": "4800.0000000000"
}
}
}Складская позиция
/company/stock/product/{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 | Компания |
stock_id | integer | Склад |
product_id | integer | Продукт |
quantity | integer | Количество |
sources | object[] | |
sources[].source_type | string | Источник |
sources[].source_id | integer | Источник |
sources[].source_product_id | integer | |
sources[].quantity | integer | Количество |
sources[].purchase_price | integer | Цена при покупке |
sources[].purchase_currency | string | Валюта при покупке |
sources[].created_at | string | Создано |
sources[].purchase_price_uzs | integer | |
sources[].purchase_price_usd | integer | |
sources[].purchase_price_eur | integer | |
sources[].purchase_price_rub | integer | |
created_at | string | Создано |
updated_at | string | Обновлено |
{
"id": 1,
"company_id": 1,
"stock_id": 1,
"product_id": 1,
"quantity": 1,
"sources": [
{
"source_type": "purchase",
"source_id": 1,
"source_product_id": 1,
"quantity": 1,
"purchase_price": 1000,
"purchase_currency": "uzs",
"created_at": "2026-09-30 12:47:59",
"purchase_price_uzs": 1000,
"purchase_price_usd": 1,
"purchase_price_eur": 1,
"purchase_price_rub": 1
}
],
"created_at": "2026-09-30 12:47:59",
"updated_at": "2026-09-30 12:47:59"
}
