Инвентарь и стоп-лист
Обновлено: 2026-06-24 17:30 MSK
Инвентарь (Inventory) — это работа с остатками продуктов через приложение Hostme Inventory. Эндпоинты позволяют партнёру читать и поддерживать каталог продуктов и групп на стороне инвентаря, обновлять остатки (stockAmount) и тем самым формировать стоп-лист: когда остаток продукта заканчивается, позиция перестаёт продаваться.
Все запросы — под Bearer-токеном (см. Аутентификация). Общие соглашения и ошибки — в разделах Соглашения и Ошибки.
Эндпоинты инвентаря используют составной путь с идентификаторами компании и точки: /api/pos/apps/hostmeinventory/companies/{companyId}/sites/{restaurantId}.
| Метод | Путь | Назначение |
|---|---|---|
GET | /products | Список продуктов инвентаря |
POST | /products | Создать продукт |
PUT | /products/{productId} | Изменить продукт (в т.ч. остаток) |
DELETE | /products/{productId} | Удалить продукт |
GET | /productgroups | Список групп продуктов |
POST | /productgroups | Создать группу |
PUT | /productgroups/{groupId} | Изменить группу |
DELETE | /productgroups/{groupId} | Удалить группу |
Помимо этого есть эндпоинты синхронизации инвентаря в составе core-API (см. ниже).
Продукты инвентаря
Продукт инвентаря (VendorProduct) — та же модель, что и в каталоге. Для стоп-листа ключевое поле — stockAmount (остаток); видимостью позиции управляет visible.
Поля VendorProduct
| Поле | Тип | Описание |
|---|---|---|
id | string? | Идентификатор продукта |
productPLU | string? | Артикул/штрихкод (PLU/barcode) |
name | string? | Название |
description | string? | Описание |
visible | boolean | Видимость продукта |
imageLocation | string? | URL/путь к изображению |
price | number | Цена (зал) |
takeawayPrice | number? | Цена для самовывоза |
deliveryPrice | number? | Цена для доставки |
productType | string? | Тип продукта на стороне вашего POS |
groupId | string? | ID группы (категории) |
stockAmount | integer? | Остаток — основа стоп-листа |
modifiers | array<string> | ID модификаторов и групп модификаторов |
taxIds | array<string> | ID применённых налогов |
taxeRate | number? | Ставка налога (зал) |
takeawayTaxeRate | number? | Ставка налога для самовывоза |
deliveryTaxeRate | number? | Ставка налога для доставки |
GET /products — список продуктов
| Параметр | Где | Тип | Описание |
|---|---|---|---|
companyId * | path | string | Идентификатор компании |
restaurantId * | path | integer | Идентификатор точки (ресторана) |
groupId | query | string | Фильтр по группе |
Возвращает массив VendorProduct.
curl -G https://api.hostmeapp.com/api/pos/apps/hostmeinventory/companies/COMPANY_ID/sites/123/products \ -H "Authorization: Bearer $TOKEN" \ --data-urlencode "groupId=GROUP_ID"
POST /products — создать продукт
| Параметр | Где | Тип |
|---|---|---|
companyId * | path | string |
restaurantId * | path | integer |
Тело — VendorProduct. Ответ — созданный продукт.
curl -X POST https://api.hostmeapp.com/api/pos/apps/hostmeinventory/companies/COMPANY_ID/sites/123/products \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Свежевыжатый сок",
"productPLU": "2001",
"price": 350,
"stockAmount": 40,
"visible": true
}'
PUT /products/{productId} — изменить продукт (обновить остаток)
Основной способ управления стоп-листом: обновите stockAmount, чтобы синхронизировать остаток. Когда остаток падает до нуля, позиция попадает в стоп-лист.
| Параметр | Где | Тип |
|---|---|---|
companyId * | path | string |
restaurantId * | path | integer |
productId * | path | string |
Тело — VendorProduct. Ответ — обновлённый продукт.
# Уменьшить остаток
curl -X PUT https://api.hostmeapp.com/api/pos/apps/hostmeinventory/companies/COMPANY_ID/sites/123/products/PRODUCT_ID \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{ "id": "PRODUCT_ID", "stockAmount": 5 }'
# Поставить позицию в стоп-лист (остаток = 0)
curl -X PUT https://api.hostmeapp.com/api/pos/apps/hostmeinventory/companies/COMPANY_ID/sites/123/products/PRODUCT_ID \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{ "id": "PRODUCT_ID", "stockAmount": 0 }'
DELETE /products/{productId} — удалить продукт
| Параметр | Где | Тип |
|---|---|---|
companyId * | path | string |
restaurantId * | path | integer |
productId * | path | string |
Группы продуктов инвентаря
Группа (VendorProductGroup) — та же модель, что в каталоге: id, name, imageLocation, sequence, visible, productsCount, taxeRate, takeawayTaxeRate, deliveryTaxeRate.
GET /productgroups — список групп
| Параметр | Где | Тип |
|---|---|---|
companyId * | path | string |
restaurantId * | path | integer |
Возвращает массив VendorProductGroup.
curl -G https://api.hostmeapp.com/api/pos/apps/hostmeinventory/companies/COMPANY_ID/sites/123/productgroups \ -H "Authorization: Bearer $TOKEN"
POST /productgroups — создать группу
Тело — VendorProductGroup. Ответ — созданная группа.
PUT /productgroups/{groupId} — изменить группу
| Параметр | Где | Тип |
|---|---|---|
companyId * | path | string |
restaurantId * | path | integer |
groupId * | path | string |
Тело — VendorProductGroup. Ответ — обновлённая группа.
DELETE /productgroups/{groupId} — удалить группу
| Параметр | Где | Тип |
|---|---|---|
companyId * | path | string |
restaurantId * | path | integer |
groupId * | path | string |
Синхронизация инвентаря
Для пакетной синхронизации остатков в составе core-API есть отдельные эндпоинты под базовым путём /api/core/admin/restaurants/{restaurantId}.
PUT /inventory/sync — запустить синхронизацию
Запускает синхронизацию остатков инвентаря. Тело — ProductInventorySyncRequest.
| Параметр | Где | Тип |
|---|---|---|
restaurantId * | path | integer |
curl -X PUT https://api.hostmeapp.com/api/core/admin/restaurants/123/inventory/sync \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{}'
Структура тела
ProductInventorySyncRequestи схема успешного ответа (200) в спецификации детально не зафиксированы — уточняйте поля в Swagger UI.
GET /inventory/syncinfo — статус синхронизации
Возвращает информацию о состоянии синхронизации инвентаря.
| Параметр | Где | Тип |
|---|---|---|
restaurantId * | path | integer |
curl -G https://api.hostmeapp.com/api/core/admin/restaurants/123/inventory/syncinfo \ -H "Authorization: Bearer $TOKEN"
Точная схема успешного ответа (200) в спецификации не зафиксирована — смотрите фактический ответ или Swagger UI.
Связанные разделы. Структуру меню, секций и продуктов см. в Меню: Каталог; модификаторы и налоги — в Меню: Модификаторы и налоги.