Hostme | Инвентарь и стоп-лист

Инвентарь и стоп-лист

Обновлено: 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

ПолеТипОписание
idstring?Идентификатор продукта
productPLUstring?Артикул/штрихкод (PLU/barcode)
namestring?Название
descriptionstring?Описание
visiblebooleanВидимость продукта
imageLocationstring?URL/путь к изображению
pricenumberЦена (зал)
takeawayPricenumber?Цена для самовывоза
deliveryPricenumber?Цена для доставки
productTypestring?Тип продукта на стороне вашего POS
groupIdstring?ID группы (категории)
stockAmountinteger?Остаток — основа стоп-листа
modifiersarray<string>ID модификаторов и групп модификаторов
taxIdsarray<string>ID применённых налогов
taxeRatenumber?Ставка налога (зал)
takeawayTaxeRatenumber?Ставка налога для самовывоза
deliveryTaxeRatenumber?Ставка налога для доставки

GET /products — список продуктов

ПараметрГдеТипОписание
companyId *pathstringИдентификатор компании
restaurantId *pathintegerИдентификатор точки (ресторана)
groupIdquerystringФильтр по группе

Возвращает массив 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 *pathstring
restaurantId *pathinteger

Тело — 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 *pathstring
restaurantId *pathinteger
productId *pathstring

Тело — 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 *pathstring
restaurantId *pathinteger
productId *pathstring

Группы продуктов инвентаря

Группа (VendorProductGroup) — та же модель, что в каталоге: id, name, imageLocation, sequence, visible, productsCount, taxeRate, takeawayTaxeRate, deliveryTaxeRate.

GET /productgroups — список групп

ПараметрГдеТип
companyId *pathstring
restaurantId *pathinteger

Возвращает массив 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 *pathstring
restaurantId *pathinteger
groupId *pathstring

Тело — VendorProductGroup. Ответ — обновлённая группа.

DELETE /productgroups/{groupId} — удалить группу

ПараметрГдеТип
companyId *pathstring
restaurantId *pathinteger
groupId *pathstring

Синхронизация инвентаря

Для пакетной синхронизации остатков в составе core-API есть отдельные эндпоинты под базовым путём /api/core/admin/restaurants/{restaurantId}.

PUT /inventory/sync — запустить синхронизацию

Запускает синхронизацию остатков инвентаря. Тело — ProductInventorySyncRequest.

ПараметрГдеТип
restaurantId *pathinteger
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 *pathinteger
curl -G https://api.hostmeapp.com/api/core/admin/restaurants/123/inventory/syncinfo \
  -H "Authorization: Bearer $TOKEN"

Точная схема успешного ответа (200) в спецификации не зафиксирована — смотрите фактический ответ или Swagger UI.


Связанные разделы. Структуру меню, секций и продуктов см. в Меню: Каталог; модификаторы и налоги — в Меню: Модификаторы и налоги.