Остатки
Раздел API для управления остатками товаров по складам в системе ERP: просмотр, создание, обновление и импорт записей инвентаря.
Получение списка остатков (табличное представление)
- Метод
- GET
- URL
https://api.gigma.ru/api/tables/inventories- Авторизация
- Bearer token
- Headers
Authorization: Bearer {token}
Параметры запроса
query— поисковая строкаowned_by_us— иерархия складов (true/false)warehouse_id[]— массив ID складовtype_id[]— массив ID типов товаровcity_id[]— массив ID городовbrand_id[]— массив ID производителейvat_id[]— ID НДСapplication_id[]— ID приложения
Ответ
При успешном действии возвращается HTTP код 200 с массивом columns, объектом warehouseNomenclatures и данными пагинации.
Получение списка остатков (JSON)
- Метод
- GET
- URL
https://api.gigma.ru/api/inventories- Авторизация
- Bearer token
- Headers
Authorization: Bearer {token}
⚠ Backend bug: на боевых данных возвращает IncompleteRead(0 bytes read) — запрос обрывается без ответа. Причина: нет пагинации (->get() без ->paginate()), при большом каталоге сервер не успевает отдать весь ответ. Пока не починено — используй табличный эндпоинт с пагинацией (GET /api/tables/inventories?per_page=50).
Ответ
При успешном действии возвращается HTTP код 200 с массивом inventories, содержащим полные данные о товарах, количестве, ценах и НДС.
Создание записи остатка
- Метод
- POST
- URL
https://api.gigma.ru/api/inventories- Авторизация
- Bearer token
- Headers
Authorization: Bearer {token}
Параметры запроса
⚠ Реальный minimum (сверено): nomenclature_id + warehouse_id. Остальные опциональны на уровне валидатора, но quantity и price обязательны по смыслу.
nomenclature_id(int, обязательно) — ID номенклатуры (GET /api/nomenclatures)warehouse_id(int, обязательно) — ID склада (GET /api/warehouses)code(string, опционально) — код позиции остаткаvat_id(int, опционально) — ID ставки НДС (GET /api/vats)quantity(int, опционально) — количество в штуках, неотрицательное целоеprice(string, опционально) — цена в формате decimal-string, 2 знака ("1000.00")discount(int, опционально) — процент скидки, 0–100markup(int, опционально) — процент наценки
Пример запроса
{
"code": "INV-001",
"warehouse_id": 5,
"nomenclature_id": 100,
"vat_id": 2,
"quantity": 50,
"price": "1000.00",
"discount": 0,
"markup": 30
} Ответ
При успешном действии возвращается HTTP код 201 с созданным объектом остатка.
{
"inventory": {
"id": 200,
"code": "INV-001",
"warehouse": { "id": 5, "name": "Главный склад" },
"nomenclature": { "id": 100, "name": "Крем для лица «Нежность»", "code": "SKU-001", "avatar": "https://api.gigma.ru/storage/uploads/avatar.jpg" },
"counterparty": { "id": 3, "name": "ООО Поставщик", "inn": "7712345678", "type_id": 1 },
"invoice": { "number": "РН-001", "date": "2026-05-16", "row_number": 1 },
"vat": { "id": 2, "name": "НДС 20%" },
"vat_rate": "20%",
"vat_amount": "166.67",
"quantity": 50,
"price": "1000.00",
"line_total_without_vat": "50000.00",
"line_total_with_vat": "50000.00",
"currency_code": "RUB",
"discount": 0,
"markup": 30,
"created_at": "2026-05-16T07:00:00.000000Z",
"updated_at": "2026-05-16T07:00:00.000000Z"
}
} Описание новых полей
nomenclature.avatar(string|null) — URL аватара номенклатурыcounterparty(object|null) — поставщик:id,name,inn,type_idinvoice(object|null) — реквизиты накладной:number,date,row_numbervat(object|null) — ставка НДС как объект{id, name}(не просто число)vat_rate(string|null) — строковое представление ставки («20%», «10%», «0%»)vat_amount(string|null) — сумма НДС по строке, decimal-stringline_total_without_vat(string|null) — итого по строке без НДСline_total_with_vat(string|null) — итого по строке с НДСcurrency_code(string|null) — код валюты ISO 4217 ("RUB")
Обновление записи остатка
- Метод
- PUT
- URL
https://api.gigma.ru/api/inventories/{id}- Авторизация
- Bearer token
- Headers
Authorization: Bearer {token}
Параметры запроса
Те же параметры, что и в эндпоинте создания.
Ответ
При успешном действии возвращается HTTP код 200 с обновлённым объектом остатка.
Получение выбранного остатка
- Метод
- GET
- URL
https://api.gigma.ru/api/inventories/{id}- Авторизация
- Bearer token
- Headers
Authorization: Bearer {token}
Ответ
При успешном действии возвращается HTTP код 200 с полной информацией о складе, номенклатуре, количестве, цене и НДС.
Получение истории изменений остатка
- Метод
- GET
- URL
https://api.gigma.ru/api/inventories/{id}/history- Авторизация
- Bearer token
- Headers
Authorization: Bearer {token}
Ответ
При успешном действии возвращается HTTP код 200 с записями истории, содержащими icon, color, title, description, datetime.
Импорт остатков
- Метод
- POST
- URL
https://api.gigma.ru/api/inventories/upload- Авторизация
- Bearer token
- Headers
Authorization: Bearer {token}
Два режима в зависимости от Content-Type. В обоих режимах warehouse_id обязателен. Режим А (multipart/form-data): передаётся file — Excel .xmr. Режим Б (application/json): передаётся items[] с полями накладной.
⚠ Реальный minimum (сверено через POST {} → 422): warehouse_id + (file или items[] со всеми полями ниже).
Параметры запроса
warehouse_id(int, обязательно) — ID склада (GET /api/warehouses). Обязателен в обоих режимах.file(binary, опционально) — Excel-файл.xmr; режим А. Если передан — поля накладной иitemsне нужны.invoice_number(string, опционально) — номер накладной; обязателен в режиме Б.invoice_date(string, опционально) — дата накладной ISO 8601 ("2026-05-16"); обязателен в режиме Б.supplier_inn(string, опционально) — ИНН поставщика; обязателен в режиме Б.supplier_name(string, опционально) — наименование поставщика; обязателен в режиме Б.currency_code(string, опционально) — код валюты ISO 4217 ("RUB"); обязателен в режиме Б.items(object[], опционально) — строки накладной; обязателен в режиме Б. Каждая строка:row_number(int, обязательно) — порядковый номер строкиitem_name(string, обязательно) — наименование товараquantity(number, обязательно) — количествоprice(string, обязательно) — цена за единицу, decimal-string ("4000.00")sum_without_vat(string, обязательно) — сумма без НДС, decimal-stringsum_with_vat(string, обязательно) — сумма с НДС, decimal-stringvat_rate(string, обязательно) — ставка НДС:"0%","10%","20%"
Пример запроса (режим А — файл)
curl -X POST https://api.gigma.ru/api/inventories/upload
-H "Authorization: Bearer $TOKEN"
-H "Accept: application/json"
-F "warehouse_id=1"
-F "file=@./inventories.xmr" Пример запроса (режим Б — JSON)
{
"warehouse_id": 1,
"invoice_number": "РН-001",
"invoice_date": "2026-05-16",
"supplier_inn": "7712345678",
"supplier_name": "ООО Поставщик",
"currency_code": "RUB",
"items": [
{
"row_number": 1,
"item_name": "Микрофон Shure SM58",
"quantity": 5,
"price": "4000.00",
"sum_without_vat": "20000.00",
"sum_with_vat": "20000.00",
"vat_rate": "0%"
}
]
} Ответ
При успешном действии возвращается HTTP код 200.
{
"message": "Import successful"
} При ошибках формата — 422 с описанием проблемных строк в errors.