Syrve App Zewnętrzne Menu
W Syrve Live API v2 zaimplementowaliśmy metody, które pozwalają na bardziej elastyczną pracę z zewnętrznym menu. Zaletą nowych metod jest to, że przy żądaniu menu, zewnętrzny system otrzyma aktualne ceny i dostępność dań w restauracji w momencie żądania, nie ma potrzeby ręcznego synchronizowania zewnętrznego menu Syrve App z cenami restauracji.
Metody:
/api/2/menu - lista zewnętrznych menu i kategorii cen dostępnych dla ApiLogin
/api/2/menu/by_id - metoda uzyskiwania zewnętrznego menu (id menu jest przekazywane w żądaniu)
Praca z zewnętrznym menu Syrve App przez Syrve Live API jest dostępna tylko dla użytkowników wersji chmurowej.
Zewnętrzne menu nie współpracują z aktualizacjami cen.
Aby pracować z Syrve Loyalty, nadal musisz używać zewnętrznego menu utworzonego w Syrve Instance. Wystarczy po prostu zduplikować pozycje z zewnętrznego menu Syrve App, dodając te same dania do Syrve Instance bez dodatkowych ustawień struktury menu.
Przypadki użycia
1. Restauracja chce ustawić inny skład dań w zewnętrznym menu dla różnych typów zamówień. Na przykład, niektóre dania nie mogą być dostarczane przez usługi kurierskie, ale muszą być dostępne w zewnętrznym menu do odbioru. Mogą również istnieć różne ceny dla odbioru i dostawy.
2. Restauracja ma osobną aplikację do zamówień dostaw i osobną aplikację do zamówień przy stoliku. Menu jest takie samo, ale ceny lub zestaw restauracji, z którymi aplikacje współpracują, mogą się różnić.
3. Różne ceny dań i różna dostępność dań w różnych restauracjach sieci. Na przykład, w "Restauracji 1" sałatka kosztuje 10 USD, w "Restauracji 2" - 15 USD, a w "Restauracji 3" danie zostało wycofane ze sprzedaży.
4. Restauracja chce umieścić na swojej stronie internetowej informacje o alergenach obecnych w posiłku.
5. Restauracja używa rozmiarów dań i chce wyświetlać informacje o kaloriach i wadze w zależności od rozmiaru dania.
6. Restauracja używa rozmiarów dań i chce, aby zdjęcia dań na stronie różniły się w zależności od rozmiaru.
7. Menu restauracji (zestaw dań, ceny) jest inne dla różnych zewnętrznych usług.
8. Restauracja chce ograniczyć zewnętrzną usługę przed współpracą z siecią restauracji i zapewnić dostęp tylko do niektórych restauracji w sieci.
Algorytm pracy
Konfigurowanie kont do pracy z API
Aby pracować z zewnętrznymi menu przez API, musisz je powiązać z kontem Syrve Live API.
-
Zaloguj się do swojego konta osobistego Syrve App - Syrve Live API
-
Wybierz "API Clients" - Dodaj:
- Ustaw nazwę konta i opcjonalnie określ źródło zamówienia:
"Źródło zamówienia" jest przeznaczone zarówno do oznaczania zamówień przychodzących przez API, jak i do ograniczania widoczności zamówień.
Jeśli "Źródło zamówienia" nie jest określone, to przez API można uzyskać informacje o wszystkich zamówieniach restauracji.
Jeśli "Źródło zamówienia" jest określone, to zamówienia utworzone przez API będą oznaczone jako "Źródło", a dostęp do zamówień będzie ograniczony przez filtr.
- Wybierz zewnętrzne menu z rozwijanej listy (można wybrać wiele opcji):
- Wybierz wartość dla pola Źródło Ceny. Ceny w zewnętrznym menu mogą pochodzić:
- z zewnętrznego menu (ceny dań są podstawiane z zewnętrznego menu utworzonego w Syrve App.)
- z wybranej kategorii cen (ceny są pobierane z konkretnej restauracji dla danej kategorii cen, zewnętrzne menu Syrve App określa tylko strukturę menu).
Jeśli w "Źródło ceny" wybrano "Kategoria cen", to z rozwijanej listy wybierz jedną lub kilka kategorii cen, z którymi będzie pracować zewnętrzny system:
- Zapisz zmiany.
Praca z API
Aby uzyskać listę zewnętrznych menu, z którymi może pracować zewnętrzny system, musisz zażądać wszystkich dostępnych dla konta zewnętrznych menu, w przyszłości, aby uzyskać informacje o konkretnym menu, zostanie użyte pole id z odpowiedzi na żądanie. W tym celu użyj /api/2/menu.
Body jest puste, struktura wyjściowa to:
{
"externalMenus": [
{"id": 42, "name": "Menu 1"},
{"id": 43, "name": "Menu 2"}
],
"priceCategories": [ // null, jeśli w UI wybrałeś zewnętrzne menu jako Źródło Zamówienia
{"id": guid1, "name": "PC 1"},
{"id": guid2, "name": "PC 2"}
],
}
Następnie, używając uzyskanego ID zewnętrznego menu, zażądaj pozycji dla niego przez /api/2/menu/by_id z body:
{
"externalMenuId": 73,
"organizationIds": ["c0a959b8-7ba0-4763-a297-eda830672cca"],
"priceCategoryId": guid lub null
}
Null w tej metodzie można wysłać tylko, jeśli pobieranie cen jest skonfigurowane z zewnętrznego menu. W przypadku uzyskiwania cen z kategorii cen, konieczne jest wskazanie kategorii cen, nawet jeśli jest tylko jedna (bazowa).
W odpowiedzi przychodzi struktura zewnętrznego menu:
{
"i<span>i</span>erSchemaName": null
}
]
}
]
}
Uwagi
-
Przy żądaniu zewnętrznego menu dla kilku organizacji, informacje o cenach żądanych organizacji są zwracane w bloku cen. Jeśli cena = 0, to to danie jest dostępne do sprzedaży po zerowej cenie, jeśli cena = null, to to danie jest zabronione do sprzedaży w tej organizacji.
-
Modyfikatory mają minimalne i maksymalne wartości dla grupy i dla każdego modyfikatora z osobna. Jeśli minQuality > 0, to ta grupa modyfikatorów jest obowiązkowa. maxQuality odpowiada za maksymalną możliwą liczbę modyfikatorów dodanych do dania. Jeśli parametr childModifiersHaveMinMaxRestrictions = false, to ograniczenia liczby modyfikatorów są pobierane z wartości grupy modyfikatorów. Jeśli childModifiersHaveMinMaxRestrictions = true, to ograniczenia liczby modyfikatorów z każdego modyfikatora (elementów) są pobierane.
-
Jeśli itemGroupId = null, to modyfikatory w tej grupie są uważane za proste, pojedyncze.
-
Parametr size Code pokazuje nazwę rozmiaru dla kuchni.
-
Jeśli parametr itemSize zawiera jeden element, a wewnątrz tego elementu sizeId i sizeName = null, to to danie nie ma rozmiaru. Jeśli jest więcej niż 1 element, to to danie ma rozmiary, pola sizeName i sizeId pokazują nazwę i identyfikator rozmiaru.