API для партнёров

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

Остатки продуктов и стоп-лист через приложение 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

ПолеТипОписание
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.

Terminal window
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. Ответ — созданный продукт.

Terminal window
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. Ответ — обновлённый продукт.

Terminal window
# Уменьшить остаток
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.

Terminal window
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
Terminal window
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
Terminal window
curl -G https://api.hostmeapp.com/api/core/admin/restaurants/123/inventory/syncinfo \
-H "Authorization: Bearer $TOKEN"

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


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