ProfirestAPI v2
Finální smlouva · v ostrém provozu
Načítám dokumentaci…

Profirest API v2 – referenční dokumentace

Veřejné REST API restauračního systému Profirest. Smlouva 26.11.28 (13. 11. 2026), 217 operací v 25 oblastech. Adresa API: https://api.mujprofirest.cz/v2.

Profirest API v2 propojuje e-shopy, zařízení a partnerské systémy s restauracemi, které používají Profirest.

EET 2.0 eviduje Profirest – vaše aplikace tržby neeviduje. Každou tržbu, která jde přes Profirest (objednávku vaší aplikace, účtenku pokladny), zaeviduje do EET 2.0 (elektronická evidence tržeb od 1. 1. 2027) server Profirestu: podepíše ji certifikátem provozovny a odešle, když zákazník zaplatí na místě – hotově nebo kartou kurýrovi či při odběru, v okamžiku předání. Platby přes internet (online) se neevidují. Vaše aplikace finanční správě nic neposílá a certifikát nepotřebuje. Jen když tržbu už zaevidoval sám jiný systém provozovny (její vlastní pokladna nebo kiosek), pošlete…

Dál: co API umí (přehled) · návody krok za krokem · playground · katalog chyb · changelog · openapi.json · celá reference v Markdownu · žádost o přístup

Úvod

Oblasti

API

Kořen API a aktuální připojení.

GET / – Kořen API

Verze API a odkazy na související zdroje. Nepotřebuje token.

Přihlášení: bez přihlášení

GET /app-versions – Nejnovější verze aplikací Profirestu

Nejnovější vydaná verze každé vlastní aplikace Profirestu, ostrá a beta zvlášť, s odkazem ke stažení a seznamem změn – aby aplikace mohla nabídnout aktualizaci, i když ještě není spárovaná. critical znamená, že starší verzi už nemá používat. Nepotřebuje token; smí se 5 minut držet v mezipaměti.

Přihlášení: bez přihlášení

GET /connection – Aktuální připojení

Ke kterému účtu, provozovnám a oprávněním access token patří a jaká nastavení k němu zvolil majitel.

Přihlášení: oauth2

POST /devices/current/legacy-identity – Vyzvednout identitu API v1 zařízení

Jen vlastní aplikace Profirestu pro pokladnu, kuchyňský displej a kurýra. Zařízení spárované rovnou na API v2 dostane záložní identitu API v1, aby se při vrácení provozovny (Profirest-Api-Target: v1, nebo když API v2 neodpovídá) vrátilo na API v1 bez nového párování. Zavolejte jednou po spárování, nebo při startu…

Přihlášení: oauth2

OAuth

Připojení klienta k účtu („Připojit přes Profirest“).

GET /oauth/authorize – Zahájit připojení (v prohlížeči)

Sem přesměrujte prohlížeč majitele restaurace. Majitel se přihlásí do Profirestu (včetně dvoufázového ověření), vybere provozovny a potvrdí oprávnění. Profirest pak přesměruje zpět na redirect_uri s parametry code, state a iss (RFC 9207), nebo s error, state a iss. Ověřte, že iss je…

Přihlášení: bez přihlášení

POST /oauth/device_authorization – Zahájit párování zařízení

Párování zařízení bez pohodlného prohlížeče podle RFC 8628: pokladna, kuchyňský displej, píchačka nebo telefon kurýra. Jen aplikace, kterým to Profirest povolil (naše vlastní aplikace).

Přihlášení: clientBasic nebo bez přihlášení

POST /oauth/token – Získat nebo obnovit tokeny

Výměna autorizačního kódu za tokeny, nebo refresh tokenu za nové tokeny. Důvěrný klient se ověří přes HTTP Basic (client_secret_basic) nebo parametry client_id a client_secret v těle (client_secret_post). Veřejný klient pošle jen client_id a spoléhá na PKCE. Neznámé parametry se ignorují (RFC 6749).

Přihlášení: clientBasic nebo bez přihlášení

POST /oauth/revoke – Zneplatnit token

Zneplatní access nebo refresh token (RFC 7009). Zneplatnění refresh tokenu ukončí jeho řadu tokenů – všechny access a refresh tokeny, které pocházejí ze stejného povolení nebo ze stejného spárování zařízení; ostatní řady tokenů připojení fungují dál. Patří-li řada spárovanému zařízení, zařízení se navíc odpáruje a…

Přihlášení: clientBasic nebo bez přihlášení

GET /.well-known/oauth-authorization-server – Metadata OAuth serveru

Metadata podle RFC 8414 pro OAuth knihovny, které si endpointy zjišťují samy.

Přihlášení: bez přihlášení

Restaurants

Provozovny připojení, jejich otevírací doba, příjem objednávek, rozvozové zóny a časy, na které lze objednat. Otevírací doba říká, kdy má provozovna otevřeno (ukazujte ji hostům); příjem objednávek, kdy se přijímají objednávky aplikací web (e-shopů) – rozvoz i osobní odběr. Výchozí je obojí stejné.

GET /restaurants – Provozovny připojení

Provozovny, ke kterým vám majitel povolil přístup.

Přihlášení: oauth2, oprávnění restaurants:read

GET /restaurants/{restaurant_id} – Detail provozovny

Kontaktní údaje, časová zóna, měna a co provozovna právě teď přijímá. ordering se počítá v okamžiku požadavku; načtěte ho znovu v ordering.next_change_at nebo při restaurant.changed.

Přihlášení: oauth2, oprávnění restaurants:read

GET /restaurants/{restaurant_id}/opening-hours – Otevírací doba

Skutečná otevírací doba po dnech pro zadané období, spočítaná Profirestem, a k tomu týdenní šablona pro zobrazení. Používejte days, ne vlastní výpočet: budoucí výjimky (svátky) se tam objeví bez jakékoli změny na vaší straně.

Přihlášení: oauth2, oprávnění restaurants:read

PUT /restaurants/{restaurant_id}/opening-hours – Nastavit týdenní otevírací dobu

Nahradí běžný týden provozovny – stejně jako uložení Nastavení → Otevírací doba v administraci. E-shop, aplikace (objednávání, časy) i administrace novou dobu použijí hned a přijde událost restaurant.changed. Pošlete všech 7 dní; den bez intervalů je zavřeno. Intervaly dne jdou po sobě bez překryvu (oba konce jsou…

Přihlášení: oauth2, oprávnění opening_hours:write

GET /restaurants/{restaurant_id}/order-hours – Příjem objednávek

Kdy provozovna přijímá objednávky aplikací web (e-shopů) – rozvoz i osobní odběr, „co nejdřív“ i na pozdější čas – po dnech pro zadané období, a k tomu týdenní šablona pro zobrazení. Provozovna je nastavuje v administraci (Nastavení → Otevírací doba); výchozí je stejně jako otevírací doba (same_as_opening_hours).…

Přihlášení: oauth2, oprávnění restaurants:read

GET /restaurants/{restaurant_id}/delivery-zones – Rozvozové zóny

Oblasti, kam provozovna rozváží, s cenou dopravy, minimální objednávkou a časy rozvozu. Jen pro zobrazení a našeptávání adres: zónu objednávky vždy určí Profirest v kalkulaci. Když adresa leží ve více zónách, vyhraje ta s nejnižší minimální objednávkou, potom ta s nejnižší cenou dopravy. Zóna si při uložení zón v…

Přihlášení: oauth2, oprávnění restaurants:read

GET /restaurants/{restaurant_id}/time-slots – Časy, na které lze objednat

Zda lze právě teď objednat „co nejdřív“ a které časy lze zvolit pro zadaný den. Počítá Profirest z příjmu objednávek (getOrderHours), časů rozvozu, předstihu a nástupu kurýrů. Objednávky na pozdější čas se přijímají jen v době, kdy provozovna přijímá objednávky. Nabízejte jen tyto časy; kalkulace je ověří znovu.

Přihlášení: oauth2, oprávnění restaurants:read

GET /restaurants/{restaurant_id}/accounting-export – Účetní export pro Pohodu nebo Money

Účetní soubor pro jednu provozovnu a nejvýš 31 dní: receipts (účtenky) nebo invoices (faktury) objednávek dokončených v období (bez smazaných; karta při převzetí se počítá jako karta), nebo summary (souhrny uzávěrek). Pohoda: XML podle aktuální POHODY, jen zaplacené účtenky (ne kuchyňské bony otevřených stolů)…

Přihlášení: oauth2, oprávnění accounting:read

GET /restaurants/{restaurant_id}/shift-closes – Uzávěrky

Uzávěrky provozovny ze všech zdrojů – pokladny na API v1 i v2, webový kuchyňský displej, kuchyňské displeje a kuchyně přes toto API – od nejnovější, se součty, jaké ukazuje detail uzávěrky v administraci. source podle objednávek uzávěrky říká, odkud přišla. Částky jsou v databázi uložené s omezenou přesností; tady…

Přihlášení: oauth2, oprávnění reports:read

GET /restaurants/{restaurant_id}/shift-closes/{close_id} – Jedna uzávěrka

Jedna uzávěrka se součty. Administrace může objednávky uzavřené směny později změnit (platbu, storno), takže se součty mohou změnit také – poznáte to podle ETag.

Přihlášení: oauth2, oprávnění reports:read

GET /restaurants/{restaurant_id}/reports/sales-summary – Souhrn tržeb

Tržba, počet objednávek, průměrná objednávka a spropitné za zadané dny a k tomu jeden rozpad (group_by). Objednávky tak, jak je počítají Statistiky v administraci: nesmazané, uzavřené (finished) v zadaných dnech, bez bonů otevřených stolů; tržba je celková částka objednávky i s dopravou – stejná čísla, jaká…

Přihlášení: oauth2, oprávnění reports:read

GET /restaurants/{restaurant_id}/reports/product-sales – Prodej položek

Prodané kusy a tržba po produktech, kategoriích, sortimentech nebo výrobních stanovištích, jako „Výkonnost produktů“ ve Statistikách administrace. Objednávky tak, jak je počítají Statistiky v administraci: nesmazané, uzavřené (finished) v zadaných dnech, bez bonů otevřených stolů; tržba je celková částka objednávky…

Přihlášení: oauth2, oprávnění reports:read

GET /restaurants/{restaurant_id}/reports/tips – Spropitné

Spropitné za zadané dny podle způsobu platby, podle zaměstnance, který objednávku uzavřel, a podle kurýra, jako Statistiky → Spropitné v administraci. Objednávky tak, jak je počítají Statistiky v administraci: nesmazané, uzavřené (finished) v zadaných dnech, bez bonů otevřených stolů; tržba je celková částka…

Přihlášení: oauth2, oprávnění reports:read

GET /restaurants/{restaurant_id}/reports/charges – Poplatky

Kolik objednávek mělo dopravu, doplatek do minimální objednávky a expresní doručení a kolik vynesly, jako poplatky ve Statistikách administrace – ze všech zdrojů (pokladny, e-shop, kuchyňský displej, aplikace). Objednávky tak, jak je počítají Statistiky v administraci: nesmazané, uzavřené (finished) v zadaných…

Přihlášení: oauth2, oprávnění reports:read

GET /restaurants/{restaurant_id}/reports/vat – Rozpis DPH

DPH po sazbách za zadané dny jako daňový přehled ve Statistikách administrace, spočítané stejně jako kopie účtenky a účetní exporty: sleva na celý účet, doprava a úprava ceny se dělí do sazeb poměrem hrubých částek položek, zaokrouhlení do DPH nevstupuje. Objednávky tak, jak je počítají Statistiky v administraci…

Přihlášení: oauth2, oprávnění reports:read

GET /restaurants/{restaurant_id}/sales – Doklady prodeje

Doklady prodeje provozovny ze všech zdrojů – pokladny na API v1 i v2, web, kuchyň a rozvozové platformy – od nejstaršího podle času uzavření, takže si je účetní nebo BI systém může stahovat den po dni. Stejné objednávky jako Statistiky v administraci (nesmazané, bez bonů otevřených stolů). Částky, rozpis DPH, slevy…

Přihlášení: oauth2, oprávnění reports:read

GET /restaurants/{restaurant_id}/sales/{sale_id} – Jeden doklad prodeje

Jeden doklad. Administrace může doklad později změnit (způsob platby, storno, uzávěrka), takže se může změnit – poznáte to podle ETag.

Přihlášení: oauth2, oprávnění reports:read

GET /restaurants/{restaurant_id}/cash-book – Pokladní kniha

Pokladní kniha provozovny za zadané dny tak, jak ji ukazuje Statistiky → Pokladní kniha v administraci: hotovost na začátku a na konci každého dne i teď, hotovost za účtenky a dýško v hotovosti za den (počítá se z objednávek placených hotově – karta při převzetí ne, bon do kuchyně před zaplacením ne) a ručně zapsané…

Přihlášení: oauth2, oprávnění reports:read

Catalog

Kategorie, produkty, ceny a dostupnost jedné provozovny.

GET /restaurants/{restaurant_id}/catalog – Sortiment provozovny

Vše, co provozovna prodává online v okamžiku at: kategorie, produkty s cenami této provozovny, přílohy a doplňky, alergeny a denní menu toho dne. Ceny jsou konečné včetně DPH.

Přihlášení: oauth2, oprávnění catalog:read

GET /restaurants/{restaurant_id}/availability – Zbývající porce

Produkty s omezeným počtem porcí a kolik jich teď zbývá. Produkty, které tu nejsou, omezené nejsou. Mění se často, proto je oddělená od sortimentu; načtěte ji znovu při availability.changed. Každá příloha nebo doplněk spotřebuje také jednu porci svého produktu. Aplikace personálu vidí porce i tehdy, když je…

Přihlášení: oauth2, oprávnění catalog:read

PUT /restaurants/{restaurant_id}/availability/{product_id} – Nastavit zbývající porce produktu

Nastaví, kolik porcí produktu zbývá; 0 ho označí jako vyprodaný a null omezení zruší. Číslo se zapíše tam, odkud prodej porce bere: do dnešního denního menu, když v něm produkt je s omezenými porcemi, jinak do porcí produktu v provozovně – stejné číslo jako v administraci. null zruší omezení i v dnešním denním…

Přihlášení: oauth2, oprávnění availability:write

GET /restaurants/{restaurant_id}/promotions – Akce a slevové kódy

Akce provozovny platné v okamžiku at pro objednávky z aplikací hostů – abyste je mohli ukázat zákazníkům (třeba „Doprava zdarma nad 500 Kč“). Nastavuje je provozovna v administraci. Akce bez kódu se v kalkulaci uplatní sama; u akce s requires_code zákazník zadá kód a vy ho pošlete v QuoteRequest.promo_codes.…

Přihlášení: oauth2, oprávnění catalog:read

GET /restaurants/{restaurant_id}/daily-menu – Denní menu na týden

Denní menu jednoho týdne, jak ho provozovna nastavila v administraci – třeba pro web restaurace. Pro každý den, kdy se podává, dostanete jeho položky s cenami menu; položky, ceny, alergeny i viditelnost jsou stejné jako v sortimentu toho dne v čase menu (GET …/catalog?at=). Dny bez menu chybí, enabled: false…

Přihlášení: oauth2, oprávnění catalog:read

Orders

Kalkulace a objednávky, které jdou do kuchyňského displeje.

POST /restaurants/{restaurant_id}/quotes – Spočítat košík

Profirest spočítá košík s cenami platnými v čase objednávky, najde rozvozovou zónu, přidá cenu dopravy, doplatek do minimální objednávky zóny a na přání expresní doručení (fulfillment.speed), uplatní akce provozovny a slevový kód (discounts), vouchery a ověří čas. Ceny jsou zaručené do expires_at (15 minut).…

Přihlášení: oauth2, oprávnění orders:write

GET /restaurants/{restaurant_id}/quotes/{quote_id} – Detail kalkulace

Kalkulace vytvořená vaším připojením, i po vypršení (drží se 24 hodin).

Přihlášení: oauth2, oprávnění orders:write

GET /restaurants/{restaurant_id}/orders – Objednávky tohoto připojení

Objednávky, které vaše připojení vytvořilo na této provozovně, od nejnovější.

Přihlášení: oauth2, oprávnění orders:read

POST /restaurants/{restaurant_id}/orders – Vytvořit objednávku

Vytvoří objednávku z platné kalkulace s jejími cenami. Porce a vouchery se rezervují ve stejné transakci; když něco došlo nebo voucher už nelze použít, dostanete chybu a nic nevznikne.

Přihlášení: oauth2, oprávnění orders:write

GET /restaurants/{restaurant_id}/orders/{order_id} – Detail objednávky

Aktuální stav objednávky vytvořené vaším připojením.

Přihlášení: oauth2, oprávnění orders:read

POST /restaurants/{restaurant_id}/orders/{order_id}/confirm-payment – Potvrdit online platbu

Označí pending online platbu jako zaplacenou a pošle objednávku do kuchyně. Jen ve stavu awaiting_payment; po payment_deadline je objednávka už zrušená a dostanete 409 order_not_awaiting_payment, pak peníze zákazníkovi vraťte. Když platba neprošla, objednávku místo toho zrušte.

Přihlášení: oauth2, oprávnění orders:write

POST /restaurants/{restaurant_id}/orders/{order_id}/cancel – Zrušit objednávku

Zruší objednávku ve stavu awaiting_payment nebo received (kuchyně ji nezačala připravovat; Profirest to v okamžiku rušení ověří znovu). Bon už může být vytištěný; z displeje kuchyně objednávka zmizí. Později vrátí 409 order_not_cancellable; pak ji může zrušit jen provozovna. Rezervované porce se uvolní a…

Přihlášení: oauth2, oprávnění orders:write

Customers

Propojení vašich zákazníků s databází klientů účtu a věrnostní body.

GET /customers – Zákazníci propojení tímto připojením

Zákazníci, které vaše připojení propojilo (POST /customers), v pořadí, v jakém byli propojeni. Propojení jiných připojení účtu se nikdy neukážou, ani se stejným telefonním číslem – každé připojení vidí jen svá (všechna zařízení jedné aplikace na účtu sdílejí jedno připojení). Neověření zákazníci v seznamu jsou…

Přihlášení: oauth2, oprávnění customers:read

POST /customers – Propojit zákazníka

Propojí vašeho zákazníka s databází klientů účtu podle telefonního čísla, takže se jeho objednávky počítají stejnému člověku jako v restauraci. Odpověď nikdy neprozradí, zda už telefon známe, a Profirest nikdy nevrátí údaje, které o člověku má: vidíte jen to, co jste poslali. Věrnostní body uvidíte po ověření…

Přihlášení: oauth2, oprávnění customers:write

GET /customers/{customer_id} – Detail zákazníka

Jedno propojení zákazníka vaším připojením s ETag pro PATCH. Obsahuje jen to, co vaše připojení poslalo (viz Customer). Propojení jiného připojení, propojení, které jste odebrali (DELETE), nebo smazané, protože provozovna toho zákazníka smazala v administraci, vrátí 404.

Přihlášení: oauth2, oprávnění customers:read

PATCH /customers/{customer_id} – Upravit zákazníka

Změní jen poslaná pole. V If-Match pošlete ETag, který jste načetli. Změna telefonu zákazníka znovu propojí a zruší ověření.

Přihlášení: oauth2, oprávnění customers:write

DELETE /customers/{customer_id} – Zrušit propojení a smazat zákazníka

Odstraní propojení a všechny údaje, které vaše připojení o zákazníkovi poslalo (například když zákazník chce být zapomenut). Vlastní záznam restaurace o klientovi a jeho dřívější objednávky zůstávají, protože patří restauraci.

Přihlášení: oauth2, oprávnění customers:write

POST /customers/{customer_id}/phone-verification – Poslat ověřovací kód

Profirest pošle zákazníkovi SMS se šestimístným kódem. Kód platí 10 minut. Omezení: nový kód až po resend_after; nejvýš 5 kódů na telefonní číslo a připojení za den a 15 na číslo ze všech připojení; denní kvóta SMS na připojení; SMS jen do zemí, kam Profirest doručuje. SMS se platí z kreditu majitele restaurace.

Přihlášení: oauth2, oprávnění customers:write

POST /customers/{customer_id}/phone-verification/confirm – Potvrdit ověřovací kód

Kód ověří jen telefon, na který odešel; změna telefonu zákazníka ho zruší. Po 5 špatných pokusech kód přestane platit a je potřeba vyžádat nový.

Přihlášení: oauth2, oprávnění customers:write

GET /customers/{customer_id}/loyalty – Věrnostní body

Body ověřeného zákazníka. Jsou společné pro všechny provozovny účtu. Objednávky přes API přičtou 1 bod za každou celou korunu ceny položek před vouchery – doprava ani doplatek do minima se nepočítají (stejně jako na pokladně).

Přihlášení: oauth2, oprávnění loyalty:read

Vouchers

Dárkové vouchery vydané účtem.

POST /restaurants/{restaurant_id}/vouchers/check – Ověřit dárkový voucher

Ukáže stav a zůstatek voucheru tohoto účtu, aniž by ho použil. Kód se posílá v těle, nikdy v URL, protože má hodnotu peněz. Vouchery jiných účtů a dosud neprodané vouchery – i zablokované – vypadají přesně jako neznámé kódy (422 voucher_invalid); stejně tak voucher v kalkulaci, v objednávce i v platbě účtenky.…

Přihlášení: oauth2, oprávnění vouchers:redeem

Reservations

Rezervace stolů a služeb u pracovníků – volné časy, rezervace, změny, usazení a stav stolů v tuto chvíli.

GET /restaurants/{restaurant_id}/reservation-settings – Pravidla rezervací

Jak provozovna přijímá rezervace: jak dlouho hosté sedí u stolu podle velikosti skupiny, krok nabízených časů, úklid stolu, poslední rezervace před zavřením, dny bez rezervací a pravidla pro hosty, kteří rezervují online. Provozovna je nastavuje v administraci (Rezervace › Nastavení). Použijte je k vysvětlení…

Přihlášení: oauth2, oprávnění reservations:read

GET /restaurants/{restaurant_id}/reservation-services – Služby k rezervaci

Služby, které si host rezervuje u pracovníka – střih, masáž, konzultace – s délkou, cenou a pracovníky, kteří je dělají. Prázdné, když licence provozovny má jen rezervace stolů (ReservationSettings.services_enabled). Služby, které se teď nenabízejí, chybí.

Přihlášení: oauth2, oprávnění reservations:read

GET /restaurants/{restaurant_id}/reservation-availability – Volné časy dne

Časy jednoho dne, které provozovna nabízí, každý s available a u nedostupného s důvodem reason. U stolu pošlete party_size; u služby kind=service, service_id a případně employee_id (bez něj kdokoli volný). Stoly nebo pracovník u času jsou to, co by createReservation v tu chvíli vzal – čas se pro vás…

Přihlášení: oauth2, oprávnění reservations:read

GET /restaurants/{restaurant_id}/reservations – Seznam rezervací

Rezervace se začátkem od from do to (místní dny včetně obou, nejvýš 31 dní; bez nich dnešek), podle začátku. Ze všech zdrojů – administrace, pokladny, hosté online i jiné aplikace. Dotazujte se s If-None-Match, nebo sledujte události reservation.*.

Přihlášení: oauth2, oprávnění reservations:read

POST /restaurants/{restaurant_id}/reservations – Založit rezervaci

Rezervace stolu (kind=table, party_size), nebo služby u pracovníka (kind=service, service_id, případně employee_id). Server zkontroluje kapacitu a stoly nebo pracovníka vybere sám (nejmenší vhodný stůl, jinak spojené stoly; nejméně vytížený pracovník); plný čas vrátí 409 reservation_unavailable, čas…

Přihlášení: oauth2, oprávnění reservations:write

GET /restaurants/{restaurant_id}/reservations/{reservation_id} – Detail rezervace

Rezervace s kontakty hosta a ETag (verzí).

Přihlášení: oauth2, oprávnění reservations:read

PATCH /restaurants/{restaurant_id}/reservations/{reservation_id} – Změnit rezervaci

Pošlete jen to, co se mění. Nový čas, počet osob, stoly, služba nebo pracovník se znovu porovná s kapacitou (bez této rezervace); server ponechá stávající stoly nebo pracovníka, pokud pořád vyhovují, jinak vybere nové. Usazená rezervace mění jen stoly, počet osob a poznámky; ukončená se nemění…

Přihlášení: oauth2, oprávnění reservations:write

POST /restaurants/{restaurant_id}/reservations/{reservation_id}/confirm – Potvrdit rezervaci

Rezervace requested se stane confirmed (provozovna přijme rezervaci, která čekala na potvrzení). Rezervace v jiném stavu vrátí 409 reservation_state_conflict. If-Match je nepovinný: s ním se změna provede, jen když rezervaci od vašeho načtení nikdo nezměnil.

Přihlášení: oauth2, oprávnění reservations:write

POST /restaurants/{restaurant_id}/reservations/{reservation_id}/reject – Odmítnout rezervaci

Rezervace requested se stane rejected a uvolní stoly nebo pracovníka. reason uvidí host. Rezervace v jiném stavu vrátí 409 reservation_state_conflict. If-Match je nepovinný: s ním se změna provede, jen když rezervaci od vašeho načtení nikdo nezměnil.

Přihlášení: oauth2, oprávnění reservations:write

POST /restaurants/{restaurant_id}/reservations/{reservation_id}/cancel – Zrušit rezervaci

Rezervace requested nebo confirmed se stane cancelled a uvolní stoly nebo pracovníka. reason uvidí host. Rezervace v jiném stavu vrátí 409 reservation_state_conflict. If-Match je nepovinný: s ním se změna provede, jen když rezervaci od vašeho načtení nikdo nezměnil.

Přihlášení: oauth2, oprávnění reservations:write

POST /restaurants/{restaurant_id}/reservations/{reservation_id}/seat – Usadit hosty

Hosté přišli: rezervace se stane seated. Pošlete tab_id, když jim vaše pokladna otevřela účet (putTab) – rezervace si vazbu ponechá. Rezervace v jiném stavu vrátí 409 reservation_state_conflict. If-Match je nepovinný: s ním se změna provede, jen když rezervaci od vašeho načtení nikdo nezměnil.

Přihlášení: oauth2, oprávnění reservations:write

POST /restaurants/{restaurant_id}/reservations/{reservation_id}/complete – Hosté odešli

Rezervace seated se stane completed. Když hosté odejdou dřív, než bylo v plánu, stůl je volný hned (ends_at se posune na teď). Rezervace v jiném stavu vrátí 409 reservation_state_conflict. If-Match je nepovinný: s ním se změna provede, jen když rezervaci od vašeho načtení nikdo nezměnil.

Přihlášení: oauth2, oprávnění reservations:write

POST /restaurants/{restaurant_id}/reservations/{reservation_id}/no-show – Hosté nepřišli

Rezervace requested nebo confirmed se stane no_show a uvolní stoly nebo pracovníka. Zaplacená záloha propadne. Rezervace v jiném stavu vrátí 409 reservation_state_conflict. If-Match je nepovinný: s ním se změna provede, jen když rezervaci od vašeho načtení nikdo nezměnil.

Přihlášení: oauth2, oprávnění reservations:write

POST /restaurants/{restaurant_id}/reservations/{reservation_id}/payment-link – Poslat odkaz k zaplacení zálohy

Pro rezervaci requested nebo confirmed, jejíž záloha čeká na zaplacení (deposit.status pending) – třeba přijatou po telefonu. Vytvoří nový odkaz na stránku rezervace hosta, pošle ho na e-mail hosta (má-li ho) a vrátí ho, abyste ho mohli poslat i SMS. Starší odkaz přestane platit. Jiná rezervace vrátí…

Přihlášení: oauth2, oprávnění reservations:write

POST /restaurants/{restaurant_id}/reservations/{reservation_id}/waive-deposit – Odpustit zálohu

Záloha čekající na zaplacení se odpustí (host zaplatí na místě, stálý host …): deposit.status bude none a rezervace, která čekala jen na zálohu, bude confirmed. Platba, která přijde potom, se vrátí sama. Rezervace bez čekající zálohy vrátí 409 reservation_state_conflict.

Přihlášení: oauth2, oprávnění reservations:write

GET /restaurants/{restaurant_id}/reservation-guest – Historie hosta

Známý host podle telefonu nebo e-mailu – kolikrát přišel, nepřišel nebo zrušil, jeho budoucí rezervace, poslední návštěva a štítky dřívějších rezervací (alergie, VIP), napříč provozovnami účtu. Hodí se při přijímání rezervace po telefonu. Telefon se porovná s předvolbou +420 i bez ní. Pošlete aspoň jedno z phone…

Přihlášení: oauth2, oprávnění reservations:read

GET /restaurants/{restaurant_id}/waitlist – Čekací listina dneška

Hosté bez stolu, kteří dnes čekají – nejdéle čekající první. Usazení a odešlí v seznamu nejsou.

Přihlášení: oauth2, oprávnění reservations:read

POST /restaurants/{restaurant_id}/waitlist – Zapsat hosta na čekací listinu

Host bez volného stolu. Pošlete jméno nebo telefon (pro SMS, že je stůl připravený).

Přihlášení: oauth2, oprávnění reservations:write

POST /restaurants/{restaurant_id}/waitlist/{waitlist_id}/notify – Dát hostovi vědět, že je stůl připravený

Pošle hostovi SMS, že je stůl připravený (jen na české mobilní číslo; platí se z kreditu jako ostatní SMS hostům). Host bez takového čísla vrátí 422 validation_failed – zavolejte mu. Host, který už nečeká, vrátí 409 reservation_state_conflict; SMS, která neodešla, 503 service_unavailable.

Přihlášení: oauth2, oprávnění reservations:write

POST /restaurants/{restaurant_id}/waitlist/{waitlist_id}/close – Usadit hosta, nebo ho z listiny vyřadit

seated s reservation_id rezervace, kterou jste hostovi založili (createReservation s channel=staff a walk_in: true), nebo left, když host nečekal.

Přihlášení: oauth2, oprávnění reservations:write

GET /restaurants/{restaurant_id}/reservation-feedback – Hodnocení hostů

Hodnocení po návštěvě (1–5 hvězdiček a komentář) rezervací začínajících v období, od nejnovějšího, nejvýš 500. Host hodnotí jednou, dvě hodiny po odchodu, když provozovna o hodnocení žádá.

Přihlášení: oauth2, oprávnění reservations:read

GET /restaurants/{restaurant_id}/reservation-stats – Přehled rezervací

Čísla rezervací začínajících v období – stejná jako Rezervace › Kniha › Přehled v administraci: rezervace a hosté, kdo přišel a kdo ne, zrušené, odkud přišly, hosté podle dne a hodiny, zálohy, hodnocení, vracející se hosté, služby a pracovníci. table_turn je skutečná doba u stolu (od usazení do odchodu) podle…

Přihlášení: oauth2, oprávnění reservations:read

GET /restaurants/{restaurant_id}/table-status – Které stoly jsou teď volné

Každý stůl z mapy provozovny se stavem v tuto chvíli: occupied – otevřený účet stolu (i hosté bez rezervace) nebo usazení hosté rezervace; reserved – rezervace začíná do 30 minut nebo běží a hosté ještě nejsou usazení; jinak free. next_reservation je další rezervace dne. Účty stolů nesou jen název stolu, s…

Přihlášení: oauth2, oprávnění reservations:read

Lodging

Ubytování – kdo je právě ubytovaný a účet jeho pokoje, aby pokladna mohla útratu zapsat na pokoj.

GET /restaurants/{restaurant_id}/lodging/in-house – Kdo je právě ubytovaný

Pobyty, které jsou právě ubytované (checked_in), seřazené podle pokoje – aby pokladna mohla nabídnout „na pokoj“. balance je, co zbývá zaplatit na účtu pokoje. Hosté, kteří ještě nepřijeli nebo už odjeli, tu nejsou.

Přihlášení: oauth2, oprávnění lodging:read

GET /restaurants/{restaurant_id}/lodging/stays/{stay_id}/folio – Účet pokoje

Účet pobytu: ubytování, poplatek z pobytu, služby a útraty (i z pokladen), platby a co zbývá zaplatit (balance, záporný při přeplatku). city_tax.estimate je true, dokud hosté nejsou zapsaní – poplatek se počítá z počtu osob.

Přihlášení: oauth2, oprávnění lodging:read

POST /restaurants/{restaurant_id}/lodging/stays/{stay_id}/charges – Zapsat útratu na pokoj

Přidá útratu na účet pobytu, který je právě ubytovaný – účet z restaurace nebo baru, který host zaplatí při odjezdu. Pokladna na ni účtenku nevystaví: účet stolu uzavře bez dokladu a pošle sem celkovou částku, za každou sazbu DPH zvlášť. Tržbou se útrata stane na dokladu za pobyt, který ubytování vystaví při odjezdu…

Přihlášení: oauth2, oprávnění lodging:write

GET /restaurants/{restaurant_id}/lodging/packages – Pobytové balíčky

Balíčky, které provozovna teď nabízí – noci zdarma (pay_nights + free_nights, zdarma jsou nejlevnější noci), sleva, příplatek za pobyt a služby v ceně. online – nabízí se na stránce rezervace.

Přihlášení: oauth2, oprávnění lodging:read

GET /restaurants/{restaurant_id}/lodging/stats – Přehled ubytování

Čísla za období – stejná jako Ubytování › Přehled v administraci. Prodané noci jsou noci pokojů potvrzených, ubytovaných a skončených pobytů (nezávazné zvlášť); cena pobytu se rozpočítá rovnoměrně na jeho noci, takže pobyt přes přelom měsíce se rozdělí. occupancy = prodané / (pokoje × dny), adr = tržba / prodané…

Přihlášení: oauth2, oprávnění lodging:read

GET /restaurants/{restaurant_id}/lodging/reviews – Recenze ubytování

Hodnocení hostů po pobytu (source direct) a recenze z portálů, které provozovna přepsala, od nejnovější, s přehledem: průměr na stupnici 1–5, počty po zdrojích a hvězdičkách, dílčí hodnocení a kolik čeká na odpověď. Jména hostů jsou zkrácená (křestní jméno a iniciála).

Přihlášení: oauth2, oprávnění lodging:read

POST /restaurants/{restaurant_id}/lodging/reviews/{review_id}/reply – Odpovědět na recenzi

Uloží odpověď (nová nahradí starou). Hodnocení hosta s send_to_guest odejde hostovi i e-mailem (když host e-mail má); na recenzi z portálu odpovězte i na portálu.

Přihlášení: oauth2, oprávnění lodging:write

Reception

Recepce hotelu – jen vlastní aplikace Profirestu (lodging_desk:*, na zařízení přihlášený zaměstnanec s rolí reception): pokoje, plán obsazenosti, pobyty s hosty a jejich doklady.

GET /restaurants/{restaurant_id}/lodging/rooms – Pokoje a typy pokojů

Typy pokojů a pokoje provozovny v pořadí plánu obsazenosti (podle typu, pak podle pokoje) se stavem úklidu. Pokoj out_of_order nejde rezervovat. Ceny jsou základní cena noci; cenu pobytu počítá server (sezóny, balíčky, přistýlky).

Přihlášení: oauth2, oprávnění lodging_desk:read

GET /restaurants/{restaurant_id}/lodging/availability – Volné pokoje a ceny pro pobyt

Pro každý typ pokoje: pokoje volné od arrival do departure a cena pobytu pro počet hostů (sezóny, přistýlky, balíček package_id). unavailable říká, proč typ rezervovat nejde (no_room, too_many_guests, package_not_applicable). Recepci neváže nejkratší pobyt online rezervací. Při změně pobytu pošlete…

Přihlášení: oauth2, oprávnění lodging_desk:read

GET /restaurants/{restaurant_id}/lodging/registration-lists – Číselníky pro zápis hostů

Hodnoty pro formulář zapsaného hosta: státy (nationality), druhy dokladů, účely pobytu pro cizineckou policii (Ubyport) a důvody, proč host neplatí poplatek z pobytu. Mění se zřídka – držte si je s ETag.

Přihlášení: oauth2, oprávnění lodging_desk:read

GET /restaurants/{restaurant_id}/lodging/stays – Pobyty plánu obsazenosti

Pobyty, které zasahují do dnů from – to (oba včetně, nejvýš 62 dní; bez nich dnešek): pobyt, který v nich má noc, přijíždí nebo odjíždí. Podle příjezdu. Bez status se zrušené pobyty a nepřijetí vynechají.

Přihlášení: oauth2, oprávnění lodging_desk:read

POST /restaurants/{restaurant_id}/lodging/stays – Založit pobyt

Rezervace na recepci: pokoj (room_id) nebo typ pokoje (room_type_id – server vybere první volný pokoj), termín, hosté a kontakt hosta. Server zkontroluje, že je pokoj volný (409 lodging_room_unavailable) a že se hosté do pokoje vejdou (422), a cenu spočítá podle ceníku a balíčku, pokud nepošlete…

Přihlášení: oauth2, oprávnění lodging_desk:write

GET /restaurants/{restaurant_id}/lodging/stays/{stay_id} – Detail pobytu

Pobyt se zapsanými hosty a jejich doklady, co zbývá zaplatit, doklad za pobyt a historie. ETag je verze (version) – při změně pobytu ji pošlete v If-Match.

Přihlášení: oauth2, oprávnění lodging_desk:read

PATCH /restaurants/{restaurant_id}/lodging/stays/{stay_id} – Změnit pobyt

Pošlete jen to, co se mění: kontakt hosta, počet hostů, poznámky, štítky, cenu nebo balíček. Víc hostů se porovná s pokojem (422); cena, která není zadaná ručně, se spočítá znovu. Termín a pokoj mění moveStay. Pobyt s vystaveným dokladem se nemění (409 stay_state_conflict). Pošlete If-Match s ETag z…

Přihlášení: oauth2, oprávnění lodging_desk:write

POST /restaurants/{restaurant_id}/lodging/stays/{stay_id}/move – Přesunout nebo prodloužit pobyt

Pobyt dostane pokoj a termín (i delší nebo kratší pobyt). Nový pokoj musí být v novém termínu volný (bez tohoto pobytu) a ne mimo provoz (409 lodging_room_unavailable). Hosté, služby po nocích a poplatek z pobytu se posunou s pobytem; cena, která není zadaná ručně, se spočítá znovu. Odjetý nebo zrušený pobyt se…

Přihlášení: oauth2, oprávnění lodging_desk:write

POST /restaurants/{restaurant_id}/lodging/stays/{stay_id}/confirm – Potvrdit pobyt

Předběžný pobyt se stane potvrzeným.

Přihlášení: oauth2, oprávnění lodging_desk:write

POST /restaurants/{restaurant_id}/lodging/stays/{stay_id}/check-in – Ubytovat hosty

Ode dne příjezdu. Hosty zapište (addStayGuest) předem nebo potom – cizinci jdou do Ubyportu.

Přihlášení: oauth2, oprávnění lodging_desk:write

POST /restaurants/{restaurant_id}/lodging/stays/{stay_id}/check-out – Odhlásit hosty

Hosté odjíždějí: pokoj jde k úklidu. Dřívější odjezd ukončí pobyt dnes a cenu spočítá znovu. Z vyrovnaného účtu (balance 0) server vystaví doklad za pobyt (getStay.receipt); když zbývá doplatit, doklad vznikne po zaplacení.

Přihlášení: oauth2, oprávnění lodging_desk:write

POST /restaurants/{restaurant_id}/lodging/stays/{stay_id}/cancel – Zrušit pobyt

Před příjezdem. Zaplacená záloha se hostovi vrátí, pokud nepošlete keep_deposit.

Přihlášení: oauth2, oprávnění lodging_desk:write

POST /restaurants/{restaurant_id}/lodging/stays/{stay_id}/no-show – Host nepřijel

Ode dne příjezdu; pokoj je zase volný a zaplacená záloha propadá.

Přihlášení: oauth2, oprávnění lodging_desk:write

POST /restaurants/{restaurant_id}/lodging/stays/{stay_id}/guests – Zapsat hosta

Přidá hosta do evidence pobytu. Cizinec čeká na Ubyport (ubyport.state pending) a server ho odešle ve lhůtě.

Přihlášení: oauth2, oprávnění lodging_desk:write

PUT /restaurants/{restaurant_id}/lodging/stays/{stay_id}/guests/{guest_id} – Změnit zapsaného hosta

Nahradí údaje hosta. Už nahlášený cizinec, kterému se změní jméno, narození, doklad nebo termín, jde do Ubyportu znovu.

Přihlášení: oauth2, oprávnění lodging_desk:write

DELETE /restaurants/{restaurant_id}/lodging/stays/{stay_id}/guests/{guest_id} – Smazat zapsaného hosta

Odebere hosta z evidence pobytu (omyl, host nepřijel).

Přihlášení: oauth2, oprávnění lodging_desk:write

GET /restaurants/{restaurant_id}/lodging/services – Služby ceníku

Služby, které recepce přidá na účet pokoje (addStayService): snídaně, strava, přistýlky, mazlíčci, wellness, parkování.

Přihlášení: oauth2, oprávnění lodging_desk:read

POST /restaurants/{restaurant_id}/lodging/stays/{stay_id}/services – Přidat službu na účet

Služba z ceníku na účet pokoje. Množství podle jednotky služby: stay a item podle quantity; night noci od date_from do date_to (výchozí celý pobyt) × quantity; person_night noci × persons (výchozí všichni hosté). Účet s vystaveným dokladem se nemění (409 stay_state_conflict).

Přihlášení: oauth2, oprávnění lodging_desk:write

POST /restaurants/{restaurant_id}/lodging/stays/{stay_id}/folio-lines – Přidat položku na účet

Položka mimo ceník (minibar, škoda, taxi) s vlastním názvem, cenou a sazbou DPH.

Přihlášení: oauth2, oprávnění lodging_desk:write

DELETE /restaurants/{restaurant_id}/lodging/stays/{stay_id}/folio-lines/{line_id} – Odebrat položku z účtu

Odebere službu nebo položku (omyl). Účet s vystaveným dokladem se nemění (409 stay_state_conflict).

Přihlášení: oauth2, oprávnění lodging_desk:write

POST /restaurants/{restaurant_id}/lodging/stays/{stay_id}/payments – Zapsat platbu

Platba hosta na účet pokoje (i záloha před příjezdem). Peníze drží recepce: hotovost a karta tady nejsou účtenka – doklad za pobyt vzniká při odjezdu z vyrovnaného účtu. Platba, která vyrovná účet hosta, který už odjel, doklad vystaví hned.

Přihlášení: oauth2, oprávnění lodging_desk:write

DELETE /restaurants/{restaurant_id}/lodging/stays/{stay_id}/payments/{payment_id} – Smazat platbu

Smaže omylem zapsanou platbu. Ne po vystavení dokladu za pobyt (409 stay_state_conflict). Jen zaměstnanec s rolí reception_manager (od 26.11.23; ostatní 403 staff_role_missing).

Přihlášení: oauth2, oprávnění lodging_desk:write

POST /restaurants/{restaurant_id}/lodging/stays/{stay_id}/receipt – Vystavit doklad za pobyt

Po odjezdu, když ho server nevystavil sám. Účet musí být vyrovnaný; platba fakturou vystaví fakturu pro firmu (dokončí se v administraci). Druhé volání vrátí už vystavený doklad.

Přihlášení: oauth2, oprávnění lodging_desk:write

POST /restaurants/{restaurant_id}/lodging/stays/{stay_id}/receipt/cancel – Stornovat doklad za pobyt

Vystaví protidoklad; účet pokoje jde zase měnit. Vrací protidoklad. Jen zaměstnanec s rolí reception_manager (od 26.11.23; ostatní 403 staff_role_missing).

Přihlášení: oauth2, oprávnění lodging_desk:write

GET /restaurants/{restaurant_id}/lodging/stays/{stay_id}/guest-pass – QR kód hosta

Kód pro QR kód hosta (ukažte ho nebo vytiskněte) a co host smí podle účtu pokoje – čtečka u wellness, snídaní nebo parkoviště ho ověří přes checkGuestPass.

Přihlášení: oauth2, oprávnění lodging_desk:read

GET /restaurants/{restaurant_id}/lodging/ubyport – Cizinci čekající na Ubyport

Jestli je hlášení cizinecké policii (Ubyport) nastavené a cizinci, kteří na něj čekají nebo s chybou, se lhůtou (3 pracovní dny po příjezdu). Server je odesílá sám každou hodinu.

Přihlášení: oauth2, oprávnění lodging_desk:read

POST /restaurants/{restaurant_id}/lodging/ubyport/send – Odeslat do Ubyportu teď

Odešle čekající cizince hned, bez čekání na hodinový běh. failure řekne, když služba policie neodpovídá.

Přihlášení: oauth2, oprávnění lodging_desk:write

Housekeeping

Úklid pokojů a jejich závady – úkoly dne po pokojích, odškrtávání a hlášení závad. Bez údajů hostů. S Profirest-Staff-Token se zaměstnanec zapíše jako ten, kdo úkol udělal nebo závadu nahlásil. Vlastní aplikace Profirestu pro pokojské a recepci ho posílat musí, se zaměstnancem s rolí housekeeping nebo reception (od 26.11.23).

GET /restaurants/{restaurant_id}/housekeeping – Úkoly úklidu na den

Každý pokoj s úkoly na den, nejnaléhavější první: pokoj, kam dnes přijíždí host a ještě není uklizený, pak odjezdy, pak obsazené pokoje. Úkoly se počítají z pobytů a pravidel provozovny pokaždé znovu – po přesunu pobytu ho následují. waiting – úkol ještě nejde udělat (host neodjel, nebo pokoj před kontrolou není…

Přihlášení: oauth2, oprávnění housekeeping:read

POST /restaurants/{restaurant_id}/housekeeping/rooms/{room_id}/done – Odškrtnout úkol

Označí úkol pokoje a dne jako hotový. Úklid po odjezdu přepne pokoj na clean, kontrola na inspected. Opakované odškrtnutí nic nezmění. Úkol, který je waiting, vrátí 409 lodging_state_conflict; úkol pozdějšího dne 422 validation_failed. Se staff tokenem se zapíše zaměstnanec, který úkol udělal.

Přihlášení: oauth2, oprávnění housekeeping:write

POST /restaurants/{restaurant_id}/housekeeping/rooms/{room_id}/undo – Vrátit odškrtnutý úkol

Vrátí omylem odškrtnutý úkol. Úklid po odjezdu vrátí pokoj na dirty; dokud je hotová kontrola, vrátit nejde (409 lodging_state_conflict) – nejdřív vraťte kontrolu.

Přihlášení: oauth2, oprávnění housekeeping:write

GET /restaurants/{restaurant_id}/room-issues – Závady pokojů

Otevřené závady a závady opravené za posledních 30 dní, otevřené první, od nejnovější, nejvýš 300.

Přihlášení: oauth2, oprávnění housekeeping:read

POST /restaurants/{restaurant_id}/room-issues – Nahlásit závadu

Závada pokoje pro údržbu. S blocks_room je pokoj out_of_order a nejde prodat, dokud se závada neopraví; když má pokoj pobyty od dneška dál, warning řekne, ať se přesunou.

Přihlášení: oauth2, oprávnění housekeeping:write

POST /restaurants/{restaurant_id}/room-issues/{issue_id}/fix – Označit závadu jako opravenou

Závada je opravená. Pokoj, který byl kvůli ní mimo provoz, se vrátí jako dirty (po opravě k úklidu), když ho neblokuje jiná otevřená závada. Opravená závada vrátí 409 lodging_state_conflict.

Přihlášení: oauth2, oprávnění housekeeping:write

Guest passes

QR kód ubytovaného hosta – čtečka u wellness, snídaní nebo parkoviště ověří, co host smí.

POST /restaurants/{restaurant_id}/guest-passes/check – Ověřit QR kód hosta

Čtečka u wellness, snídaní, polopenze nebo parkoviště pošle přečtený kód (PRU-…). Host smí, co má na účtu pokoje (služby z ceníku nebo v ceně balíčku), dokud je ubytovaný: neomezeně, tolik osob denně, nebo tolikrát za pobyt. result ok hosta pustí a vstup zapíše (s record: false jen ověří); denied řekne proč…

Přihlášení: oauth2, oprávnění guest_passes:check

POST /restaurants/{restaurant_id}/guest-passes/checks/{check_id}/undo – Vrátit vstup

Host nakonec nešel – vstup se nepočítá. Jiné čtení vrátí 409 lodging_state_conflict.

Přihlášení: oauth2, oprávnění guest_passes:check

External references

Vaše vlastní ID a metadata u provozoven, kategorií, produktů, objednávek a zákazníků.

GET /external-refs/{object_type} – Najít objekty podle vašeho ID

Vaše ID a metadata u objektů tohoto typu. Filtrem external_id převedete své ID na naše. Vyžaduje oprávnění ke čtení daného typu objektu (například orders:read u objednávek).

Přihlášení: oauth2

GET /external-refs/{object_type}/{object_id} – Vaše ID a metadata jednoho objektu

Vyžaduje oprávnění ke čtení daného typu objektu. Objekty, které vaše připojení nevidí, vrátí 404.

Přihlášení: oauth2

PUT /external-refs/{object_type}/{object_id} – Nastavit vaše ID a metadata

Nastaví vaše external_id a nahradí vaše metadata u objektu, který vaše připojení vidí (například produktu ze sortimentu) – u provozovny, kategorie, produktu, objednávky nebo zákazníka; jiné objekty vazbu nést nemohou. Kategorie a produkty jsou vidět, když jsou na webu („W“), včetně příloh a produktů denního menu…

Přihlášení: oauth2

DELETE /external-refs/{object_type}/{object_id} – Odebrat vaše ID a metadata

Odebere jen vaši vazbu. Samotného objektu se nedotkne. Oprávnění jako u nastavení.

Přihlášení: oauth2

Events

Proud změn s kurzorem – po stránkách nebo živě přes Server-Sent Events. Webhooky doručují stejné události.

GET /events – Proud změn

Události vašeho připojení v pořadí zápisu (sequence), po zadaném kurzoru. Toto je zdroj pravdy: webhooky jen říkají, že je tu něco nového; streamEvents dává tytéž události živě, se stejným kurzorem a bez dotazování. Dostanete jen typy událostí, které vaše oprávnění dovolují: order.* vyžaduje orders:read…

Přihlášení: oauth2

GET /events/stream – Proud změn živě (Server-Sent Events)

Tytéž události jako listEvents – stejné pořadí, stejná oprávnění a stejné zpoždění pár sekund po změně – posílané jednou dlouhou odpovědí text/event-stream místo dotazování. Hodí se všude, kde se čeká na změny: kuchyňské displeje, pokladny, integrace na serveru.

Přihlášení: oauth2

Staff

Zaměstnanci na vlastních zařízeních Profirestu – kdo v provozovně pracuje a přihlášení PINem nebo čipem.

GET /restaurants/{restaurant_id}/staff – Zaměstnanci provozovny

Zaměstnanci přiřazení k provozovně a jejich role na zařízeních, podle jména. PINy a čísla čipů server nikdy nevydá: sign_in říká jen to, zda má zaměstnanec PIN nebo čip. Jen pro vlastní aplikace Profirestu.

Přihlášení: oauth2, oprávnění staff:read

POST /restaurants/{restaurant_id}/staff-sessions – Přihlásit zaměstnance na zařízení

Ověří PIN nebo čip zaměstnance na serveru a vrátí token zaměstnance pro toto zařízení. Posílejte ho v hlavičce Profirest-Staff-Token u operací, které dělá zaměstnanec; token zařízení zůstává v Authorization. Token zaměstnance platí jen na zařízení, které přihlásilo, a jen v této provozovně. Vyprší po…

Přihlášení: oauth2, oprávnění staff:authenticate

DELETE /restaurants/{restaurant_id}/staff-sessions/current – Odhlásit zaměstnance

Hned ukončí relaci zaměstnance z hlavičky Profirest-Staff-Token. Už ukončená relace odpoví také 204. Bez hlavičky je odpověď 403 staff_session_required.

Přihlášení: oauth2, oprávnění staff:authenticate

POST /restaurants/{restaurant_id}/staff-sessions/current/pin – Změnit PIN přihlášeného zaměstnance

Přihlášený zaměstnanec si mění vlastní PIN. Současný PIN se ověří znovu, se stejným zámkem po špatných PINech jako přihlášení (422 staff_credentials_invalid, 429 staff_locked). Nový PIN platí všude, kde ho zaměstnanec používá – na všech zařízeních, na docházkovém terminálu i při přihlášení zaměstnance do…

Přihlášení: oauth2, oprávnění staff:authenticate

Attendance

Příchody, odchody a přestávky z docházkových terminálů Profirestu a to, co tam vidí přihlášený zaměstnanec: své naplánované směny a své žádosti o volno. Jen u provozovny, jejíž licence zahrnuje modul Docházka, stejně jako docházka v administraci; jinak 403 module_not_licensed.

GET /restaurants/{restaurant_id}/attendance/terminal – Nastavení docházkového terminálu

Co docházkový terminál této provozovny ukazuje a smí: jméno provozovny, vzhled, který si provozovna zvolila v administraci (logo, barva, světlá nebo tmavá obrazovka a uvítání – null znamená vzhled Profirestu), a jestli terminál smí zapisovat píchnutí bez sítě a jak stará smí při doručení být (starší server odmítne…

Přihlášení: oauth2, oprávnění attendance:read

GET /restaurants/{restaurant_id}/attendance/presence – Kdo je v práci

Zaměstnanci, kteří se na této provozovně vedou v docházce, a kde právě jsou: off, working nebo on_break, podle jména.

Přihlášení: oauth2, oprávnění attendance:read

POST /restaurants/{restaurant_id}/attendance/punches – Zapsat příchod, odchod nebo přestávku

Jedno píchnutí zaměstnance na zařízení. Zaměstnance určí credential (PIN nebo čip zadaný na zařízení), nebo relace zaměstnance v Profirest-Staff-Token.

Přihlášení: oauth2, oprávnění attendance:punch

POST /restaurants/{restaurant_id}/attendance/punches/batch – Odeslat píchnutí pořízená offline

Nejvýš 100 píchnutí v pořadí, v jakém se stala. Každé se zpracuje samostatně jako POST …/attendance/punches a má vlastní výsledek; odmítnuté píchnutí nezastaví ostatní. Každá položka nese svůj credential, protože relaci zaměstnance nejde bez sítě otevřít.

Přihlášení: oauth2, oprávnění attendance:punch

GET /restaurants/{restaurant_id}/attendance/my-schedule – Rozpis přihlášeného zaměstnance

Směny a volno zaměstnance z Profirest-Staff-Token naplánované na této provozovně, od dneška na days dní, v pořadí začátku: pracovní směny se sekcí a absence (dovolená, neplacené volno, nemoc) tak, jak je má rozpis směn v administraci. Patří sem i směna, která přes půlnoc zasahuje do dneška. Jen vlastní rozpis…

Přihlášení: oauth2, oprávnění attendance:read

GET /restaurants/{restaurant_id}/attendance/absence-requests – Žádosti o volno přihlášeného zaměstnance

Žádosti o volno zaměstnance z Profirest-Staff-Token na této provozovně: všechny čekající a ostatní, jejichž volno skončilo nejvýš před 60 dny, od nejnovější, nejvýš 50. Rozhoduje o nich vedoucí v administraci; schválená žádost se zapíše do rozpisu směn jako absence.

Přihlášení: oauth2, oprávnění attendance:read

POST /restaurants/{restaurant_id}/attendance/absence-requests – Požádat o volno za přihlášeného zaměstnance

Zaměstnanec z Profirest-Staff-Token žádá o volno na celé dny. Pravidla určuje provozovna (AttendanceTerminal.absence_requests): o jaké volno se smí žádat, kolik dní předem (nemoc od dneška, bez předstihu), nejvýš kolik dní a jak daleko dopředu a kolik lidí z jedné sekce smí mít týž den volno. Žádost, která…

Přihlášení: oauth2, oprávnění attendance:punch

DELETE /restaurants/{restaurant_id}/attendance/absence-requests/{request_id} – Vzít zpět čekající žádost o volno

Zaměstnanec z Profirest-Staff-Token bere zpět svou čekající žádost; odpovědí je žádost se status: cancelled. Už vzatá zpět odpoví stejně. Vyřízená žádost odpoví 409 absence_request_decided – schválené volno ruší vedoucí v administraci. Žádost jiného zaměstnance odpoví 404.

Přihlášení: oauth2, oprávnění attendance:punch

Kitchen

Kuchyňský displej – objednávky ze všech zdrojů (pokladna, e-shop, rozvozové platformy, aplikace).

GET /restaurants/{restaurant_id}/kitchen/tickets – Objednávky na tabuli kuchyně

Kuchyňské bony všech objednávek provozovny – z pokladny, e-shopu, rozvozových platforem i aplikací – stejné, jaké dnes ukazuje kuchyňský displej.

Přihlášení: oauth2, oprávnění kitchen:read

POST /restaurants/{restaurant_id}/kitchen/tickets – Poslat položky stolu do kuchyně

Kuchyňský bon z pokladny nebo mobilního číšníka před zaplacením – dnešní „bon“ otevřeného stolu. Ukáže se na kuchyňském displeji v oblasti bar a ve výrobě po stanovištích, bez cen: peníze jsou až na účtence (createReceipt), takže se tržba ani sklad nikdy nezapočítají dvakrát. Každé kolo položek je nový bon jako…

Přihlášení: oauth2, oprávnění receipts:write

GET /restaurants/{restaurant_id}/kitchen/queue – Čísla objednávek pro obrazovku hostů

Pořadník u pultu stejně jako kuchyňský displej v režimu pořadníku: objednávky z pokladen (účtenky a bony otevřených stolů, přes toto API i API v1), osobní odběry objednané přes web – e-shop nebo aplikaci pro hosty (order_channel web) – a osobní odběry z kiosku (kiosk, v kterémkoli jeho režimu), kromě objednávek…

Přihlášení: oauth2, oprávnění queue:read

GET /restaurants/{restaurant_id}/kitchen/stations/{station_id}/tickets – Objednávky pro jedno výrobní stanoviště

Pro rozdělenou kuchyni (výrobní stanoviště v administraci). Objednávky na tabuli (jako view=active, otevřené stoly za posledních 7 dní), ve kterých je něco, co toto stanoviště dělá, s jeho položkami rozdělenými do chodů a kategorií – stejné segmenty, jaké dnes ukazuje obrazovka stanoviště – a s tím, zda na…

Přihlášení: oauth2, oprávnění kitchen:read

PUT /restaurants/{restaurant_id}/kitchen/stations/{station_id}/tickets/{ticket_id}/working – Stanoviště začíná na objednávce pracovat

Ostatní stanoviště to vidí; objednávka se počítá jako připravovaná (order.status_changed s preparing).

Přihlášení: oauth2, oprávnění kitchen:write

DELETE /restaurants/{restaurant_id}/kitchen/stations/{station_id}/tickets/{ticket_id}/working – Stanoviště na objednávce přestává pracovat

Vezme zpět startStationWork: ostatní stanoviště už nevidí, že na objednávce toto stanoviště pracuje; hotové položky zůstanou hotové. Když objednávku jako připravovanou nic jiného neoznačuje (nepracuje na ní jiné stanoviště, nic není hotové ani vydané, kuchyně nenastavila preparing), objednávka aplikace se vrátí…

Přihlášení: oauth2, oprávnění kitchen:write

POST /restaurants/{restaurant_id}/kitchen/stations/{station_id}/tickets/{ticket_id}/complete – Odbavit segment stanoviště

Odbaví otevřené položky tohoto stanoviště: celou objednávku (scope=order), jeden chod (course) nebo jednu kategorii v chodu (category s course a category_id). Akce se zapíše do historie stanoviště a jde vzít zpět. Když v segmentu nic otevřené není, odpověď je 409 nothing_to_complete – i když ho o chvilku…

Přihlášení: oauth2, oprávnění kitchen:write

GET /restaurants/{restaurant_id}/kitchen/stations/{station_id}/actions – Poslední akce stanoviště

Posledních 12 akcí stanoviště za 12 hodin, nejnovější první, aby šla některá vzít zpět.

Přihlášení: oauth2, oprávnění kitchen:read

POST /restaurants/{restaurant_id}/kitchen/stations/{station_id}/actions/{action_id}/undo – Vzít akci stanoviště zpět

Položky té akce jsou znovu otevřené (jen ty, které přepnula, ne co mezitím udělala jiná obrazovka). Už vrácená akce odpoví 409 action_already_undone.

Přihlášení: oauth2, oprávnění kitchen:write

GET /restaurants/{restaurant_id}/kitchen/tickets/{ticket_id} – Jeden kuchyňský bon

Jeden kuchyňský bon provozovny podle ID, v jakémkoli stavu a odkudkoli objednávka přišla – i hotový nebo zrušený, nebo takový, který už na tabuli není (listKitchenTickets ukazuje jen aktuální pohledy). Slouží ke sledování bonu, který jste poslali (createKitchenTicket), nebo bonu z události…

Přihlášení: oauth2, oprávnění kitchen:read

POST /restaurants/{restaurant_id}/kitchen/tickets/{ticket_id}/status – Posunout objednávku v kuchyni

received – zpět do fronty, preparing – kuchyně začala, ready – hotovo a čeká na výdej nebo kurýra, delivered – vydáno. Zrušená objednávka zůstane zrušená (409 ticket_cancelled); rušení je POST …/cancel. Vydanou objednávku vrátí zpět jen přihlášený vedoucí kuchyně (403 staff_role_missing); objednávka…

Přihlášení: oauth2, oprávnění kitchen:write

POST /restaurants/{restaurant_id}/kitchen/tickets/{ticket_id}/cancel – Zrušit objednávku v kuchyni

Zruší objednávku protidokladem, stejně jako tlačítko storno na kuchyňském displeji: tržba i sklad se vrátí, zaplacený dárkový voucher se vrátí na voucher. Smí jen zaměstnanec s rolí kitchen_manager přihlášený na zařízení (403 staff_role_missing); zaměstnanec se zapíše. Zrušenou objednávku nejde vrátit…

Přihlášení: oauth2, oprávnění kitchen:write

PUT /restaurants/{restaurant_id}/kitchen/tickets/{ticket_id}/printed – Potvrdit vytištění bonu

Displej bon vytiskl; ostatní displeje ho znovu tisknout nebudou. Opakování nevadí.

Přihlášení: oauth2, oprávnění kitchen:write

POST /restaurants/{restaurant_id}/kitchen/tickets/{ticket_id}/items – Přidat položky k objednávce v kuchyni

Tlačítko PŘIDAT POLOŽKY kuchyňského displeje: co zákazník přidá po telefonu, jde do stejné objednávky, ne do druhé. Ceny položek Profirest spočítá z katalogu kanálu channel (výchozí kitchen) přesně jako kalkulaci; zařízení žádné ceny neposílá. Jako dnes dostanou nové položky vlastní skupiny za stávajícími…

Přihlášení: oauth2, oprávnění kitchen:write

POST /restaurants/{restaurant_id}/kitchen/tickets/{ticket_id}/handover – Označit část objednávky jako vydanou

Výdej (obrazovka výdeje kuchyňského displeje): personál odškrtne, co odnesl zákazníkovi – celou objednávku (scope=order), jeden chod nebo jednu kategorii v chodu – a objednávku tím neuzavře, takže polévka jde ven, zatímco se hlavní jídlo ještě vaří. Platí přes všechna stanoviště a stav výroby položek nemění (mění…

Přihlášení: oauth2, oprávnění kitchen:write

DELETE /restaurants/{restaurant_id}/kitchen/tickets/{ticket_id}/handover – Zrušit označení vydané části

Vezme označení vydání segmentu zpět bez zápisu do historie – druhé klepnutí na výdeji. Opakování nevadí.

Přihlášení: oauth2, oprávnění kitchen:write

GET /restaurants/{restaurant_id}/kitchen/handover/actions – Poslední akce výdeje

Posledních 12 akcí výdeje za 12 hodin, nejnovější první, aby šla některá vzít zpět.

Přihlášení: oauth2, oprávnění kitchen:read

POST /restaurants/{restaurant_id}/kitchen/handover/actions/{action_id}/undo – Vzít akci výdeje zpět

Položky té akce už nejsou vydané; objednávka, kterou výdej uzavřel, se vrátí do fronty. Už vrácená akce odpoví 409 action_already_undone.

Přihlášení: oauth2, oprávnění kitchen:write

GET /restaurants/{restaurant_id}/kitchen/shift – Součty otevřené směny kuchyně

Co by teď obsahovala uzávěrka: objednávky z webu a z kuchyně, které ještě nejsou uzavřené, tržba za hotové a vydané celkem i podle platby, co ještě čeká nebo se připravuje (zůstane do další směny), zrušené a totéž po kurýrech – hotovost kurýra, než ji odevzdá. S courier_id jen objednávky toho kurýra.

Přihlášení: oauth2, oprávnění kitchen:read

POST /restaurants/{restaurant_id}/kitchen/shift/close – Uzavřít směnu kuchyně

Uzávěrka kuchyňského displeje jako dnes: záznam v uzávěrkách administrace s tržbou podle platby a s tím, co ještě zaplacené není, přiřadí se do ní všechny objednávky, které opustily frontu (hotové, vydané, zrušené), a číslování kuchyně začne znovu od 1. S courier_id se uzavřou jen objednávky toho kurýra (kurýři se…

Přihlášení: oauth2, oprávnění kitchen:write

Deliveries

Kurýři na směně, rozvozové trasy plánované v kuchyni, označení doručených objednávek a živá poloha a jízda kurýrů.

GET /restaurants/{restaurant_id}/couriers – Kurýři provozovny

Zaměstnanci, kteří mohou rozvážet – stejně jako dnes na kuchyňském displeji ti s rolí kuchyně v této provozovně – s přihlášením na směnu a počtem otevřených tras, podle jména.

Přihlášení: oauth2, oprávnění deliveries:read

PUT /restaurants/{restaurant_id}/couriers/{employee_id}/shift – Přihlásit kurýra na směnu

Kurýr je k dispozici pro trasy. Na zařízení musí být přihlášený ten kurýr, nebo zaměstnanec s rolí kitchen_manager (403 staff_role_missing). Opakované přihlášení nechá původní čas. Není to píchnutí do docházky.

Přihlášení: oauth2, oprávnění deliveries:write

DELETE /restaurants/{restaurant_id}/couriers/{employee_id}/shift – Odhlásit kurýra ze směny

Stejná pravidla jako přihlášení. Trasy, na kterých kurýr je, zůstanou beze změny.

Přihlášení: oauth2, oprávnění deliveries:write

GET /restaurants/{restaurant_id}/delivery-routes – Rozvozové trasy

status=open (výchozí) – trasy, které se ještě rozvážejí; status=completed – dokončené trasy. Oba výpisy obsahují jen trasy aktuální směny, stejně jako pokladna (API v1): trasy, které mají aspoň jednu objednávku, jež ještě není v uzavřené směně kuchyně. Uzávěrka kuchyně (celé směny nebo kurýra) zahrne i hotové…

Přihlášení: oauth2, oprávnění deliveries:read

POST /restaurants/{restaurant_id}/delivery-routes – Poslat objednávky s kurýrem

Dá rozvozové objednávky na jednu trasu kurýra v zadaném pořadí, jako plánovač tras na kuchyňském displeji: objednávky se stanou hotovými (out_for_delivery) a kurýr je převezme. Každá objednávka musí být rozvozem této provozovny, nezrušená, nedoručená a ne na jiné otevřené trase; jinak na ni ukáže…

Přihlášení: oauth2, oprávnění deliveries:write

GET /restaurants/{restaurant_id}/delivery-routes/{route_id} – Jedna rozvozová trasa

Telefon kurýra (zařízení bez kitchen:read) potřebuje přihlášeného zaměstnance a na trasu jiného kurýra dostane 404, pokud zaměstnanec není kitchen_manager.

Přihlášení: oauth2, oprávnění deliveries:read

POST /restaurants/{restaurant_id}/delivery-routes/{route_id}/tickets/{ticket_id}/delivered – Označit objednávku trasy jako doručenou

Kurýr objednávku doručil. Když jsou doručené, zrušené nebo nepřevzaté všechny objednávky trasy, trasa se dokončí (i když poslední objednávku označí, stornuje nebo vrátí do fronty kuchyňský displej). Opakované označení nevadí. Jako doručenou jde označit i objednávku not_delivered, dokud není zrušená – zákazník si ji…

Přihlášení: oauth2, oprávnění deliveries:write

POST /restaurants/{restaurant_id}/delivery-routes/{route_id}/tickets/{ticket_id}/handover-payment – Zapsat platbu, kterou kurýr vybral u dveří

Kurýr vybral platbu za objednávku trasy – kartou na platebním terminálu (method card, s gateway_payment_id terminálu) nebo hotově. Funguje oběma směry: hotovostní objednávka zaplacená kartou se stane card_at_handover, objednávka card_at_handover zaplacená hotově se stane cash a uzávěrka…

Přihlášení: oauth2, oprávnění deliveries:write

POST /restaurants/{restaurant_id}/delivery-routes/{route_id}/tickets/{ticket_id}/not-delivered – Označit objednávku trasy jako nepřevzatou, s důvodem

Kurýr objednávku nemohl předat – zákazník nebyl doma, odmítl ji, nezaplatil, adresa neexistuje… Bon se stane not_delivered s not_delivered (důvod, poznámka, čas, kurýr, poloha a hovory jako doklad o pokusu), nezapíše se platba ani tržba a hotovost se za ni od kurýra nečeká (getKitchenShift ji ukazuje v…

Přihlášení: oauth2, oprávnění deliveries:write

POST /restaurants/{restaurant_id}/couriers/{employee_id}/telemetry – Poslat polohu a jízdu kurýra během směny

Telefon kurýra posílá, co naměřil od minulé dávky: body trasy (samples – poloha, rychlost, směr, výška a špička přetížení), prudké manévry, které poznal (driving_events – prudké brzdění, prudké zrychlení a ostré zatáčky, v g), a stav telefonu (device – baterie, síť, oprávnění k poloze). Provozovna pak vidí své…

Přihlášení: oauth2, oprávnění deliveries:write

GET /restaurants/{restaurant_id}/courier-positions – Kde jsou kurýři na směně

Poslední poloha každého kurýra na směně, jehož telefon ji posílá (postCourierTelemetry), podle jména: stav, rychlost a směr, otevřená trasa se zbývajícími objednávkami a stav telefonu. state je moving, stopped, at_restaurant (do 100 m od provozovny), nebo stale – od telefonu přes 3 minuty nic (bez…

Přihlášení: oauth2, oprávnění deliveries:read

GET /restaurants/{restaurant_id}/delivery-routes/{route_id}/track – Projetá stopa trasy

Kudy kurýr na trase jel, z bodů postCourierTelemetry: body aspoň 10 m od sebe (nejvýš 5 000), prudké manévry a souhrn – vzdálenost, čas v jízdě, nejvyšší a průměrná rychlost za jízdy a počet prudkých manévrů. Body a manévry se drží 14 dní, pak je points_expired true a zůstane jen souhrn. summary je null…

Přihlášení: oauth2, oprávnění deliveries:read

GET /restaurants/{restaurant_id}/address-suggestions – Našeptat doručovací adresy

Hledání adresy pro objednávku přijatou po telefonu přes mapovou službu, kterou používá administrace (Mapy.cz). Vrátí jen adresy uvnitř rozvozové zóny provozovny, každou se zónou, kterou použije kalkulace – pro aplikace personálu jakoukoli aktivní zónu bez ohledu na časy rozvozu (jako v jejich kalkulacích), pro…

Přihlášení: oauth2, oprávnění deliveries:read

Receipts

Pokladna a mobilní číšník: účtenky spočítané serverem, storno vedoucím, směna zařízení a EET 2.0, které odesílá server. Jen pro vlastní zařízení Profirestu.

POST /restaurants/{restaurant_id}/receipts/preview – Spočítat účtenku před placením

Spočítá položky přesně jako createReceipt: sortiment pokladny v issued_at (bez něj teď), cenu půlky a pro zaměstnance, slevy, DPH a částku k placení v hotovosti zaokrouhlenou na celé koruny. Nic se neukládá. Volejte ho online před přijetím platby; účtenku pak pošlete se stejnými cenami.

Přihlášení: oauth2, oprávnění receipts:write

GET /restaurants/{restaurant_id}/receipts – Seznam účtenek

Účtenky a storno doklady, které pokladny provozovny vystavily přes toto API, naposledy přijaté první (offline účtenka poslaná později přijde před staršími). Bez filtru jen účtenky volajícího zařízení. Tržby zapsané jinde – pokladnami na API v1 nebo v administraci – tu nejsou.

Přihlášení: oauth2, oprávnění receipts:read

POST /restaurants/{restaurant_id}/receipts – Vystavit účtenku

Zaplacená účtenka. Server ji spočítá, uloží stejně jako dnešní pokladna – jako objednávku v administraci, takže ji ukážou přehledy, uzávěrky i exporty –, odečte porce a sklad, prodá a uplatní vouchery, připíše věrnostní body a zaeviduje tržbu do EET 2.0.

Přihlášení: oauth2, oprávnění receipts:write

GET /restaurants/{restaurant_id}/receipts/{receipt_id} – Detail účtenky

Jedna účtenka nebo storno doklad, které kterákoli pokladna provozovny vystavila přes toto API, s aktuálním stavem EET. Účtenky pokladen na API v1 vrátí 404.

Přihlášení: oauth2, oprávnění receipts:read

POST /restaurants/{restaurant_id}/receipts/{receipt_id}/storno – Stornovat účtenku

Storno doklad se zápornými částkami jako na dnešní pokladně: tržba se v přehledech odečte, vouchery, kterými se platilo, se vrátí na vouchery, prodané vouchery jsou znovu k prodeji (jen když se z nich nic nepoužilo), věrnostní body se odečtou a s restock (výchozí) se vrátí sklad i porce. EET 2.0 zaeviduje zápornou…

Přihlášení: oauth2, oprávnění receipts:write

POST /restaurants/{restaurant_id}/receipts/{receipt_id}/payment-change – Změnit platbu účtenky

Změní, jak se vydaná účtenka zaplatila, bez storna a nové účtenky – třeba když obsluha zvolila hotovost, ale zákazník platil kartou. Účtenka si nechá id, číslo, položky, celkovou částku i zaokrouhlení; mění se jen payments a hned se přizpůsobí součty směny, pokladní kniha, administrace i přehledy. Odpověď je…

Přihlášení: oauth2, oprávnění receipts:write

GET /restaurants/{restaurant_id}/pos-shift – Otevřená směna tohoto zařízení

Součty účtenek a storno dokladů, které toto zařízení vystavilo přes toto API od své poslední uzávěrky, spočítané serverem, a pohyby hotovosti, které zapsalo (cash_movements). S devices souhrn pokryje otevřené směny víc zařízení provozovny – třeba telefonu číšníka, než je vedoucí uzavře spolu (device_ids…

Přihlášení: oauth2, oprávnění receipts:read

POST /restaurants/{restaurant_id}/pos-shift/close – Uzávěrka tohoto zařízení

Uzavře otevřenou směnu tohoto zařízení se součty spočítanými serverem a uloží ji jako uzávěrku v administraci. S counted_cash odpověď ukáže rozdíl proti očekávané hotovosti (platby hotově, dýško v hotovosti a pohyby hotovosti zařízení). S device_ids jedna uzávěrka pokryje otevřené směny víc zařízení provozovny…

Přihlášení: oauth2, oprávnění receipts:write

GET /restaurants/{restaurant_id}/pos-shifts – Seznam uzavřených směn

Uzávěrky provozovny přesně tak, jak je vrátil closePosShift – co server sečetl, i s doklady z API v1 převzatými přes legacy_receipt_ids – naposledy uzavřené první. Bez filtru jen uzávěrky provedené na volajícím zařízení; device=all všech zařízení. Účtenky jedné uzávěrky jsou v listReceipts?shift_id=. Od…

Přihlášení: oauth2, oprávnění receipts:read

GET /restaurants/{restaurant_id}/pos-shifts/{shift_id} – Uzavřená směna

Jedna uzávěrka provozovny, provedená na kterémkoli jejím zařízení, přesně tak, jak ji vrátil closePosShift. Od 26.11.26.

Přihlášení: oauth2, oprávnění receipts:read

POST /restaurants/{restaurant_id}/cash-movements – Zapsat vklad, výběr nebo výdaj hotovosti

Zapíše peníze, které přišly do kasy nebo z ní odešly mimo účtenky, do pokladní knihy provozovny – téže, kterou vede administrace (Statistiky → Pokladní kniha) a exportuje do agendy Pokladna v Pohodě: deposit (vklad – drobné na směnu, doplnění), income (jiný příjem hotovosti), withdrawal (výběr – odvod do banky…

Přihlášení: oauth2, oprávnění receipts:write

GET /restaurants/{restaurant_id}/tabs – Otevřené účty stolů provozovny

Všechny otevřené účty stolů provozovny ze všech pokladen a číšníků, takže stůl může převzít kterékoli zařízení. Ptejte se s If-None-Match (nezměněný seznam skoro nic nestojí), nebo sledujte události tab.updated a tab.closed.

Přihlášení: oauth2, oprávnění receipts:read

GET /restaurants/{restaurant_id}/tabs/{tab_id} – Detail účtu stolu

Otevřený nebo uzavřený účet stolu s ETag (verzí).

Přihlášení: oauth2, oprávnění receipts:read

PUT /restaurants/{restaurant_id}/tabs/{tab_id} – Otevřít nebo změnit účet stolu

Pošle celý stav účtu: stůl a všechny položky. Bez If-Match se otevře nový účet (201). Při změně otevřeného účtu pošlete If-Match s načteným ETag (bez něj 428 precondition_required); když ho mezitím změnilo jiné zařízení, dostanete 412 precondition_failed – načtěte ho znovu, sloučte a pošlete znovu.…

Přihlášení: oauth2, oprávnění receipts:write

DELETE /restaurants/{restaurant_id}/tabs/{tab_id} – Uzavřít účet stolu bez účtenky

Uzavře účet, který se platit nebude – zrušený stůl. Řádky, které na účtu zůstaly, se počítají jako zrušené: ty, které už šly do kuchyně, se zapíšou jako storna položek stejně jako při odebrání přes putTab a log stolů v administraci zapíše uzavření s nepovinným reason. Položky na jiný účet nejdřív přesuňte přes…

Přihlášení: oauth2, oprávnění receipts:write

POST /restaurants/{restaurant_id}/tabs/{tab_id}/moves – Přesunout položky na jiný účet

Přesune řádky nebo jejich část z tohoto účtu na jiný v jednom kroku – hosté se přesadí k jinému stolu, nebo se účet dělí (placenou část přesuňte na nový účet a zaplaťte ji přes createReceipt). Přesunuté kusy si nesou cenu, přílohy, poznámku, chod, sent_to_kitchen i ordered_at; nic se znovu neoceňuje, takže se…

Přihlášení: oauth2, oprávnění receipts:write

POST /restaurants/{restaurant_id}/pos-activity – Poslat deník akcí pokladny

Akce na pokladně, které nejsou doklady – otevření zásuvky, tisk kopie, přihlášení, přesun položek mezi stoly… – jako text pro Časovou osu akcí (bar) v administraci, stejně jako z dnešní pokladny. Jen zapíše text a nic nemění: přesun položek mezi stoly se třeba dělá dvěma voláními putTab – cílový účet s položkami…

Přihlášení: oauth2, oprávnění receipts:write

Stock

Inventura na vlastních zařízeních Profirestu – položky k přepočítání a výsledek, který nastaví stav skladu, jako v administraci (Sklad → Inventury). Jen pro vlastní zařízení Profirestu.

GET /restaurants/{restaurant_id}/stock-taking/items – Položky k inventuře

Skladové položky, které má administrace označené k inventuře na baru (na pokladnách) nebo v kuchyni, s množstvím, které teď očekává sklad – seznam pro inventuru na zařízení. Položky skryté pro tuto provozovnu chybí.

Přihlášení: oauth2, oprávnění stock:read

POST /restaurants/{restaurant_id}/stock-takings – Zapsat inventuru

Napočítaná množství dokončené inventury v jednom požadavku. Server je porovná se stavem skladu, zapíše inventuru do administrace (Sklad → Inventury) na přihlášeného zaměstnance a nastaví sklad na napočítaná množství; rozdíly zapíše do pohybů skladu jako inventuru – pokud provozovna nemá zapnuté *Nenastavovat sklad…

Přihlášení: oauth2, oprávnění stock:write

GET /restaurants/{restaurant_id}/stock-takings/{stock_taking_id} – Detail inventury

Jedna inventura zapsaná přes API s očekávaným a napočítaným množstvím.

Přihlášení: oauth2, oprávnění stock:read

Backups

Zálohy místní databáze pokladny – ZIP, který pokladna nahrává (pravidelně, na požádání, po uzávěrce) a stáhne při obnově, třeba na novém zařízení. Společné s pokladnami na API v1. Jen pro vlastní zařízení Profirestu.

GET /restaurants/{restaurant_id}/backups – Seznam záloh

Zálohy pokladen provozovny od nejnovější – i ty, které nahrály pokladny na API v1 (legacy: true). V seznamu jsou jen zálohy, které server umí vydat: záloha, jejíž soubor nenajde, se vynechá (getBackup i downloadBackup pro ni vrátí 404). U záloh nahraných přes toto API server drží posledních 64 automatických…

Přihlášení: oauth2, oprávnění backups:read

POST /restaurants/{restaurant_id}/backups – Nahrát zálohu

Nahraje archiv ZIP s místní databází pokladny: tělem je samotný soubor (Content-Type: application/zip), nejvýš 50 MB. Server ho uloží k provozovně a nejstarší zálohy stejného typu nad limit smaže (viz listBackups).

Přihlášení: oauth2, oprávnění backups:write

GET /restaurants/{restaurant_id}/backups/{backup_id} – Detail zálohy

Údaje o jedné záloze provozovny; samotný archiv je na …/content.

Přihlášení: oauth2, oprávnění backups:read

GET /restaurants/{restaurant_id}/backups/{backup_id}/content – Stáhnout zálohu

Archiv ZIP zálohy tak, jak ho pokladna nahrála. Záloha, jejíž soubor už není uložený, vrátí 404 not_found. Archiv obsahuje data provozovny – mimo zařízení ho neuchovávejte.

Přihlášení: oauth2, oprávnění backups:read

Diagnostics

Stav, chyby a logy vlastních zařízení Profirestu pro provozovnu a podporu Profirestu. Zařízení každou minutu přihlásí stav (checkInDevice), chyby hlásí hned (reportDeviceError) a log si drží u sebe; celý log nahraje jen na vyžádání (příkaz upload_logs, putLogUploadPart). Hlášení chyb od uživatelů (createBugReport) jdou podpoře e-mailem.

POST /restaurants/{restaurant_id}/device-logs – Poslat logy zařízení

Zastaralé (26.10.6): záznamy logu už nejdou do databáze po řádcích. Log nechte na zařízení, chyby hlaste hned přes reportDeviceError a celý log nahrajte jen na vyžádání (checkInDevice, putLogUploadPart). Operace starším aplikacím dál funguje a později se odstraní.

Přihlášení: oauth2, oprávnění diagnostics:write

POST /restaurants/{restaurant_id}/bug-reports – Nahlásit chybu

Hlášení chyby od uživatele zařízení pro podporu Profirestu s nedávnými záznamy logu, které zařízení přiloží. Hlášení jde podpoře e-mailem spolu s tím, co zařízení za poslední hodinu poslalo do device-logs.

Přihlášení: oauth2, oprávnění diagnostics:write

POST /restaurants/{restaurant_id}/device-checkin – Přihlásit stav zařízení

Zařízení říká, že žije a v jakém je stavu, a vyzvedne si příkazy – asi 500 bajtů každých 60 sekund z kasy, každých 5 minut z telefonu číšníka s vlastním tokenem a internetem. Tělo je stav zařízení teď: verze, síť, fronty čekající na odeslání (účtenky, platby, tisk), poslední záloha, zařízení k němu připojená (peers…

Přihlášení: oauth2, oprávnění diagnostics:write

POST /restaurants/{restaurant_id}/device-errors – Nahlásit chybu hned

Jedna chyba (v živém režimu i varování) z logu zařízení hned, jak se stane, s řádky logu před ní (context, asi 30 řádků, od nejstaršího) – kolem 3 kB. Server ji drží jako soubor 90 dní a ukazuje v administraci (Zařízení → Chyby) a podpoře Profirestu; kasa hlásí i chyby svých číšníků (peer_key). Z jedné chyby…

Přihlášení: oauth2, oprávnění diagnostics:write

GET /log-uploads/{upload_id} – Stav nahrávání logu

Jak je na tom jeden cíl příkazu upload_logs: které části server má (parts_received) a jestli je nahrávání ještě otevřené. Po přerušení ho přečtěte a pošlete jen chybějící části. Token cíle (pfl_… z příkazu) je Authorization: Bearer – žádný token zařízení, takže nahrává i telefon číšníka bez vlastního tokenu.

Přihlášení: logUpload

PUT /log-uploads/{upload_id}/parts/{part} – Nahrát část logu

Jedna část souboru logu: tělem je gzip (Content-Type: application/gzip), nejvýš 4 MB, s celými řádky NDJSON – server části po pořadí spojí do jednoho souboru gzip bez rozbalení (členy gzipu se dají zřetězit), takže každá část je sama o sobě úplný proud gzip. Části po 1–2 MB projdou i pomalou linkou; přerušené…

Přihlášení: logUpload

POST /log-uploads/{upload_id}/complete – Dokončit nahrávání logu

Všechny části jsou tam: parts říká kolik, server je spojí a nahrávání uzavře (status done). Chybějící část odpoví 422 upload_incomplete s čísly v detail – pošlete je a dokončete znovu. lines, from a to popisují, co soubor nese (ukáže se podpoře). Dokončení už hotového nahrávání jen odpoví jeho stav.

Přihlášení: logUpload

POST /log-uploads/{upload_id}/abort – Vzdát nahrávání logu

Zařízení tento cíl obsloužit nemůže: reason unsupported (aplikace úložiště logů nemá), no_data (za období nic není – úložiště je kratší, zařízení bylo vypnuté), failed (chyba, přes kterou se zařízení nedostane, co přesně řekne message) nebo declined. Nahrávání se uzavře s tím stavem a podpora vidí proč.…

Přihlášení: logUpload

Device settings

Co vlastní zařízení Profirestu potřebují k práci – údaje firmy, tiskové šablony, tiskárny, stoly, licence.

GET /restaurants/{restaurant_id}/device-settings – Nastavení pro zařízení provozovny

Vše nastavené v administraci, co potřebuje pokladna, kuchyňský displej nebo jiné zařízení provozovny: provozovna a firma na účtenkách (IČO, DIČ, plátce DPH), tiskové šablony (Tiskové sestavy), předdefinované poznámky, tiskárny a výrobní stanoviště rozdělené kuchyně, místnosti se stoly (když licence obsahuje mapu…

Přihlášení: oauth2, oprávnění settings:read

Customer directory

Zákazníci celého účtu pro objednávky, které personál bere po telefonu – hledání podle telefonu nebo jména s jejich adresami a příchozí hovory. Jen pro vlastní zařízení Profirestu.

GET /restaurants/{restaurant_id}/customer-directory – Najít zákazníky podle telefonu nebo jména

Pro objednávku přijatou po telefonu. Zákazníci celého účtu – titíž, které administrace ukazuje v Zákaznících –, jejichž telefon začíná na phone nebo jejichž jméno obsahuje name, každý s jednou ze svých doručovacích adres: jeden výsledek na zákazníka a adresu, nejvýš 10. Napřed adresy s polohou, pak registrovaní…

Přihlášení: oauth2, oprávnění directory:read

POST /restaurants/{restaurant_id}/calls – Nahlásit příchozí hovor

Telefon provozovny hlásí hovor. Odpověď řekne, kdo volá – zákazníka, počet jeho objednávek a adresu posledního rozvozu z této provozovny – a kuchyňské displeje provozovny dostanou událost call.received. Číslo, které účet ještě nezná, se jako dnes přidá mezi zákazníky, aby ho ukázaly i obrazovky, které hovory čtou…

Přihlášení: oauth2, oprávnění calls:write

GET /restaurants/{restaurant_id}/calls/latest – Hovor posledních 45 sekund

Poslední hovor nahlášený za posledních 45 sekund, jak ho dnes kuchyňský displej ukazuje u nové objednávky; call: null, když žádný není. Jako dnes zahrnuje hovory celého účtu včetně těch, které nahlásily starší aplikace. Hovory nahlášené přes POST …/calls přicházejí zařízením jejich provozovny i jako…

Přihlášení: oauth2, oprávnění directory:read

Table ordering

Hosté objednávají od stolu a volají obsluhu ze svého telefonu. O všem rozhoduje hlavní kasa podniku a hosty na Wi-Fi podniku obsluhuje sama (její místní API); tyto operace jsou záložní cesta přes internet pro telefony, které se k ní nedostanou (/table/…, s tokenem telefonu u stolu), a spojení hlavní kasy s cloudem (schránka žádostí, zrcadlo stavů, heartbeat). Jen pro vlastní aplikace Profirestu.

POST /table/sessions – Připojit se ke stolu kódem z QR

Záložní cesta objednávání od stolu pro telefon, který se k hlavní kase podniku nedostane přes jeho Wi-Fi. Aplikace hosta pošle kód stolu z QR kódu (table_code) a dostane token tohoto telefonu u tohoto stolu. O všem rozhoduje hlavní kasa: požadavky k ní jdou přes cloud, proto je ordering.blocked_reason…

Přihlášení: bez přihlášení nebo tableGuest

GET /table/session – Stůl, jak ho vidí tento telefon

Provozovna a stůl, návštěva stolu (null, dokud si telefon nepřevezme hlavní kasa), tento telefon, jestli a jak teď jde objednat (ordering), kód pro kamarády u stolu (jen ověřenému telefonu) a otevřená volání tohoto telefonu. Čtěte znovu po každé akci a každých 10 sekund, dokud je aplikace otevřená…

Přihlášení: tableGuest

POST /table/session/join – Přidat se ke skupině kódem od kamaráda

Čtyři číslice, které ukazuje ověřený telefon u stolu (TableSession.join.code). Kód ověří hlavní kasa a odpoví přes cloud: odpověď je 202 se žádostí; čtěte ji přes getTableRequest, dokud status není done (telefon je ověřený – vidí účet a jeho objednávky nemusí čekat na obsluhu) nebo failed (error.code…

Přihlášení: tableGuest

GET /table/requests/{request_id} – Odpověď hlavní kasy na žádost tohoto telefonu

Žádost, kterou tento telefon poslal přes cloud (joinTable, cancelTableOrder, cancelTableCall). queued – hlavní kasa ještě nerozhodla; čtěte znovu za 2 sekundy. done nebo failed je konečné.

Přihlášení: tableGuest

GET /table/menu – Co si host může objednat od stolu

Produkty kategorií, které podnik pro objednávky od stolu povolil, s cenami pokladny. available: false – teď vyprodané; ukažte ho, ale nedovolte ho přidat. age_restricted – věk kontroluje obsluha při podání. Čtěte s If-None-Match; mění se, když podnik změní sortiment.

Přihlášení: tableGuest

GET /table/orders – Objednávky tohoto telefonu

Objednávky, které tento telefon u tohoto stolu poslal, od nejnovější (nejvýš 50), se stavem, jak ho hlásí hlavní kasa. Objednávky jiných telefonů tu nejsou; ověřený telefon vidí celý účet v getTableTab.

Přihlášení: tableGuest

POST /table/orders – Poslat objednávku na stůl

id je UUID, které aplikace vytvoří, když host klepne na „objednat“; při opakování ho zachovejte (i přes druhou cestu – hlavní kasa ho zná). Stejné id se stejným tělem vrátí objednávku s 200; s jiným tělem 422 idempotency_key_mismatch.

Přihlášení: tableGuest

POST /table/orders/{order_id}/cancel – Požádat o zrušení objednávky, která ještě čeká na obsluhu

Jen objednávka ve stavu submitted nebo pending_confirmation (jinak order_not_cancellable). Rozhodne hlavní kasa: odpověď čtěte přes getTableRequest – done (objednávka je cancelled) nebo failed s order_not_cancellable (obsluha ji mezitím přijala).

Přihlášení: tableGuest

POST /table/calls – Zavolat obsluhu ke stolu

waiter – přijďte ke stolu; bill – host chce platit (u obsluhy, platba mobilem sem nepatří). Funguje i při pozastavených objednávkách. Dokud je volání stejného druhu z tohoto telefonu otevřené, dostanete místo druhého to první s 200. Volání dojde na displej baru přes hlavní kasu: submitted, dokud si ho kasa…

Přihlášení: tableGuest

POST /table/calls/{call_id}/cancel – Požádat o zrušení volání

Volání zruší hlavní kasa; odpověď čtěte přes getTableRequest.

Přihlášení: tableGuest

GET /table/tab – Účet stolu

Všechno na účtu stolu, i to, co namarkovala obsluha a co objednaly jiné telefony – jen pro ověřený telefon (jinak device_not_verified). Tak, jak ho naposledy poslala hlavní kasa; 404, dokud stůl účet nemá.

Přihlášení: tableGuest

GET /table/events – Upozornění na změny pro telefon u stolu (Server-Sent Events)

Stejné jako události místního API hlavní kasy: dlouhá odpověď text/event-stream, jejíž zprávy říkají jen, co se změnilo (TableGuestEvent – typ a ID), nikdy jak; stav si aplikace pak načte GETem (getTableSession, listTableOrders, getTableTab). Typy: session (změnil se telefon, návštěva nebo objednávání…

Přihlášení: tableGuest

PUT /restaurants/{restaurant_id}/table/heartbeat – Hlavní kasa žije

Jen hlavní kasa provozovny (zařízení, které obsluhuje objednávky od stolu po Wi-Fi podniku). Posílejte ho každých 30 sekund, dokud je objednávání od stolu zapnuté, a hned při změně pauzy. 90 sekund po posledním bere cloud kasu jako online (online_seconds); potom hosté na záložní cestě dostanou restaurant_offline.…

Přihlášení: oauth2, oprávnění table:sync

GET /restaurants/{restaurant_id}/table/inbox – Žádosti hostů ze záložní cesty

Žádosti hostů, které se místo ke kase dostaly do cloudu, od nejstarší (nejvýš 100). Každou zpracujte stejným kódem jako stejný požadavek na místním API a výsledek pošlete přes completeTableInboxItem; do té doby tu položka zůstane. kind a payload:

Přihlášení: oauth2, oprávnění table:sync

PUT /restaurants/{restaurant_id}/table/inbox/{item_id} – Výsledek žádosti hosta

done s result, nebo failed s error (kód a věta pro hosta, viz listTableInbox). Host ho uvidí hned a podle něj se změní objednávka, volání nebo telefon v cloudu; co z výsledku nejde poznat (pozdější stavy, účet), pošlete přes putTableState. Stejný výsledek poslat znovu je v pořádku (ztracená odpověď); jiný…

Přihlášení: oauth2, oprávnění table:sync

PUT /restaurants/{restaurant_id}/table/state – Zrcadlo stavu stolů z hlavní kasy

Zdrojem pravdy je hlavní kasa. Po každé změně pošlete změněné návštěvy, telefony, objednávky a volání – i z místní cesty, aby je cloud ukázal hostům na záložní cestě, na webovém kuchyňském displeji a v administraci. Každý objekt nese svou version (číslo, které na kase roste s každou změnou): cloud si nechá vyšší a…

Přihlášení: oauth2, oprávnění table:sync

POST /restaurants/{restaurant_id}/table/orders/{order_id}/apply – Zapsat přijatou objednávku od stolu na účet a do kuchyně

Když hlavní kasa přijme objednávku od stolu (obsluha na kase nebo na displeji baru, nebo podle pravidel podniku bez obsluhy), přidá její řádky na účet stolu touto operací, ne přes putTab – na kase nemusí být přihlášený zaměstnanec a řádky se jen přidávají, takže není potřeba If-Match. tab_id je účet návštěvy…

Přihlášení: oauth2, oprávnění table:sync