Инвентарь и стоп-лист
Остатки продуктов и стоп-лист через приложение Hostme Inventory: чтение и обновление наличия позиций меню.
Инвентарь (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.
Связанные разделы. Структуру меню, секций и продуктов см. в Меню: Каталог; модификаторы и налоги — в Меню: Модификаторы и налоги.