ProfirestAPI v2
Finální smlouva · v ostrém provozu
ObsahContents
  1. Jak číslujeme verzeHow versions are numbered
  2. Porovnat dvě verzeCompare two versions
  3. VerzeVersions
  4. 26.11.28Změna platby účtenky bez stornaChanging the payment of a receipt without a cancellation
  5. 26.11.27Propadlá licence a offline účtenky obsluhyAn expired licence and offline receipts of the staff
  6. 26.11.26Uzavřené směny, prodej voucheru a přihlášení offlineClosed shifts, selling a voucher and signing in offline
  7. 26.11.25Příjem objednávek zvlášť od otevírací dobyOrder hours apart from the opening hours
  8. 26.11.24Režim Kalkulačka na pokladněThe Calculator mode of the register
  9. 26.11.23Práva recepce a pokojské, úklid s přihlášeným zaměstnancemReception and maid permissions, housekeeping with a signed-in employee
  10. 26.11.22Recepce hotelu – účet pokoje a vyúčtováníHotel reception – the account of the room and the bill
  11. 26.11.21Recepce hotelu – plán obsazenosti, pobyty a hostéHotel reception – the occupancy plan, stays and guests
  12. 26.11.20Živá poloha a jízda kurýrůLive location and driving of couriers
  13. 26.11.19Gastro, ubytování a vstupenky v přehledech tržebFood, accommodation and tickets in the revenue reports
  14. 26.11.18Útrata na pokoj bez účtenky z pokladnyCharge to a room without a receipt from the register
  15. 26.11.17Přehled ubytováníAccommodation statistics
  16. 26.11.16Recenze ubytováníAccommodation reviews
  17. 26.11.15Pobytové balíčky a QR kód hostaStay packages and guest passes
  18. 26.11.14Úklid pokojů a závadyRoom cleaning and faults
  19. 26.11.13Útrata na pokojCharging bills to a room
  20. 26.11.12Přehled rezervací a pravidla zálohReservation statistics and deposit rules
  21. 26.11.11Čekací listina a hodnocení hostůWaiting list and guest ratings
  22. 26.11.10Rezervace pro obsluhu – zálohy, délka, hosté bez rezervace a historie hostaReservations for the staff – deposits, length, walk-ins and guest history
  23. 26.11.9Rezervace stolů a služebReservations of tables and services
  24. 26.11.8Výdejna bez stolůTakeaway-only restaurant
  25. 26.11.7Storno účtenky podle nastavení provozovnyReceipt cancellation by the rules of the restaurant
  26. 26.11.6Přechod vlastních zařízení Profirestu mezi API v1 a v2Profirest's own devices moving between API v1 and v2
  27. 26.11.5Rozvozová zóna u kuchyňského bonuThe delivery zone at a kitchen ticket
  28. 26.11.4Složení – host odebere surovinu („bez žampionů“)Composition – the guest removes an ingredient („without mushrooms“)
  29. 26.11.3Živý proud změn přes Server-Sent EventsThe live change feed over Server-Sent Events
  30. 26.11.2Kurýr u dveří – platba kartou i hotově a nepřevzaté objednávkyThe courier at the door – card or cash payment and orders not taken over
  31. 26.11.1Ceny a účtenka na kuchyňském bonu, půl porce pro personálPrices and the receipt on a kitchen ticket, a half portion for the staff
  32. 26.10.9Pizza z půlek a čtvrtek, vlastní pizza a víc porcí přílohyPizza from halves and quarters, custom pizza and more portions of an add-on
  33. 26.10.8Akce 2.0 – slevy na položky, věrnostní karta, dárky, sady a jednorázové kódyPromotions 2.0 – item discounts, loyalty cards, gifts, sets and single-use codes
  34. 26.10.7Docházkový terminál – rozpis směn a žádosti o volnoAttendance terminal – shift schedule and time-off requests
  35. 26.10.6Stav a chyby vlastních zařízení, logy na vyžádáníStatus and errors of own devices, logs on request
  36. 26.10.5Expresní doručeníExpress delivery
  37. 26.10.4Akce a slevové kódy, kiosek, přehledy tržeb, objednávání od stoluPromotions and promo codes, kiosk, sales reports, ordering from the table
  38. 26.10.3Rozpis DPH dopravy jako na účtenceVAT split of delivery as on the receipt
  39. 26.10.2Přesnější dokumentaceMore precise documentation
  40. 26.10.1První finální verze API v2The first final version of API v2

API v2

Changelog

Co se ve smlouvě API v2 měnilo, verze po verzi – shrnutí, co musí vaše integrace udělat, a přesný výčet nových operací, polí, hodnot a kódů chyb.

How the API v2 contract changed, version by version – a summary, what your integration needs to do, and the exact list of new operations, fields, values and error codes.

Aktuální verzeCurrent version
26.11.28
VydánaReleased
13. 11. 202613 November 2026
Verzí od vydání v2Versions since v2
37
Nekompatibilní změnyIncompatible changes
6

Jak číslujeme verzeHow versions are numbered

Verze smlouvy má tvar ROK.MĚSÍC.N stejně jako aplikace ProfiREST: 26.10.7 je sedmé vydání v říjnu 2026, nový měsíc začíná zase od 1. Číslo říká, kdy vydání vyšlo. Jestli je kompatibilní, říká v2 v adrese – v jejím rámci se nic neodebírá ani nepřejmenovává (slib stability), takže v2 platí, ať vydání přibude kolik chce. Server vždy běží v nejnovější verzi; starší verze se nevolí – přepínač verzí v liště mění jen dokumentaci, aby bylo vidět, co znala integrace napsaná podle starší verze.

The contract version has the form YEAR.MONTH.N, like ProfiREST's apps: 26.10.7 is the seventh release in October 2026, and a new month starts from 1 again. The number says when a release came out. Whether it is compatible is said by v2 in the URL – within it nothing is removed or renamed (stability promise), so v2 holds however many releases come. The server always runs the newest version; older versions cannot be chosen – the version switcher in the top bar changes only the documentation, so you can see what an integration written for an older version knew.

Štítek verzeVersion labelCo přinášíWhat it bringsCo musíte udělatWhat you need to do
Nové funkceNew features Operace, nepovinná vstupní pole, pole v odpovědích, hodnoty výčtů, typy událostí, kódy chyb, oprávnění.Operations, optional request fields, response fields, enum values, event types, error codes, scopes. Nic, pokud dodržujete pravidla pro každého klienta: neznámá pole ignorovat, neznámou hodnotu výčtu brát jako „jiné“.Nothing if you follow the rules for every client: ignore unknown fields, treat an unknown enum value as “other”.
Opravy a dokumentaceFixes and documentation Texty, příklady a chování srovnané se smlouvou; tvar API se nemění.Texts, examples and behaviour aligned with the contract; the shape of the API does not change. Nic; upřesnění chování popisuje karta verze.Nothing; the version card describes any clarified behaviour.
v2 → v3 Nekompatibilní změnu přinese až další hlavní verze.Only the next major version brings an incompatible change. Konec v2 oznámí hlavička Sunset nejméně 12 měsíců předem.The end of v2 is announced with the Sunset header at least 12 months ahead.

Zastaralé operace a pole mají v openapi.json deprecated: true a v kartě verze skupinu Zastaralé s tím, co je nahrazuje; fungují dál až do konce v2. Verzi, kterou server dodržuje, vrací GET /v2/ v poli version (a openapi.json v info.version). Verze porovnávejte číselně po částech – jako text by 26.10.1 vyšla menší než 26.9.12.

Deprecated operations and fields have deprecated: true in openapi.json and a Deprecated group in the version card saying what replaces them; they keep working until the end of v2. The version the server follows is in version of GET /v2/ (and in info.version of openapi.json). Compare versions part by part as numbers – as text 26.10.1 would come out smaller than 26.9.12.

Do 30. 10. 2026 se verze číslovaly 2.0.5 až 2.5.0. Karta každé verze uvádí staré číslo jako „dříve“ a staré odkazy (?v=2.4.0) vedou na stejnou verzi.

Until 30 October 2026 versions were numbered 2.0.5 to 2.5.0. Each version card shows the old number as “formerly”, and old links (?v=2.4.0) lead to the same version.

Porovnat dvě verzeCompare two versions

Vyberte verzi, podle které je vaše integrace napsaná, a uvidíte všechno, co od ní přibylo – i co případně musíte udělat.

Pick the version your integration was written for and see everything added since – and anything you need to do.

26.11.28

Nové funkceNew featuresZpětně kompatibilníBackward compatibleaktuálnícurrent

Změna platby účtenky bez stornaChanging the payment of a receipt without a cancellation

Pokladna může změnit, jak se vydaná účtenka zaplatila – třeba hotově místo kartou – bez storna a nové účtenky (changeReceiptPayment). Účtenka si nechá číslo, položky i celkovou částku, mění se jen platby; součty směny, pokladní kniha a administrace se přizpůsobí hned. Mění se platby hotově, stravenkami, na firemní účet a fakturou, do uzávěrky směny. Platby kartou a dárkovým voucherem zůstávají. Když se změní evidovaná tržba EET 2.0, server pošle opravu sám.

A register can change how an issued receipt was paid – for example by card instead of cash – without a cancellation and a new receipt (changeReceiptPayment). The receipt keeps its number, items and total, only the payments change; the shift totals, the cash book and the administration follow at once. Cash, meal voucher, company account and invoice payments change, until the shift close. Card and gift voucher payments stay. When the recorded EET 2.0 sale changes, the server sends the correction itself.

Co musíte udělatNic. Pokladny, které platbu dosud měnily stornem a novou účtenkou, ať použijí changeReceiptPayment – nevznikají dva doklady navíc a vouchery, body ani sklad se nevracejí. Klienti událostí mají počítat s novým typem receipt.updated (výčet je rozšiřitelný).

What you need to doNothing. Registers that changed a payment by a cancellation and a new receipt should use changeReceiptPayment – no two extra documents, and vouchers, points and the stock are not returned. Event clients should expect the new type receipt.updated (the list is extensible).

PřidánoAdded

ZměněnoChanged

DokumentaceDocumentation

  • Přechod z API v1: changePayment má v API v2 vlastní operaci, už ne storno a novou účtenku.Moving from API v1: changePayment has its own operation in API v2, no longer a cancellation and a new receipt.
Přesný výčet změn ve smlouvěExact list of contract changes 5
Nové operaceNew operations 1
Nové typy událostíNew event types 1
  • receipt.updated
Nové kódy chybNew error codes 2
Nová schémata (třídy v knihovnách)New schemas (classes in the libraries) 1
  • ReceiptPaymentChange

26.11.27

Nové funkceNew featuresZpětně kompatibilníBackward compatible

Propadlá licence a offline účtenky obsluhyAn expired licence and offline receipts of the staff

Zařízení provozovny s propadlou licencí dostanou 403 license_expired, jako kód 700 v API v1. Nastavení zařízení, zálohy, diagnostika a offline účtenky z doby licence fungují dál. Offline účtenka s ruční slevou nebo vlastní položkou bez vedoucího se přijme a Časová osa ji označí. Vystavitel offline účtenky smí být mezitím smazaný zaměstnanec. Relace pokladny a mobilního číšníka vydrží celou směnu.

Devices of a restaurant with an expired licence get 403 license_expired, like code 700 in API v1. The device settings, backups, diagnostics and offline receipts from the time of the licence keep working. An offline receipt with a manual discount or an open item and no manager is accepted and the action timeline marks it. The issuer of an offline receipt may be an employee deleted meanwhile. Sessions of the register and the waiter app last the whole shift.

Co musíte udělatPokladny a další zařízení Profirestu: na license_expired se zamkněte jako po konci paid_until. Pokladna nemá u offline slevy posílat approved_by_id vedoucího, který nic neschválil.

What you need to doRegisters and other Profirest devices: lock on license_expired as after the end of paid_until. A register should not send approved_by_id of a manager who approved nothing for an offline discount.

PřidánoAdded

  • Kód chyby license_expired (403) – licence provozovny vypršela a z kreditu ji obnovit nešlo.The error code license_expired (403) – the licence of the restaurant expired and could not be renewed from the credit.

ZměněnoChanged

  • createReceipt s offline: true přijme ruční slevu a vlastní položku i bez vedoucího (dřív 403 manager_approval_required) a zapíše ji do Časové osy.createReceipt with offline: true accepts a manual discount and an open item also without a manager (before 403 manager_approval_required) and notes it in the timeline.
  • issued_by_id offline účtenky smí být zaměstnanec účtu smazaný nebo odebraný z provozovny.issued_by_id of an offline receipt may be an employee of the account deleted or removed from the restaurant.
  • Relace aplikace profirest-pos nekončí po 5 minutách nečinnosti, ale až s max_expires_at (idle_timeout_seconds 43 200).A session of the profirest-pos app does not end after 5 minutes without use but at max_expires_at (idle_timeout_seconds 43,200).
Přesný výčet změn ve smlouvěExact list of contract changes 1
Nové kódy chybNew error codes 1
  • license_expired Licence provozovny vypršelaThe licence of the restaurant has expired

26.11.26

Nové funkceNew featuresZpětně kompatibilníBackward compatible

Uzavřené směny, prodej voucheru a přihlášení offlineClosed shifts, selling a voucher and signing in offline

Pokladna může zpětně přečíst uzavřené směny (listPosShifts, getPosShiftClose) i účtenky jedné uzávěrky (listReceipts?shift_id=). Spárovaná pokladna v checkVoucher uvidí i dosud neprodaný voucher s jeho hodnotou a prodá ho bez zadávání ceny. Pro přihlášení obsluhy bez spojení dostane pokladna v listStaff kontrolu PINu každého zaměstnance s rolí na pokladně (offline_sign_in).

A register can read closed shifts back (listPosShifts, getPosShiftClose) and the receipts of one close (listReceipts?shift_id=). A paired register sees in checkVoucher also a voucher not sold yet with its value and sells it without typing the price. For signing employees in without connection a register gets in listStaff a PIN check of every employee with a register role (offline_sign_in).

Co musíte udělatNic. Klienti, kteří Voucher.status porovnávají s pevným výčtem, mají počítat s novou hodnotou for_sale (výčet je rozšiřitelný).

What you need to doNothing. Clients comparing Voucher.status with a fixed list should expect the new value for_sale (the list is extensible).

PřidánoAdded

  • listPosShifts a getPosShiftClose – uzavřené směny provozovny tak, jak je vrátil closePosShift.listPosShifts and getPosShiftClose – closed shifts of the restaurant as closePosShift returned them.
  • Parametr shift_id v listReceipts – účtenky jedné uzávěrky, i převzaté doklady z API v1.The shift_id parameter of listReceipts – the receipts of one close, also API v1 documents taken over.
  • for_sale v Voucher.status – neprodaný voucher, jen pro spárovanou pokladnu.for_sale in Voucher.status – a voucher not sold yet, for a paired register only.
  • offline_sign_in v StaffMember – kontrola PINu pro přihlášení bez spojení, stejné hodnoty jako offline_approval.offline_sign_in in StaffMember – a PIN check for signing in without connection, the same values as offline_approval.

ZměněnoChanged

  • unit_price řádku voucher_sale je nepovinná – bez ní se voucher prodá za svou hodnotu.unit_price of a voucher_sale line is optional – without it the voucher sells at its value.
Přesný výčet změn ve smlouvěExact list of contract changes 6
Nové operaceNew operations 2
Nová poleNew fields 1
  • StaffMember.offline_sign_in
Nové hodnoty výčtůNew enum values 1
  • Voucher.status: for_sale
Nové parametryNew parameters 1
Nová schémata (třídy v knihovnách)New schemas (classes in the libraries) 1
  • PosShiftClosePage

26.11.25

Nové funkceNew featuresZpětně kompatibilníBackward compatible

Příjem objednávek zvlášť od otevírací dobyOrder hours apart from the opening hours

Provozovna může přijímat objednávky z e-shopů kratší dobu, než má otevřeno – třeba „Otevřeno do 22:00 · Objednávky do 21:30“. Nová operace getOrderHours vrací příjem objednávek (výchozí je stejně jako otevírací doba) a ordering.venue_open_now říká, jestli má provozovna podle otevírací doby otevřeno. Aplikace web se řídí příjmem objednávek: ordering.open_now, listTimeSlots i kalkulace.

A restaurant may accept orders from e-shops for a shorter time than it is open – for example „Open until 22:00 · Orders until 21:30“. The new operation getOrderHours returns the order hours (by default the same as the opening hours) and ordering.venue_open_now says whether the restaurant is open by its opening hours. web applications follow the order hours: ordering.open_now, listTimeSlots and the quote.

Co musíte udělatNic, dokud provozovna nenastaví vlastní příjem objednávek. Aplikace pro hosty, které ukazují „Otevřeno / Zavřeno“ podle open_now, ho mají brát z venue_open_now a čas objednávek ukazovat z getOrderHours.

What you need to doNothing until a restaurant sets its own order hours. Guest applications showing „Open / Closed“ by open_now should take it from venue_open_now and show the ordering times from getOrderHours.

PřidánoAdded

  • getOrderHours – příjem objednávek aplikací web po dnech a týdenní šablona, same_as_opening_hours.getOrderHours – the order hours of web applications per day and the weekly template, same_as_opening_hours.
  • venue_open_now v Restaurant.ordering – otevřeno podle otevírací doby, jen pro zobrazení.venue_open_now in Restaurant.ordering – open by the opening hours, for display only.

ZměněnoChanged

  • U aplikací web se open_now, next_change_at, listTimeSlots, kalkulace a rozvozové zóny bez vlastních časů řídí příjmem objednávek místo otevírací doby. Bez vlastního příjmu objednávek se nic nemění.For web applications open_now, next_change_at, listTimeSlots, the quote and delivery zones without own times follow the order hours instead of the opening hours. Without own order hours nothing changes.
Přesný výčet změn ve smlouvěExact list of contract changes 3
Nové operaceNew operations 1
Nová poleNew fields 1
  • RestaurantOrdering.venue_open_now
Nová schémata (třídy v knihovnách)New schemas (classes in the libraries) 1
  • OrderHours

26.11.24

Nové funkceNew featuresZpětně kompatibilníBackward compatible

Režim Kalkulačka na pokladněThe Calculator mode of the register

Pokladna umí prodávat bez sortimentu: obsluha napíše počet a cenu a klepne na tlačítko skupiny, třeba „Pečivo 12 %“. Tlačítka (název, sazba DPH, barva) nastavuje provozovna a pokladna je dostane v nastavení zařízení. Řádek z tlačítka je položka s vlastní cenou, kterou smí prodat kdokoli s rolí pos bez PINu vedoucího.

The register can sell without a catalog: the cashier types a quantity and a price and taps a key of a group, for example „Bakery 12 %“. The restaurant sets the keys (name, VAT rate, colour) and the register gets them in the device settings. A line of a key is an open item any employee with the pos role may sell, no manager's PIN.

Co musíte udělatPartnerské aplikace nic. Pokladna, která režim nabízí, čte pos.calculator v getDeviceSettings a u řádků z tlačítek posílá calculator_key_id.

What you need to doPartner applications nothing. A register offering the mode reads pos.calculator in getDeviceSettings and sends calculator_key_id with the lines of the keys.

PřidánoAdded

  • pos.calculator v getDeviceSettings – zda je režim zapnutý a tlačítka skupin (id, name, vat_rate, color, position).pos.calculator in getDeviceSettings – whether the mode is on and the keys of the groups (id, name, vat_rate, color, position).
  • calculator_key_id u položky open_item v createReceipt a previewReceipt – řádek obsluhy bez vedoucího, v účtence price_source calculator.calculator_key_id on an open_item in createReceipt and previewReceipt – a line of a cashier without a manager, price_source calculator on the receipt.
  • Kód pole calculator_key_mismatch – sazba řádku není sazba tlačítka.The field code calculator_key_mismatch – the rate of the line is not the rate of the key.
Přesný výčet změn ve smlouvěExact list of contract changes 5
Nová poleNew fields 2
  • DeviceSettings.pos.calculator
  • ReceiptItemInput.calculator_key_id
Nové hodnoty výčtůNew enum values 1
  • ReceiptLine.price_source: calculator
Nová schémata (třídy v knihovnách)New schemas (classes in the libraries) 2
  • PosCalculator
  • PosCalculatorKey

26.11.23

Nové funkceNew featuresZpětně kompatibilníBackward compatible

Práva recepce a pokojské, úklid s přihlášeným zaměstnancemReception and maid permissions, housekeeping with a signed-in employee

Recepce a pokojská mají vlastní práva zaměstnance pro zařízení jako pokladna a kuchyň: role reception, nová reception_manager a housekeeping plynou z nich, ne z oprávnění webové administrace. Storno dokladu za pobyt a mazání plateb smí jen správce recepce. Operace úklidu nově přijímají token zaměstnance a zapíšou, kdo úkol udělal nebo závadu nahlásil.

The reception and maids have their own employee permissions for devices like the register and the kitchen: the roles reception, the new reception_manager and housekeeping come from them, not from permissions of the web administration. Only a reception manager may cancel the receipt for a stay and remove payments. Housekeeping operations now accept the staff token and record who did the task or reported the fault.

Co musíte udělatPartnerské aplikace nic. Kdo posílá u úklidu Profirest-Staff-Token, uvidí v úkolech a závadách zaměstnance, který je udělal.

What you need to doPartner applications nothing. Those who send Profirest-Staff-Token with housekeeping operations see the employee who did tasks and reported faults.

PřidánoAdded

ZměněnoChanged

  • Role reception a housekeeping plynou z vlastních práv zaměstnance Recepce a Pokojská, ne z oprávnění webové administrace Ubytování, plného přístupu a Pokojská.The roles reception and housekeeping come from the employee permissions Reception and Maid, not from the web administration permissions Accommodation, full access and Maid.

OpravenoFixed

  • Úkol úklidu a závada zapsané s tokenem zaměstnance teď nesou zaměstnance (done_by_employee_id, created_by_employee_id).A housekeeping task and a fault recorded with a staff token now carry the employee (done_by_employee_id, created_by_employee_id).
Přesný výčet změn ve smlouvěExact list of contract changes 7
Nové hodnoty výčtůNew enum values 1
  • StaffMember.roles[]: reception_manager
Nové parametryNew parameters 6

26.11.22

Nové funkceNew featuresNekompatibilní změnaIncompatible change

Recepce hotelu – účet pokoje a vyúčtováníHotel reception – the account of the room and the bill

Aplikace recepce vyúčtuje pobyt sama: přidá služby z ceníku a vlastní položky, zapíše platby hosta, vystaví nebo stornuje doklad za pobyt, ukáže QR kód hosta s tím, co smí, a pohlídá cizince čekající na hlášení do Ubyportu (i s odesláním hned). Seznam pobytů nově ukazuje zůstatek účtu.

The reception application settles a stay itself: it adds services of the price list and own items, records the guest's payments, issues or cancels the receipt for the stay, shows the guest's QR code with what the guest may use, and watches foreigners waiting for the report to Ubyport (also sending it now). The list of stays now shows the balance of the account.

Co musíte udělatNic – vše je nové. LodgingStay má nové pole balance a doklad za pobyt v getStay pole kind.

What you need to doNothing – everything is new. LodgingStay has the new field balance and the receipt in getStay the field kind.

PřidánoAdded

Přesný výčet změn ve smlouvěExact list of contract changes 32
Nové operaceNew operations 11
Nová poleNew fields 1
  • LodgingStay.balance
Už nejsou povinnéNo longer required 6
  • LodgingStayDetail.receipt.eet
  • LodgingStayDetail.receipt.id
  • LodgingStayDetail.receipt.invoice
  • LodgingStayDetail.receipt.issued_at
  • LodgingStayDetail.receipt.number
  • LodgingStayDetail.receipt.total
Nová schémata (třídy v knihovnách)New schemas (classes in the libraries) 8
  • LodgingReceipt
  • LodgingServiceList
  • StayGuestPass
  • StayPaymentInput
  • StayReceiptCancel
  • StayServiceInput
  • UbyportSendResult
  • UbyportStatus
Odebráno – nekompatibilníRemoved – incompatible 6
  • field:LodgingStayDetail.receipt.eet
  • field:LodgingStayDetail.receipt.id
  • field:LodgingStayDetail.receipt.invoice
  • field:LodgingStayDetail.receipt.issued_at
  • field:LodgingStayDetail.receipt.number
  • field:LodgingStayDetail.receipt.total

26.11.21

Nové funkceNew featuresZpětně kompatibilníBackward compatible

Recepce hotelu – plán obsazenosti, pobyty a hostéHotel reception – the occupancy plan, stays and guests

Základ pro aplikaci recepce Profirestu: pokoje a typy pokojů se stavem úklidu, pobyty plánu obsazenosti za období (i dnešní příjezdy, odjezdy a ubytovaní jedním dotazem) a detail pobytu se zapsanými hosty, jejich doklady, zůstatkem účtu, dokladem za pobyt a historií. Recepce najde volné pokoje s cenou, založí, změní a přesune pobyt, potvrdí ho, ubytuje a odhlásí hosty nebo pobyt zruší a zapíše hosty s doklady pro domovní knihu a cizineckou policii. Server u každého pobytu říká, které kroky teď dovolí. Operace jsou jen pro vlastní aplikace Profirestu a potřebují přihlášeného zaměstnance s rolí recepce.

The base for Profirest's reception application: rooms and room types with the state of cleaning, stays of the occupancy plan for a period (also today's arrivals, departures and guests staying now in one call) and the detail of a stay with the registered guests, their documents, the balance of the account, the receipt for the stay and the history. The reception finds free rooms with prices, creates, changes and moves a stay, confirms it, checks guests in and out or cancels the stay, and registers guests with their documents for the guest book and the foreign police. For every stay the server says which steps it allows now. The operations are only for Profirest's own applications and need a signed-in employee with the reception role.

Co musíte udělatNic – vše je nové. StaffMember.roles může nově obsahovat reception a housekeeping; role, které neznáte, ignorujte.

What you need to doNothing – everything is new. StaffMember.roles can now contain reception and housekeeping; ignore roles you do not know.

PřidánoAdded

Přesný výčet změn ve smlouvěExact list of contract changes 37
Nové operaceNew operations 16
Nové hodnoty výčtůNew enum values 1
  • StaffMember.roles[]: housekeeping, reception
Nové kódy chybNew error codes 2
Nová oprávněníNew scopes 2
  • lodging_desk:read – Recepce hotelu: vidět pokoje, plán obsazenosti a každý pobyt s kontakty hostů, jejich doklady totožnosti a historií pobytu.The reception of a hotel: see the rooms, the occupancy plan and every stay with the guests' contacts, their identity documents and the history of the stay.
  • lodging_desk:write – Recepce hotelu: zakládat, měnit, přesouvat, ubytovávat, odhlašovat a rušit pobyty, zapisovat hosty a vyúčtovat účet pokoje.The reception of a hotel: create, change, move, check in, check out and cancel stays, register guests and settle the account of the room.
Nová schémata (třídy v knihovnách)New schemas (classes in the libraries) 16
  • LodgingAvailability
  • LodgingGuest
  • LodgingGuestInput
  • LodgingQuote
  • LodgingRegistrationLists
  • LodgingRoom
  • LodgingRoomType
  • LodgingRooms
  • LodgingStay
  • LodgingStayCancel
  • LodgingStayCreate
  • LodgingStayDetail
  • LodgingStayGuestInput
  • LodgingStayList
  • LodgingStayMove
  • LodgingStayUpdate

26.11.20

Nové funkceNew featuresZpětně kompatibilníBackward compatible

Živá poloha a jízda kurýrůLive location and driving of couriers

Telefon kurýra během směny posílá polohu, rychlost, směr a prudké manévry (brzdění, zrychlení, zatáčky v g). Kuchyňské displeje, dispečink a partnerské aplikace vidí kurýry živě – seznamem i událostmi v proudu – a u každé trasy projetou stopu se souhrnem (vzdálenost, čas v jízdě, nejvyšší rychlost). Poloha se zapisuje jen během směny a jen v provozovnách, které sledování kurýrů zapnuly.

During the shift the courier's phone sends the location, speed, heading and harsh manoeuvres (braking, acceleration, turns in g). Kitchen displays, dispatchers and partner applications see the couriers live – as a list and as events in the stream – and the driven track of every route with its summary (distance, time moving, top speed). The location is recorded only during the shift and only in restaurants that turned courier tracking on.

Co musíte udělatNic – vše je nové. Kdo čte proud událostí s deliveries:read, začne dostávat courier.position a courier.shift_changed; typy, které nezná, má ignorovat. Webhooky courier.position nedostávají.

What you need to doNothing – everything is new. Readers of the event feed with deliveries:read start getting courier.position and courier.shift_changed; they should ignore types they do not know. Webhooks do not get courier.position.

PřidánoAdded

  • postCourierTelemetry – telefon kurýra posílá dávky bodů, prudkých manévrů a stavu telefonu; odpověď říká, jak často posílat (mode, send_every_s).postCourierTelemetry – the courier's phone sends batches of points, harsh manoeuvres and the state of the phone; the answer says how often to send (mode, send_every_s).
  • listCourierPositions – kde jsou kurýři na směně: stav, rychlost, otevřená trasa a zbývající objednávky, baterie a oprávnění telefonu.listCourierPositions – where the couriers on shift are: the state, speed, the open route and the orders left, the battery and the permission of the phone.
  • getDeliveryRouteTrack – projetá stopa trasy s prudkými manévry a souhrnem; body se drží 14 dní, souhrn zůstává.getDeliveryRouteTrack – the driven track of a route with harsh manoeuvres and the summary; points are kept for 14 days, the summary stays.
  • Události courier.position (jen proud a listEvents, drží se 24 hodin) a courier.shift_changed pod deliveries:read.The events courier.position (only the feed and listEvents, kept for 24 hours) and courier.shift_changed under deliveries:read.
Přesný výčet změn ve smlouvěExact list of contract changes 27
Nové operaceNew operations 3
Nové typy událostíNew event types 2
  • courier.position
  • courier.shift_changed
Nová schémata (třídy v knihovnách)New schemas (classes in the libraries) 22
  • CourierActivity
  • CourierDeviceState
  • CourierDeviceStateInput
  • CourierLocation
  • CourierLocationInput
  • CourierNetwork
  • CourierPosition
  • CourierPositionList
  • CourierPositionState
  • CourierTelemetryBatch
  • CourierTelemetryResult
  • CourierTelemetrySample
  • CourierTrackingMode
  • CourierTrackingOffReason
  • DeliveryRouteTrack
  • DeliveryRouteTrackSummary
  • DrivingEvent
  • DrivingEventInput
  • DrivingEventType
  • DrivingThresholds
  • LocationPermission
  • TrackPoint

26.11.19

Nové funkceNew featuresZpětně kompatibilníBackward compatible

Gastro, ubytování a vstupenky v přehledech tržebFood, accommodation and tickets in the revenue reports

Provozovna, která kromě jídla a pití prodává i ubytování nebo vstupenky, si přehledy tržeb omezí na jeden druh tržby nebo je rozdělí – stejně jako Statistiky a Měsíční přehledy v administraci. Průměrná objednávka gastra tak není zkreslená doklady za pobyt a nákupy vstupenek.

A restaurant that also sells accommodation or tickets besides food and drinks can limit the revenue reports to one kind of revenue or split them – like the Statistics and the Monthly reports of the administration. The average order of the food is then not skewed by documents of stays and ticket purchases.

Co musíte udělatNic – parametr i nová pole jsou nepovinné, bez parametru vrací přehledy totéž co dřív.

What you need to doNothing – the parameter and the new fields are optional; without the parameter the reports return the same as before.

PřidánoAdded

Přesný výčet změn ve smlouvěExact list of contract changes 8
Nová poleNew fields 2
  • ProductSales.segment
  • SalesSummary.segment
Nové hodnoty výčtůNew enum values 4
  • SalesSummary.group_by: segment
  • getProductSales:segment: food, lodging, tickets
  • getSalesSummary:group_by: segment
  • getSalesSummary:segment: food, lodging, tickets
Nové parametryNew parameters 2

26.11.18

Opravy a dokumentaceFixes and documentationZpětně kompatibilníBackward compatible

Útrata na pokoj bez účtenky z pokladnyCharge to a room without a receipt from the register

Ubytování vystavuje při odjezdu hosta doklad za celý pobyt – s ubytováním, službami i útratou z restaurace a baru zapsanou na pokoj. Pokladna proto na útratu zapsanou na pokoj účtenku nevystavuje.

The accommodation issues a document for the whole stay at the guest's departure – with the accommodation, services and the bill of the restaurant or the bar charged to the room. The register therefore issues no receipt for a charge to a room.

Co musíte udělatPokladna, která zapisuje útratu na pokoj (chargeToStay): účet stolu uzavřete bez účtenky a útratu pošlete za každou sazbu DPH zvlášť. Tvar API se nemění.

What you need to doA register that charges bills to rooms (chargeToStay): close the tab without a receipt and send the charge per VAT rate. The shape of the API does not change.

DokumentaceDocumentation

  • chargeToStay – pokladna účtenku nevystaví, tržbou je útrata na dokladu za pobyt při odjezdu.chargeToStay – the register issues no receipt; the charge is revenue on the document of the stay at departure.

Tvar API se nezměnil – jen texty, příklady a chování podle smlouvy.The shape of the API did not change – texts, examples and behaviour by the contract only.

26.11.17

Nové funkceNew featuresZpětně kompatibilníBackward compatible

Přehled ubytováníAccommodation statistics

Čísla ubytování za období pro majitele a BI: obsazenost, průměrná cena za noc, tržba na dostupný pokoj, tržby, hosté podle zemí a věku, zdroje rezervací, délka a předstih pobytů, storna, služby, balíčky a srovnání s loňskem.

Accommodation numbers of a period for the owner and BI: occupancy, ADR, RevPAR, revenue, guests by country and age, booking sources, length and lead time of stays, cancellations, services, packages and a comparison with last year.

Co musíte udělatNic. Jen nová operace (lodging:read).

What you need to doNothing. Only a new operation (lodging:read).

PřidánoAdded

  • getLodgingStats – přehled za období po dnech, typech pokojů, zdrojích, zemích a věku hostů, s previous za stejné období loni.getLodgingStats – statistics of a period by day, room type, source, country and age of guests, with previous for the same period last year.
Přesný výčet změn ve smlouvěExact list of contract changes 3
Nové operaceNew operations 1
Nová schémata (třídy v knihovnách)New schemas (classes in the libraries) 2
  • LodgingStats
  • LodgingStatsKpi

26.11.16

Nové funkceNew featuresZpětně kompatibilníBackward compatible

Recenze ubytováníAccommodation reviews

Hodnocení hostů po pobytu i recenze z portálů na jednom místě s přehledem (průměr, zdroje, hvězdičky, dílčí hodnocení) a odpovídání – u hodnocení hosta i e-mailem.

Ratings of guests after their stay and reviews from portals in one place with an overview (average, sources, stars, sub-ratings) and replies – for a guest's rating also by e-mail.

Co musíte udělatNic. Čtení s lodging:read, odpovídání s lodging:write.

What you need to doNothing. Reading with lodging:read, replying with lodging:write.

PřidánoAdded

Přesný výčet změn ve smlouvěExact list of contract changes 5
Nové operaceNew operations 2
Nová schémata (třídy v knihovnách)New schemas (classes in the libraries) 3
  • LodgingReview
  • LodgingReviewList
  • LodgingReviewReplyInput

26.11.15

Nové funkceNew featuresZpětně kompatibilníBackward compatible

Pobytové balíčky a QR kód hostaStay packages and guest passes

Seznam pobytových balíčků (noci zdarma, sleva, příplatek, služby v ceně) a čtečka QR kódu hosta pro turnikety wellness, snídaně a parkoviště: server řekne, jestli host smí dovnitř, a vstup zapíše. Bez jmen hostů.

The list of stay packages (free nights, discount, surcharge, included services) and a reader of the guest's QR code for wellness gates, breakfast and the car park: the server says whether the guest may go in and records the entry. Without guests' names.

Co musíte udělatNic. Čtečka potřebuje oprávnění guest_passes:check, seznam balíčků lodging:read.

What you need to doNothing. A reader needs the scope guest_passes:check, the list of packages lodging:read.

PřidánoAdded

  • listLodgingPackages – balíčky, které provozovna nabízí, s pravidly ceny a službami v ceně.listLodgingPackages – the packages the restaurant offers with their price rules and included services.
  • checkGuestPass a undoGuestPassCheck – ověření QR kódu hosta na místě (wellness, snídaně, polopenze, parkoviště) a vrácení vstupu.checkGuestPass and undoGuestPassCheck – checking the guest's QR code at a place (wellness, breakfast, half board, car park) and undoing an entry.
  • InHouseStay.package a StayFolio.package – balíček pobytu.InHouseStay.package and StayFolio.package – the package of the stay.
  • Oprávnění guest_passes:check.Scope guest_passes:check.
Přesný výčet změn ve smlouvěExact list of contract changes 10
Nové operaceNew operations 3
Nová poleNew fields 2
  • InHouseStay.package
  • StayFolio.package
Nová oprávněníNew scopes 1
  • guest_passes:check – Ověřovat QR kódy ubytovaných hostů u wellness, snídaní nebo parkoviště a zapisovat jejich vstupy – pokoj a co host smí, bez jmen.Check QR codes of staying guests at the wellness, breakfast or car park and record their entries – room and what the guest may use, no names.
Nová schémata (třídy v knihovnách)New schemas (classes in the libraries) 4
  • GuestPassCheck
  • GuestPassCheckInput
  • LodgingPackage
  • LodgingPackageList

26.11.14

Nové funkceNew featuresZpětně kompatibilníBackward compatible

Úklid pokojů a závadyRoom cleaning and faults

Aplikace pro pokojské a údržbu: úkoly úklidu na den po pokojích (po odjezdu, obsazené pokoje, přistýlky pro příjezdy, výměna ručníků a povlečení podle pravidel provozovny), odškrtávání a hlášení závad, které můžou pokoj vyřadit z prodeje. Bez jmen a údajů hostů.

Applications for housekeepers and maintenance: the cleaning tasks of the day by room (after departure, occupied rooms, extra beds for arrivals, towels and linen by the rules of the restaurant), ticking them off and reporting faults that can take a room out of sale. Without guests' names and data.

Co musíte udělatNic. Kdo chce úklid, požádá v autorizaci o housekeeping:read a housekeeping:write. Provozovna musí mít Ubytování v licenci.

What you need to doNothing. To use housekeeping ask for housekeeping:read and housekeeping:write in the authorization. The restaurant needs Accommodation in its licence.

PřidánoAdded

Přesný výčet změn ve smlouvěExact list of contract changes 17
Nové operaceNew operations 6
Nová oprávněníNew scopes 2
  • housekeeping:read – Vidět úkoly úklidu pokojů a jejich závady – bez údajů hostů.See the cleaning tasks of rooms and their faults – without guest data.
  • housekeeping:write – Odškrtávat úkoly úklidu a hlásit a opravovat závady pokojů.Tick cleaning tasks off and report and fix faults of rooms.
Nová schémata (třídy v knihovnách)New schemas (classes in the libraries) 9
  • HousekeepingDay
  • HousekeepingRoom
  • HousekeepingTask
  • HousekeepingTaskInput
  • RoomIssue
  • RoomIssueFixInput
  • RoomIssueInput
  • RoomIssueList
  • RoomIssueReported

26.11.13

Nové funkceNew featuresZpětně kompatibilníBackward compatible

Útrata na pokojCharging bills to a room

Pokladna restaurace nebo baru hotelu zapíše útratu ubytovaného hosta na účet jeho pokoje a host ji zaplatí při odjezdu. Seznam právě ubytovaných hostů, účet pokoje s platbami a zůstatkem a zápis útraty, který se při opakování nezdvojí.

The register of a hotel restaurant or bar charges the bill of a staying guest to the account of the room and the guest pays it at departure. The list of guests staying now, the account of the room with payments and balance, and a charge that is never written twice when repeated.

Co musíte udělatNic. Kdo chce útratu na pokoj, požádá v autorizaci o lodging:read a lodging:write. Provozovna musí mít Ubytování v licenci.

What you need to doNothing. To charge bills to rooms ask for lodging:read and lodging:write in the authorization. The restaurant needs Accommodation in its licence.

PřidánoAdded

  • listInHouseStays – kdo je právě ubytovaný: pokoj, jméno, termín, počet osob a co zbývá zaplatit.listInHouseStays – guests staying now: room, name, dates, number of guests and what is left to pay.
  • getStayFolio – účet pokoje: ubytování, poplatek z pobytu, služby a útraty, platby a zůstatek.getStayFolio – the account of the room: accommodation, city tax, services and charges, payments and balance.
  • chargeToStay – útrata na pokoj s vaší reference, která se nikdy nezapíše dvakrát; jen u právě ubytovaného hosta, jinak lodging_state_conflict.chargeToStay – a charge to the room with your reference that is never written twice; only for a guest staying now, otherwise lodging_state_conflict.
  • Oprávnění lodging:read a lodging:write; DeviceSettings.features.lodging říká pokladně, že může nabízet „na pokoj“.Scopes lodging:read and lodging:write; DeviceSettings.features.lodging tells the register it may offer „to the room“.

DokumentaceDocumentation

  • DeviceSettings.features.reservations už neříká, že je vyhrazené – Rezervační systém Profirest má.DeviceSettings.features.reservations no longer says it is reserved – Profirest has the Reservation system.
Přesný výčet změn ve smlouvěExact list of contract changes 13
Nové operaceNew operations 3
Nová poleNew fields 1
  • DeviceSettings.features.lodging
Nové kódy chybNew error codes 1
Nová oprávněníNew scopes 2
  • lodging:read – Vidět právě ubytované hosty (pokoj, jméno, termín) a účty jejich pokojů.See the guests staying now (room, name, dates) and the accounts of their rooms.
  • lodging:write – Zapisovat útraty na účet pokoje.Charge bills to the account of a room.
Nová schémata (třídy v knihovnách)New schemas (classes in the libraries) 6
  • FolioLine
  • FolioPayment
  • InHouseStay
  • InHouseStays
  • StayChargeInput
  • StayFolio

26.11.12

Nové funkceNew featuresZpětně kompatibilníBackward compatible

Přehled rezervací a pravidla zálohReservation statistics and deposit rules

Přehled rezervací za období se stejnými čísly jako v administraci, včetně skutečné doby u stolu s návrhem lepšího nastavení. Pravidla rezervací nově říkají, kdy a kolik zálohy provozovna chce, připomínky a hodnocení.

Reservation statistics for a period with the same numbers as the administration, including how long guests really sit with a suggestion for better rules. The reservation rules now tell when and how much deposit the restaurant wants, the reminders and the ratings.

Co musíte udělatNic. Jen nová operace a nová pole.

What you need to doNothing. Only a new operation and new fields.

PřidánoAdded

  • getReservationStats – rezervace, hosté, nepřišlí, zdroje, dny a hodiny, zálohy, hodnocení a table_turn (skutečná doba u stolu a návrhy).getReservationStats – reservations, guests, no-shows, sources, weekdays and hours, deposits, ratings and table_turn (real table time and suggestions).
  • getReservationSettings: deposit (režim, částky, lhůty, no_show_guests – záloha od hostů, kteří už nepřišli), reminders, feedback_enabled, guest_max_moves.getReservationSettings: deposit (mode, amounts, time limits, no_show_guests – a deposit from guests who did not come before), reminders, feedback_enabled, guest_max_moves.
Přesný výčet změn ve smlouvěExact list of contract changes 6
Nové operaceNew operations 1
Nová poleNew fields 4
  • ReservationSettings.deposit
  • ReservationSettings.feedback_enabled
  • ReservationSettings.guest_max_moves
  • ReservationSettings.reminders
Nová schémata (třídy v knihovnách)New schemas (classes in the libraries) 1
  • ReservationStats

26.11.11

Nové funkceNew featuresZpětně kompatibilníBackward compatible

Čekací listina a hodnocení hostůWaiting list and guest ratings

Aplikace obsluhy vede čekací listinu hostů bez stolu – zapíše je, pošle jim SMS, že je stůl připravený, a usadí je. Hodnocení po návštěvě (1–5 hvězdiček a komentář) si vezmete za období i s průměrem.

An application of the staff keeps the waiting list of guests without a table – adds them, sends them an SMS that the table is ready and seats them. Ratings after the visit (1–5 stars and a comment) for a period, with the average.

Co musíte udělatNic. Jen nové operace.

What you need to doNothing. Only new operations.

PřidánoAdded

Přesný výčet změn ve smlouvěExact list of contract changes 11
Nové operaceNew operations 5
Nová schémata (třídy v knihovnách)New schemas (classes in the libraries) 6
  • ReservationFeedback
  • ReservationFeedbackList
  • WaitlistClose
  • WaitlistEntry
  • WaitlistEntryCreate
  • WaitlistList

26.11.10

Nové funkceNew featuresZpětně kompatibilníBackward compatible

Rezervace pro obsluhu – zálohy, délka, hosté bez rezervace a historie hostaReservations for the staff – deposits, length, walk-ins and guest history

Aplikace obsluhy pošle hostovi odkaz k zaplacení zálohy (i rezervace přijaté po telefonu), zálohu odpustí, zadá vlastní délku rezervace stolu, usadí hosty bez rezervace a při telefonu uvidí, kolikrát host přišel, nepřišel nebo zrušil a jaké měl štítky (alergie, VIP).

An application of the staff sends the guest the link to pay a deposit (also for bookings taken by phone), waives a deposit, sets its own length of a table reservation, seats guests without a reservation and, on the phone, sees how many times the guest came, did not come or cancelled and their tags (allergies, VIP).

Co musíte udělatNic. Nová pole a operace jsou nepovinné; duration_minutes, walk_in a deposit při založení platí jen pro channel=staff.

What you need to doNothing. The new fields and operations are optional; duration_minutes, walk_in and deposit on create apply only to channel=staff.

PřidánoAdded

  • sendReservationPaymentLink – nový odkaz na stránku rezervace hosta, kde zaplatí zálohu kartou; pošle ho na e-mail hosta a vrátí ho i pro SMS.sendReservationPaymentLink – a new link to the guest's page of the reservation where the deposit is paid by card; sent to the guest's e-mail and returned for an SMS too.
  • waiveReservationDeposit – odpuštění čekající zálohy; rezervace čekající jen na zálohu se potvrdí.waiveReservationDeposit – waives a pending deposit; a reservation waiting only for the deposit is confirmed.
  • getReservationGuest – historie hosta podle telefonu nebo e-mailu napříč provozovnami účtu.getReservationGuest – the history of a guest by phone or e-mail across the restaurants of the account.
  • createReservation: duration_minutes (vlastní délka stolu), walk_in (hosté bez rezervace – teď a hned usazení), deposit: false (bez zálohy) – jen channel=staff. updateReservation: duration_minutes.createReservation: duration_minutes (own length at a table), walk_in (guests without a reservation – now and seated at once), deposit: false (no deposit) – only channel=staff. updateReservation: duration_minutes.
Přesný výčet změn ve smlouvěExact list of contract changes 9
Nové operaceNew operations 3
Nová poleNew fields 4
  • ReservationCreate.deposit
  • ReservationCreate.duration_minutes
  • ReservationCreate.walk_in
  • ReservationUpdate.duration_minutes
Nová schémata (třídy v knihovnách)New schemas (classes in the libraries) 2
  • ReservationGuestHistory
  • ReservationPaymentLink

26.11.9

Nové funkceNew featuresZpětně kompatibilníBackward compatible

Rezervace stolů a služebReservations of tables and services

Nové operace pro rezervace: pravidla provozovny, služby k rezervaci, volné časy dne, založení, změny a stavy rezervace (potvrdit, odmítnout, zrušit, usadit, odešli, nepřišli) a stav stolů v tuto chvíli. Kapacitu hlídá server – stůl, pracovník ani místnost nejsou nikdy rezervované dvakrát. Pro rezervační platformy, weby provozoven i aplikace obsluhy.

New operations for reservations: the rules of the restaurant, bookable services, free times of a day, creating, changing and moving a reservation through its states (confirm, reject, cancel, seat, left, no-show) and the state of the tables now. The server keeps the capacity – a table, an employee or a room is never booked twice. For booking platforms, websites of restaurants and applications of the staff.

Co musíte udělatNic. Kdo chce rezervace, požádá v autorizaci o reservations:read a reservations:write. Provozovna musí mít Rezervační systém v licenci, jinak operace vrací module_not_licensed.

What you need to doNothing. To use reservations ask for reservations:read and reservations:write in the authorization. The restaurant needs the Reservation system in its licence, otherwise the operations answer module_not_licensed.

PřidánoAdded

ZměněnoChanged

  • Výdejna bez stolů (getDeviceSettings, pos.takeaway_only): kalkulace s fulfillment.type dine_in se spočítá jako pickup – s obalem a sazbou DPH s sebou – a objednávka je osobní odběr. Kiosek v takové provozovně volbu „Tady“ nenabízí.A takeaway-only restaurant (getDeviceSettings, pos.takeaway_only): a quote with fulfillment.type dine_in is priced as pickup – with packaging and the takeaway VAT rate – and the order is a pickup. A kiosk in such a restaurant does not offer the "eat in" choice.
Přesný výčet změn ve smlouvěExact list of contract changes 35
Nové operaceNew operations 14
Nové typy událostíNew event types 3
  • reservation.created
  • reservation.status_changed
  • reservation.updated
Nové kódy chybNew error codes 3
Nová oprávněníNew scopes 2
  • reservations:read – Vidět rezervace stolů a služeb s kontakty hostů, pravidla rezervací, služby, volné časy a které stoly jsou teď volné.See reservations of tables and services with the guests' contacts, the reservation rules, services, free times and which tables are free now.
  • reservations:write – Zakládat, měnit, potvrzovat, usazovat a rušit rezervace stolů a služeb.Create, change, confirm, seat and cancel reservations of tables and services.
Nová schémata (třídy v knihovnách)New schemas (classes in the libraries) 13
  • Reservation
  • ReservationAction
  • ReservationAvailability
  • ReservationCreate
  • ReservationDeposit
  • ReservationGuest
  • ReservationGuestInput
  • ReservationList
  • ReservationService
  • ReservationServiceList
  • ReservationSettings
  • ReservationUpdate
  • TableStatus

26.11.8

Nové funkceNew featuresZpětně kompatibilníBackward compatible

Výdejna bez stolůTakeaway-only restaurant

Provozovna bez stolů (třeba výdejna pizzy) si zapne, že každá účtenka a bon z pokladny je s sebou: server připočte obal produktů, i když pokladna pošle jídlo na místě. Pokladna to čte v nastavení zařízení.

A restaurant without tables (a pizza counter, say) turns on that every receipt and ticket of the register is takeaway: the server adds the packaging fee of the products, also when the register sends eating in. The register reads it in the device settings.

Co musíte udělatPokladna: čtěte getDeviceSettings → pos.takeaway_only; při true nenabízejte jídlo na místě a předvolte order_type takeaway, ať cena na displeji sedí s účtenkou (previewReceipt ji spočítá s obalem).

What you need to doRegisters: read getDeviceSettings → pos.takeaway_only; with true do not offer eating in and preselect order_type takeaway, so the price on the display matches the receipt (previewReceipt prices it with the packaging).

PřidánoAdded

  • DeviceSettings.pos.takeaway_only – výdejna bez stolů, vše s sebou s obalem.DeviceSettings.pos.takeaway_only – a takeaway-only restaurant, everything takeaway with packaging.

ZměněnoChanged

Přesný výčet změn ve smlouvěExact list of contract changes 1
Nová poleNew fields 1
  • DeviceSettings.pos.takeaway_only

26.11.7

Nové funkceNew featuresZpětně kompatibilníBackward compatible

Storno účtenky podle nastavení provozovnyReceipt cancellation by the rules of the restaurant

Provozovna si volí, kdo smí na pokladně stornovat účtenku, a tím změnit platbu: kdokoli s rolí pos (výchozí, jako v API v1), nebo jen vedoucí pokladny. Pokladna to čte v nastavení zařízení, ať se na PIN vedoucího ptá předem, a ne až po chybě.

A restaurant chooses who may cancel a receipt at the register, and so change its payment: anybody with the pos role (default, as in API v1), or only a register manager. The register reads it in the device settings, so it asks for the manager's PIN beforehand, not after an error.

Co musíte udělatPokladna: před cancelReceipt čtěte getDeviceSettings → pos.receipt_cancel_by; při manager pošlete PIN vedoucího v manager_credential, při staff ho nechtějte. Stornovat bez vedoucího teď jde i tam, kde dřív končilo manager_approval_required.

What you need to doRegisters: before cancelReceipt read getDeviceSettings → pos.receipt_cancel_by; with manager send the manager's PIN in manager_credential, with staff do not ask for it. Cancelling without a manager now works also where it used to end with manager_approval_required.

PřidánoAdded

  • DeviceSettings.pos.receipt_cancel_by (staff | manager) – kdo smí stornovat účtenku.DeviceSettings.pos.receipt_cancel_by (staff | manager) – who may cancel a receipt.

ZměněnoChanged

Přesný výčet změn ve smlouvěExact list of contract changes 1
Nová poleNew fields 1
  • DeviceSettings.pos

26.11.6

Nové funkceNew featuresZpětně kompatibilníBackward compatible

Přechod vlastních zařízení Profirestu mezi API v1 a v2Profirest's own devices moving between API v1 and v2

Profirest pouští provozovny na API v2 postupně a umí je vrátit. Vlastní aplikace pokladny, kuchyňského displeje a kurýra přitom přecházejí samy, bez nového párování: identitu z API v1 vymění za tokeny zařízení a zařízení spárované rovnou na API v2 si vyzvedne záložní identitu pro návrat. Kam mají být, říká hlavička Profirest-Api-Target a pole api_target. Účet stolu, jehož pokladna přešla na API v1, je převedený.

Profirest moves restaurants to API v2 one by one and can move them back. Its own register, kitchen display and courier apps follow on their own, without pairing again: they exchange their API v1 identity for device tokens, and a device paired straight to API v2 picks up a backup identity for the way back. Where they belong is told by the header Profirest-Api-Target and the field api_target. A tab whose register moved to API v1 is transferred.

Co musíte udělatNic – verze jen přidává. Aplikace partnerů zůstávají na API v2: api_target mají vždy null a hlavičku nedostanou. Kdo čte účty stolů, ať stav transferred bere jako uzavřený (změna skončí tab_closed). Chyba OAuth má nově vždy pole api_target (null).

What you need to doNothing – the version only adds. Partner applications stay on API v2: their api_target is always null and they do not get the header. If you read tabs, treat the status transferred as closed (a change ends with tab_closed). An OAuth error now always has the field api_target (null).

PřidánoAdded

  • Grant urn:profirest:params:oauth:grant-type:v1-device v oauthToken – jen vlastní pokladna, kuchyňský displej a kurýr Profirestu: identita API v1 za tokeny zařízení, když je provozovna na API v2.The grant urn:profirest:params:oauth:grant-type:v1-device of oauthToken – only Profirest's own register, kitchen display and courier: an API v1 identity for device tokens while the restaurant is on API v2.
  • createLegacyIdentity – záložní identita API v1 pro zařízení spárované rovnou na API v2; kódy chyb legacy_identity_unsupported a no_legacy_identity.createLegacyIdentity – a backup API v1 identity for a device paired straight to API v2; the error codes legacy_identity_unsupported and no_legacy_identity.
  • Device.api_target (v getConnection) a DeviceCheckInResult.api_target – kam má vlastní zařízení Profirestu patřit (ApiTarget), u ostatních null; totéž v hlavičce Profirest-Api-Target každé odpovědi takovému zařízení.Device.api_target (in getConnection) and DeviceCheckInResult.api_target – where Profirest's own device belongs (ApiTarget), null for others; the same in the header Profirest-Api-Target of every answer to such a device.
  • OAuthError.api_target – v1 u obnovy tokenu zařízení vráceného na API v1, jinak null.OAuthError.api_target – v1 on a refresh of a device moved back to API v1, otherwise null.
  • PosShiftCloseRequest.legacy_receipt_ids – účtenky směny vystavené v API v1; uzávěrka je vezme také.PosShiftCloseRequest.legacy_receipt_ids – receipts of the shift issued in API v1; the close takes them in as well.
  • Stav účtu stolu transferred – pokladna přešla na API v1 a účet převzala, nebo ji někdo odpojil.The tab status transferred – its register moved to API v1 and took the tab over, or the register was unpaired.

ZměněnoChanged

  • Uzávěrka pokladny (closePosShift, getPosShift) počítá otevřené účty stolů jen za uzavírané pokladny, ne za celou provozovnu.A register close (closePosShift, getPosShift) counts the open tabs of the closed registers only, not of the whole restaurant.
Přesný výčet změn ve smlouvěExact list of contract changes 12
Nové operaceNew operations 1
Nová poleNew fields 4
  • Device.api_target
  • DeviceCheckInResult.api_target
  • OAuthError.api_target
  • PosShiftCloseRequest.legacy_receipt_ids
Nové hodnoty výčtůNew enum values 1
  • Tab.status: transferred
Nové kódy chybNew error codes 2
Nová schémata (třídy v knihovnách)New schemas (classes in the libraries) 4
  • ApiTarget
  • LegacyIdentity
  • LegacyIdentityRequest
  • TokenRequestV1Device

26.11.5

Nové funkceNew featuresZpětně kompatibilníBackward compatible

Rozvozová zóna u kuchyňského bonuThe delivery zone at a kitchen ticket

Kuchyňský displej může sčítat frontu podle rozvozových zón – co pojede jedním kurýrem, se peče a balí spolu. Bon rozvozu nese zónu, do které padne adresa, spočítanou Profirestem z polohy adresy stejně jako v e-shopu a na kuchyňském displeji Profirestu.

A kitchen display can sum up the queue by delivery zones – what goes with one courier is baked and packed together. A delivery ticket carries the zone its address lies in, computed by Profirest from the location of the address the same way as in the e-shop and on the Profirest kitchen display.

Co musíte udělatNic – verze jen přidává. Kdo chce souhrn podle zón: seskupte bony podle KitchenTicket.delivery_zone a záložku nabízejte, jen když listDeliveryZones nějaké zóny vrací.

What you need to doNothing – the version only adds. For a summary by zones group the tickets by KitchenTicket.delivery_zone and offer it only when listDeliveryZones returns some zones.

PřidánoAdded

  • KitchenTicket.delivery_zone (id a name jako v listDeliveryZones) – rozvozová zóna adresy bonu s delivery; null u ostatních bonů, u adresy bez souřadnic, mimo všechny zóny a v provozovně bez zón.KitchenTicket.delivery_zone (id and name as in listDeliveryZones) – the delivery zone of the address of a ticket with delivery; null for other tickets, an address without coordinates, outside all zones and in a restaurant without zones.
Přesný výčet změn ve smlouvěExact list of contract changes 1
Nová poleNew fields 1
  • KitchenTicket.delivery_zone

26.11.4

Nové funkceNew featuresZpětně kompatibilníBackward compatible

Složení – host odebere surovinu („bez žampionů“)Composition – the guest removes an ingredient („without mushrooms“)

Produkt může mít složení: suroviny, které si host smí odebrat. Aplikace je ukáže zaškrtnuté a odškrtnuté pošle s položkou – u pizzy z dílů u každého dílu zvlášť. Cena se nemění. Kuchyň dostane u jídla (u dílu) výrazné „BEZ: ŽAMPIONY“ a sklad odebranou surovinu neodepíše. Funguje v kalkulaci a objednávce, při přidání položek k bonu, na účtence, bonu a účtu stolu pokladny i v objednávkách od stolu.

A product can have a composition: ingredients the guest may remove. An application shows them ticked and sends the unticked ones with the item – for a pizza from parts at every part. The price does not change. The kitchen gets a prominent „WITHOUT: MUSHROOMS“ at the dish (at the part) and the stock does not write the removed ingredient off. It works in a quote and an order, when adding items to a ticket, on a receipt, a ticket and a tab of the register and in orders from the table.

Co musíte udělatNic – verze jen přidává. Kdo chce odebírání nabízet: zobrazte Product.removable_ingredients a odškrtnuté posílejte v removed_ingredient_ids položky. V řádcích kalkulace, objednávky a účtu stolu počítejte s removed_ingredients (zákazníkovi „Bez: …“) a kuchyňský displej ať ukáže KitchenItem.removed_ingredients u jídla.

What you need to doNothing – the version only adds. To offer removing: show Product.removable_ingredients and send the unticked ones in removed_ingredient_ids of the item. In the lines of a quote, an order and a tab expect removed_ingredients („Without: …“ for the customer) and let a kitchen display show KitchenItem.removed_ingredients at the dish.

PřidánoAdded

  • Product.removable_ingredients a TableMenuProduct.removable_ingredients (RemovableIngredient: id, name) – složení ve všech kanálech sortimentu, [], když produkt žádné nemá.Product.removable_ingredients and TableMenuProduct.removable_ingredients (RemovableIngredient: id, name) – the composition in every channel of the catalog, [] when the product has none.
  • removed_ingredient_ids ve vstupech QuoteItemInput (i addKitchenTicketItems), SplitPartInput (u dílu), ReceiptItemInput, KitchenTicketCreate.items[], TabInput.items[], TableOrderLineInput a TableOrderApplyInput.lines[] – nejvýš 30, každé ID jednou.removed_ingredient_ids in the inputs QuoteItemInput (also addKitchenTicketItems), SplitPartInput (at the part), ReceiptItemInput, KitchenTicketCreate.items[], TabInput.items[], TableOrderLineInput and TableOrderApplyInput.lines[] – at most 30, every ID once.
  • removed_ingredients (id a název z doby objednání) v OrderLine, OrderLinePart, TabLine a TableOrderLine; u starších kalkulací, objednávek a účtů []. Nepovinné TableOrderLineState.removed_ingredients pro hlavní kasu.removed_ingredients (the ID and the name from the time of ordering) in OrderLine, OrderLinePart, TabLine and TableOrderLine; [] for older quotes, orders and tabs. The optional TableOrderLineState.removed_ingredients for the main register.
  • KitchenItem.removed_ingredients a KitchenModifier.removed_ingredients – názvy odebraných surovin u jídla a u dílu dělené pizzy (poznámka note zůstává beze změny).KitchenItem.removed_ingredients and KitchenModifier.removed_ingredients – the names of the removed ingredients at the dish and at a part of a split pizza (the note stays unchanged).
  • Kód pole ingredient_not_removable (u 422 validation_failed) – produkt takovou surovinu k odebrání nemá, nebo je v seznamu dvakrát.The field code ingredient_not_removable (with 422 validation_failed) – the product has no such removable ingredient, or it is in the list twice.
Přesný výčet změn ve smlouvěExact list of contract changes 17
Nová poleNew fields 16
  • KitchenItem.removed_ingredients
  • KitchenModifier.removed_ingredients
  • KitchenTicketCreate.items[].removed_ingredient_ids
  • OrderLine.removed_ingredients
  • OrderLinePart.removed_ingredients
  • Product.removable_ingredients
  • QuoteItemInput.removed_ingredient_ids
  • ReceiptItemInput.removed_ingredient_ids
  • SplitPartInput.removed_ingredient_ids
  • TabInput.items[].removed_ingredient_ids
  • TabLine.removed_ingredients
  • TableMenuProduct.removable_ingredients
  • TableOrderApplyInput.lines[].removed_ingredient_ids
  • TableOrderLine.removed_ingredients
  • TableOrderLineInput.removed_ingredient_ids
  • TableOrderLineState.removed_ingredients
Nová schémata (třídy v knihovnách)New schemas (classes in the libraries) 1
  • RemovableIngredient

26.11.3

Nové funkceNew featuresZpětně kompatibilníBackward compatible

Živý proud změn přes Server-Sent EventsThe live change feed over Server-Sent Events

Změny už nemusíte zjišťovat dotazováním. streamEvents posílá tytéž události jako listEvents jednou dlouhou odpovědí text/event-stream, ve stejném pořadí a se stejným kurzorem: id každé zprávy je kurzor, po výpadku se pokračuje hlavičkou Last-Event-ID a mezi proudem a dotazováním jde kdykoli přecházet. Telefon hosta u stolu dostává přes streamTableEvents upozornění, že se změnila jeho objednávka, volání, účet stolu nebo návštěva – stejně jako na hlavní kase.

You no longer have to poll for changes. streamEvents sends the same events as listEvents over one long-lived text/event-stream response, in the same order and with the same cursor: the id of every message is the cursor, after a disconnection you continue with the header Last-Event-ID and you can switch between the stream and polling at any time. A guest's phone at the table gets from streamTableEvents notices that its order, call, the tab of the table or the visit changed – the same as on the main register.

Co musíte udělatNic povinného – listEvents funguje dál beze změny. Kdo dnes dotazuje každých pár sekund, ať přejde na streamEvents, když getApiRoot vrací stream_url; bez něj (nebo při 503) se dál ptejte přes listEvents. Proud čtěte přes fetch s hlavičkou Authorization – EventSource prohlížeče hlavičky neumí.

What you need to doNothing required – listEvents keeps working unchanged. If you poll every few seconds today, switch to streamEvents when getApiRoot returns stream_url; without it (or on 503) keep polling listEvents. Read the stream with fetch and the header Authorization – the browser's EventSource cannot send headers.

PřidánoAdded

  • streamEvents – živý proud změn (Server-Sent Events): zprávy ready (StreamReady), jedna zpráva za každou událost (event: typ, data: Event, id: kurzor) a closing (StreamClosing s důvodem max_age, token_expired, token_revoked, restart, forbidden). Parametry restaurant_id a types jako u listEvents, pokračování hlavičkou Last-Event-ID nebo cursor.streamEvents – the live change feed (Server-Sent Events): messages ready (StreamReady), one message for every event (event: the type, data: the Event, id: the cursor) and closing (StreamClosing with the reason max_age, token_expired, token_revoked, restart, forbidden). Parameters restaurant_id and types as in listEvents, continuing with the header Last-Event-ID or cursor.
  • streamTableEvents – upozornění pro telefon hosta u stolu (TableGuestEvent: session, orders, calls, tab, visit_ended), stejně jako události místního API hlavní kasy.streamTableEvents – notices for a guest's phone at the table (TableGuestEvent: session, orders, calls, tab, visit_ended), the same as the events of the main register's local API.

ZměněnoChanged

  • ApiRoot.stream_url je adresa streamEvents, když proud běží (dřív vždy null); null znamená dotazovat listEvents.ApiRoot.stream_url is the address of streamEvents while the stream runs (always null before); null means poll listEvents.
Přesný výčet změn ve smlouvěExact list of contract changes 5
Nové operaceNew operations 2
  • GET/v2/events/stream Proud změn živě (Server-Sent Events)Change feed live (Server-Sent Events)
  • GET/v2/table/events Upozornění na změny pro telefon u stolu (Server-Sent Events)Live updates of the phone at the table (Server-Sent Events)
Nová schémata (třídy v knihovnách)New schemas (classes in the libraries) 3
  • StreamClosing
  • StreamReady
  • TableGuestEvent

26.11.2

Nové funkceNew featuresZpětně kompatibilníBackward compatible

Kurýr u dveří – platba kartou i hotově a nepřevzaté objednávkyThe courier at the door – card or cash payment and orders not taken over

Aplikace kurýra zapíše platbu, kterou vybral u dveří – kartou na terminálu nebo hotově, oběma směry (hotovostní objednávka zaplacená kartou i karta, která neprošla, zaplacená hotově) – a uzávěrka podle toho přesune tržbu mezi hotovostí a kartou. Bon říká, kolik zbývá vybrat a čím se zaplatilo. Když zákazník jídlo nepřevezme, kurýr to zapíše s důvodem; objednávka nejde do tržby, trasa se dokončí a provozovna ji pak odepíše, pošle znovu, nebo označí jako doručenou.

A courier application records the payment taken at the door – by card on the terminal or in cash, both ways (a cash order paid by card and a card that failed paid in cash) – and the shift close moves the takings between cash and card accordingly. A ticket tells how much is left to collect and how it was paid. When the customer does not take the food over, the courier records it with the reason; the order does not go into the takings, the route is completed and the restaurant then writes it off, sends it out again or marks it delivered.

Co musíte udělatNic povinného – verze jen přidává. Počítejte s novou hodnotou not_delivered v KitchenTicket.status, Order.status a v události kitchen.ticket_updated; neznámý stav ukažte obecně. Kurýrní aplikace nabízí kartu jen u bonu s nenulovým amount_due.

What you need to doNothing required – the version only adds. Expect the new value not_delivered in KitchenTicket.status, Order.status and the event kitchen.ticket_updated; show an unknown status generically. A courier application offers a card only for a ticket with a non-zero amount_due.

PřidánoAdded

  • handoverTicketPayment – platba vybraná kurýrem u dveří (HandoverPayment: method card/cash, amount včetně tip, gateway_payment_id terminálu, card_brand, card_last4, paid_at). Kódy chyb already_paid (s Problem.paid_by), payment_method_not_changeable a amount_mismatch.handoverTicketPayment – the payment the courier took at the door (HandoverPayment: method card/cash, amount including tip, the terminal's gateway_payment_id, card_brand, card_last4, paid_at). Error codes already_paid (with Problem.paid_by), payment_method_not_changeable and amount_mismatch.
  • markTicketNotDelivered – nepřevzatá objednávka s důvodem (NotDeliveredReport: reason, note, attempted_at, location s přesností, call_attempts). Kódy chyb note_required a ticket_already_delivered.markTicketNotDelivered – an order not taken over, with the reason (NotDeliveredReport: reason, note, attempted_at, location with its accuracy, call_attempts). Error codes note_required and ticket_already_delivered.
  • KitchenTicket.amount_due (kolik zbývá vybrat), KitchenTicket.paid_by (PaidBy), KitchenTicket.not_delivered (NotDeliveredInfo) a u zákazníka bonu not_delivered_count a last_not_delivered_at.KitchenTicket.amount_due (what is left to collect), KitchenTicket.paid_by (PaidBy), KitchenTicket.not_delivered (NotDeliveredInfo), and not_delivered_count and last_not_delivered_at at the customer of a ticket.
  • Stav not_delivered v KitchenTicket.status, Order.status a EventKitchenTicketData.status.The status not_delivered in KitchenTicket.status, Order.status and EventKitchenTicketData.status.
  • KitchenTicketCancel.write_off – storno bez vrácení surovin na sklad (odpis nepřevzaté objednávky).KitchenTicketCancel.write_off – a cancellation without returning stock (writing off an order not taken over).
  • ShiftTotals.not_delivered – počet a hodnota nepřevzatých objednávek v uzávěrce kuchyně a kurýra.ShiftTotals.not_delivered – the number and the value of orders not taken over in the close of the kitchen and of a courier.

ZměněnoChanged

Přesný výčet změn ve smlouvěExact list of contract changes 25
Nové operaceNew operations 2
Nová poleNew fields 8
  • KitchenTicket.amount_due
  • KitchenTicket.customer.last_not_delivered_at
  • KitchenTicket.customer.not_delivered_count
  • KitchenTicket.not_delivered
  • KitchenTicket.paid_by
  • KitchenTicketCancel.write_off
  • Problem.paid_by
  • ShiftTotals.not_delivered
Nové hodnoty výčtůNew enum values 3
  • EventKitchenTicketData.status: not_delivered
  • KitchenTicket.status: not_delivered
  • Order.status: not_delivered
Nové kódy chybNew error codes 5
Nová schémata (třídy v knihovnách)New schemas (classes in the libraries) 7
  • DeliveryAttemptLocation
  • DeliveryAttemptLocationInput
  • HandoverPayment
  • NotDeliveredInfo
  • NotDeliveredReason
  • NotDeliveredReport
  • PaidBy

26.11.1

Nové funkceNew featuresZpětně kompatibilníBackward compatible

Ceny a účtenka na kuchyňském bonu, půl porce pro personálPrices and the receipt on a kitchen ticket, a half portion for the staff

Kuchyňský displej a kurýr vytisknou účtenku rozvozu přímo z bonu: bon nese účtenku spočítanou serverem stejně jako kopie účtenky v administraci (položky, slevy na účet, doprava, zaokrouhlení, celkem, k úhradě, rozpis DPH, nadpis a číslo dokladu) a každá položka cenu za kus, obal, slevu, příznak dárku z akce, sazbu DPH a velikost jako štítek. Aplikace personálu objednají půl porce – v kalkulaci, objednávce i při přidání položek k bonu.

The kitchen display and the courier print the delivery receipt straight from the ticket: a ticket carries the receipt computed by the server the same way as the copy of the receipt in the administration (items, discounts of the whole receipt, delivery, rounding, total, amount to pay, VAT by rates, the title and the number of the document), and every item its price per piece, packaging, discount, the mark of a gift of a promotion, the VAT rate and the size as a label. Staff applications order a half portion – in a quote, an order and when adding items to a ticket.

Co musíte udělatNic – verze jen přidává. Kuchyňský displej může tisknout účtenku z KitchenTicket.receipt místo vlastního výpočtu; půlku objednáte přes QuoteItemInput.variant half u produktu s Product.half_price.

What you need to doNothing – the version only adds. A kitchen display can print the receipt from KitchenTicket.receipt instead of computing it; order a half with QuoteItemInput.variant half for a product with Product.half_price.

PřidánoAdded

  • KitchenTicket.receipt (KitchenTicketReceipt) – účtenka bonu: items, discounts (záporně, s názvem akce), delivery, rounding, adjustment, total, to_pay, vat po sazbách a document (nadpis, číslo dokladu, zjednodušený daňový doklad).KitchenTicket.receipt (KitchenTicketReceipt) – the receipt of a ticket: items, discounts (negative, with the name of the promotion), delivery, rounding, adjustment, total, to_pay, vat by rates and document (the title, the number of the document, simplified tax document).
  • KitchenItem a KitchenModifier: unit_price (za kus po slevě), packaging_price, discount (na kus, záporně), gift (dárek z akce), vat_rate a size (KitchenItemSize – velikost a název jídla bez ní).KitchenItem and KitchenModifier: unit_price (per piece after the discount), packaging_price, discount (per piece, negative), gift (a gift of a promotion), vat_rate and size (KitchenItemSize – the size and the name of the dish without it).
  • QuoteItemInput.variant (full | half) – půl porce za Product.half_price v sortimentu kitchen a pos; jinde 422 validation_failed s kódem not_allowed. Platí pro createQuote i addKitchenTicketItems; v kuchyni je půlka KitchenItem.kind half.QuoteItemInput.variant (full | half) – a half portion at Product.half_price in the catalogs kitchen and pos; elsewhere 422 validation_failed with the code not_allowed. It applies to createQuote and addKitchenTicketItems; in the kitchen a half is KitchenItem.kind half.
  • Product.half_price (kanály kitchen a pos, ve web null) a OrderLine.variant.Product.half_price (the channels kitchen and pos, null in web) and OrderLine.variant.
  • AppVersion.sha256 a AppVersion.size – otisk a velikost souboru k ověření staženého instalátoru; hodnota kitchen_windows v AppVersion.app (kuchyňský displej pro Windows).AppVersion.sha256 and AppVersion.size – the fingerprint and the size of the file to check a downloaded installer; the value kitchen_windows in AppVersion.app (the kitchen display for Windows).
Přesný výčet změn ve smlouvěExact list of contract changes 21
Nová poleNew fields 18
  • AppVersion.sha256
  • AppVersion.size
  • KitchenItem.discount
  • KitchenItem.gift
  • KitchenItem.packaging_price
  • KitchenItem.size
  • KitchenItem.unit_price
  • KitchenItem.vat_rate
  • KitchenModifier.discount
  • KitchenModifier.gift
  • KitchenModifier.packaging_price
  • KitchenModifier.size
  • KitchenModifier.unit_price
  • KitchenModifier.vat_rate
  • KitchenTicket.receipt
  • OrderLine.variant
  • Product.half_price
  • QuoteItemInput.variant
Nové hodnoty výčtůNew enum values 1
  • AppVersion.app: kitchen_windows
Nová schémata (třídy v knihovnách)New schemas (classes in the libraries) 2
  • KitchenItemSize
  • KitchenTicketReceipt

26.10.9

Nové funkceNew featuresZpětně kompatibilníBackward compatible

Pizza z půlek a čtvrtek, vlastní pizza a víc porcí přílohyPizza from halves and quarters, custom pizza and more portions of an add-on

Aplikace hostů objednají pizzu ze dvou půlek nebo čtyř čtvrtek různých druhů – každý díl se svými přílohami, jeden obal za pizzu – a produkty, které si zákazník skládá ze skupin voleb: vlastní pizzu, povinný výběr těsta nebo přílohy, ingredience s mezemi a s porcemi v ceně a prémiové volby, které zvednou cenu základu. Příloha může mít víc porcí (dvojitý sýr). Kalkulace vrací úplný rozpis dílů a voleb a kuchyň vidí díly pizzy s přísadami u svého dílu.

Guest applications can order a pizza from two halves or four quarters of different kinds – each part with its own add-ons, one packaging fee per pizza – and products the customer composes from groups of options: a custom pizza, a required choice of dough or side, toppings with limits and with portions included in the price, and premium options that raise the base price. An add-on can have more portions (double cheese). The quote returns a full breakdown of parts and options, and the kitchen sees the parts of a pizza with the toppings at their part.

Co musíte udělatNic – verze jen přidává. Kdo chce půlky nebo vlastní pizzu nabízet: produkty s Product.split skládejte do položky type split s parts; u produktu s Product.option_groups posílejte options místo add_ons. V řádcích kalkulace a objednávky počítejte s type split, parts, options a base_unit_price.

What you need to doNothing – the version only adds. To offer halves or a custom pizza: put products with Product.split into an item of type split with parts; for a product with Product.option_groups send options instead of add_ons. In the lines of a quote and an order expect type split, parts, options and base_unit_price.

PřidánoAdded

  • QuoteItemInput.type split s parts (2 půlky nebo 4 čtvrtky, SplitPartInput s přílohami dílu) a Product.split (ProductSplit – ceny půlky a čtvrtky). Díly ze stejné kategorie a velikosti, obal nejvyšší z dílů.QuoteItemInput.type split with parts (2 halves or 4 quarters, SplitPartInput with the add-ons of the part) and Product.split (ProductSplit – prices of a half and a quarter). Parts from the same category and of the same size, the highest packaging of the parts.
  • Product.option_groups (ProductOptionGroup, ProductOption) a QuoteItemInput.options (OptionInput) – meze porcí skupiny, porce jedné volby, N nejlevnějších porcí v ceně a prémiová cena základu (ProductOption.base_price). Jen kanál web; produkt se skupinami nemá add_ons.Product.option_groups (ProductOptionGroup, ProductOption) and QuoteItemInput.options (OptionInput) – limits of portions of a group, portions of one option, the N cheapest portions included in the price and a premium base price (ProductOption.base_price). Only the web channel; a product with groups has no add_ons.
  • AddOnInput.quantity – víc porcí jedné přílohy; v řádku OrderLine.add_ons[].quantity a OrderLinePart.add_ons[].quantity.AddOnInput.quantity – more portions of one add-on; in the line OrderLine.add_ons[].quantity and OrderLinePart.add_ons[].quantity.
  • OrderLine.base_unit_price, options (OrderLineOption s porcemi v ceně a důvodem reason) a parts (OrderLinePart); OrderLine.type split.OrderLine.base_unit_price, options (OrderLineOption with included portions and a reason) and parts (OrderLinePart); OrderLine.type split.
  • KitchenItem.part a KitchenModifier.part – ke kterému dílu dělené pizzy řádek patří.KitchenItem.part and KitchenModifier.part – which part of a split pizza the line belongs to.
  • Kódy polí option_not_in_group, option_group_min, option_group_max, split_category_mismatch a split_size_mismatch (u 422 validation_failed).Field codes option_not_in_group, option_group_min, option_group_max, split_category_mismatch and split_size_mismatch (with 422 validation_failed).

ZměněnoChanged

  • QuoteItemInput.product_id je nepovinné – u split nepatří, u product zůstává povinné (chybějící vrátí 422 validation_failed s kódem required).QuoteItemInput.product_id is optional – it does not belong to split and stays required for product (a missing one answers 422 validation_failed with the code required).
Přesný výčet změn ve smlouvěExact list of contract changes 21
Nová poleNew fields 11
  • AddOnInput.quantity
  • KitchenItem.part
  • KitchenModifier.part
  • OrderLine.add_ons[].quantity
  • OrderLine.base_unit_price
  • OrderLine.options
  • OrderLine.parts
  • Product.option_groups
  • Product.split
  • QuoteItemInput.options
  • QuoteItemInput.parts
Nové hodnoty výčtůNew enum values 2
  • OrderLine.type: split
  • QuoteItemInput.type: split
Už nejsou povinnéNo longer required 1
  • QuoteItemInput.product_id
Nová schémata (třídy v knihovnách)New schemas (classes in the libraries) 7
  • OptionInput
  • OrderLineOption
  • OrderLinePart
  • ProductOption
  • ProductOptionGroup
  • ProductSplit
  • SplitPartInput

26.10.8

Nové funkceNew featuresZpětně kompatibilníBackward compatibledříve 2.5.0formerly 2.5.0

Akce 2.0 – slevy na položky, věrnostní karta, dárky, sady a jednorázové kódyPromotions 2.0 – item discounts, loyalty cards, gifts, sets and single-use codes

Akce provozoven umí víc: slevu na vybrané kategorie a produkty, každý N-tý kus se slevou (2+1 zdarma) i věrnostní kartu napříč objednávkami (každá 7. pizza zdarma), dárek k objednávce a pevnou cenu za sadu. Platí i podle dne v týdnu a denní doby (happy hour), jen pro registrované zákazníky nebo na první objednávku a s limitem na zákazníka. Slevové kódy mohou být i jednorázové. Sleva na položky přichází jako sleva řádku v jeho sazbě DPH, dárek jako řádek s plnou cenou a slevou na ni.

Promotions of restaurants can do more: a discount on chosen categories and products, every N-th piece at a discount (2+1 free) and a loyalty card across orders (every 7th pizza free), a gift with the order and a fixed price for a set. They can apply by the day of the week and the time of day (happy hour), only for registered customers or the first order, and with a limit per customer. Promo codes can also be single-use. A discount of items comes as a discount of a line in its VAT rate, a gift as a line with its full price and a discount of it.

Co musíte udělatZobrazte řádky s gift_of jako dárek, nedovolte je měnit a do další kalkulace je neposílejte. Počítejte se slevami applies_to: line (s line_id) a s novými hodnotami effect.type. Pro akce pro registrované a věrnostní karty posílejte v kalkulaci customer_id zákazníka s ověřeným telefonem. Jinak nic – verze jen přidává.

What you need to doShow lines with gift_of as a gift, do not let the customer change them and do not send them in the next quote. Expect discounts with applies_to: line (with line_id) and new values of effect.type. For promotions for registered customers and loyalty cards send customer_id of a customer with a verified phone in the quote. Otherwise nothing – the version only adds.

PřidánoAdded

  • PromotionEffect.type nth_item (každý N-tý kus, s loyalty věrnostní karta napříč objednávkami), gift (dárek) a bundle (pevná cena sady) s poli nth_item, gift a bundle.PromotionEffect.type nth_item (every N-th piece, with loyalty a loyalty card across orders), gift and bundle (a fixed price for a set) with the fields nth_item, gift and bundle.
  • Podmínky akce PromotionConditions.min_items, scope (kategorie a produkty), days, time_windows (happy hour), customer (any, registered, first_order) a max_per_customer.Promotion conditions PromotionConditions.min_items, scope (categories and products), days, time_windows (happy hour), customer (any, registered, first_order) and max_per_customer.
  • Promotion.code_type – sdílený (shared) nebo jednorázový kód (single_use); jednorázové kódy se posílají v QuoteRequest.promo_codes stejně jako sdílené.Promotion.code_type – a shared (shared) or single-use code (single_use); single-use codes go in QuoteRequest.promo_codes like shared ones.
  • Discount.applies_to line – sleva na položky jednoho řádku (line_id) v jeho sazbě DPH, z ceny produktu (přílohy a obal se platí).Discount.applies_to line – a discount of the items of one line (line_id) in its VAT rate, from the price of the product (add-ons and packaging are paid).
  • OrderLine.gift_of – řádek dárku, který přidala akce; v kalkulaci i objednávce.OrderLine.gift_of – a gift line added by a promotion; in quotes and orders.

ZměněnoChanged

  • Čas akce (platnost, dny, denní doba) se posuzuje v okamžiku odeslání objednávky (vytvoření kalkulace), ne podle času doručení nebo odběru; listPromotions s at filtruje jen platnost.The time of a promotion (validity, days, time of day) is judged at the moment the order is sent (the quote is created), not by the time of delivery or pickup; listPromotions with at filters the validity only.
  • Podrobnější detail u promo_code_not_applicable (kolik chybí, počet kusů, část sady, den a čas, jen registrovaní nebo první objednávka); promo_code_used_up i pro použitý jednorázový kód a vyčerpaný limit zákazníka; promotion_changed i když jednorázový kód mezitím použila jiná objednávka nebo zákazník dosáhl limitu.A more detailed detail of promo_code_not_applicable (how much is missing, the number of items, a part of a set, the day and time, registered customers or the first order only); promo_code_used_up also for a used single-use code and a reached limit per customer; promotion_changed also when another order used the single-use code meanwhile or the customer reached the limit.
  • Poplatky a slevy celé objednávky se dělí do sazeb DPH podle položek po slevách na řádky; Totals.items zahrnuje řádky dárků s plnou cenou.Charges and discounts of the whole order are split over the VAT rates by the items after the discounts of lines; Totals.items includes gift lines at their full price.
Přesný výčet změn ve smlouvěExact list of contract changes 19
Nová poleNew fields 11
  • OrderLine.gift_of
  • Promotion.code_type
  • PromotionConditions.customer
  • PromotionConditions.days
  • PromotionConditions.max_per_customer
  • PromotionConditions.min_items
  • PromotionConditions.scope
  • PromotionConditions.time_windows
  • PromotionEffect.bundle
  • PromotionEffect.gift
  • PromotionEffect.nth_item
Nové hodnoty výčtůNew enum values 2
  • Discount.applies_to: line
  • PromotionEffect.type: bundle, gift, nth_item
Nová schémata (třídy v knihovnách)New schemas (classes in the libraries) 6
  • PromotionBundle
  • PromotionBundleGroup
  • PromotionGift
  • PromotionNthItem
  • PromotionScope
  • PromotionTimeWindow

26.10.7

Nové funkceNew featuresZpětně kompatibilníBackward compatibledříve 2.4.0formerly 2.4.0

Docházkový terminál – rozpis směn a žádosti o volnoAttendance terminal – shift schedule and time-off requests

Zaměstnanec přihlášený na docházkovém terminálu uvidí svůj rozpis směn a volna na příštích až 31 dní, může požádat o volno a čekající žádost vzít zpět. Provozovna si v administraci nastaví, jestli a jak žádosti přijímá.

An employee signed in on the attendance terminal sees their shifts and days off for up to 31 days ahead, can request time off and withdraw a pending request. The restaurant decides in the administration whether and how it takes requests.

Co musíte udělatNic – verze jen přidává. Oprávnění se nezměnila, spárované terminály se nepárují znovu.

What you need to doNothing – the version only adds. Scopes are unchanged; paired terminals do not need to pair again.

PřidánoAdded

ZměněnoChanged

  • Čtení stačí s oprávněním attendance:read, žádost a její zpětvzetí s attendance:punch – stejně jako dosud píchnutí.Reading needs attendance:read, requesting and withdrawing attendance:punch – the same as punches so far.
Přesný výčet změn ve smlouvěExact list of contract changes 17
Nové operaceNew operations 4
Nová poleNew fields 1
  • AttendanceTerminal.absence_requests
Nové kódy chybNew error codes 4
Nová schémata (třídy v knihovnách)New schemas (classes in the libraries) 8
  • AbsenceRequest
  • AbsenceRequestCreate
  • AbsenceRequestList
  • AbsenceRequestRules
  • AbsenceType
  • AttendanceSchedule
  • AttendanceScheduleItem
  • AttendanceSectionRef

26.10.6

Nové funkceNew featuresZpětně kompatibilníBackward compatibledříve 2.3.0formerly 2.3.0

Stav a chyby vlastních zařízení, logy na vyžádáníStatus and errors of own devices, logs on request

Vlastní zařízení Profirestu hlásí každou minutu svůj stav a chyby hned, když nastanou. Celý log zůstává na zařízení a server si ho vyžádá, jen když ho podpora potřebuje – nahraje se po částech s jednorázovým tokenem. Týká se jen aplikací Profirestu; partnerských integrací se verze nedotkne.

Profirest's own devices report their status every minute and errors as soon as they happen. The full log stays on the device and the server asks for it only when support needs it – it is uploaded in parts with a one-time token. Only Profirest's own apps are concerned; partner integrations are not affected.

Co musíte udělatPartnerské integrace nic. Aplikace, které posílají řádky logu přes createDeviceLogs, mají přejít na checkInDevice a reportDeviceError.

What you need to doPartner integrations: nothing. Apps that send log lines with createDeviceLogs should move to checkInDevice and reportDeviceError.

PřidánoAdded

ZastaraléDeprecated

  • createDeviceLogs – řádky logu už nejdou do databáze po jednom. Operace dál funguje pro starší aplikace; nahrazují ji reportDeviceError a soubory na vyžádání.createDeviceLogs – log lines no longer go to the database one by one. The operation still works for older apps; reportDeviceError and logs on request replace it.

DokumentaceDocumentation

  • Doplněno 28. 10. 2026 (tvar beze změny): strop 200 MB na jedno nahrávání a 500 MB na jednu žádost (413), plný disk serveru 503, souběžné požadavky na totéž nahrávání 409 conflict, příkaz upload_logs přijde znovu se stejnými tokeny, kontext chyby nejvýš 16 kB a 1 MB za den na zařízení.Added on 28 October 2026 (shape unchanged): at most 200 MB per upload and 500 MB per request (413), a full server disk 503, concurrent requests on the same upload 409 conflict, the upload_logs command comes again with the same tokens, error context at most 16 kB and 1 MB a day per device.
Přesný výčet změn ve smlouvěExact list of contract changes 23
Nové operaceNew operations 6
Nové kódy chybNew error codes 2
  • upload_closed Nahrávání logu je dokončené nebo prošléThe log upload is finished or expired
  • upload_incomplete Části nahrávání logu chybíParts of the log upload are missing
Nové způsoby přihlášeníNew security schemes 1
  • logUpload
Označené jako zastaraléMarked deprecated 1
Nová schémata (třídy v knihovnách)New schemas (classes in the libraries) 13
  • DeviceCheckIn
  • DeviceCheckInResult
  • DeviceCommand
  • DeviceCommandResult
  • DeviceErrorCreate
  • DeviceErrorResult
  • DevicePeer
  • DeviceQueue
  • LogUploadAbort
  • LogUploadCommand
  • LogUploadComplete
  • LogUploadStatus
  • LogUploadTarget

26.10.5

Nové funkceNew featuresZpětně kompatibilníBackward compatibledříve 2.2.0formerly 2.2.0

Expresní doručeníExpress delivery

Zákazník si rozvoz „co nejdřív“ může za příplatek zrychlit. Cenu určuje rozvozová zóna, expres má přednost v kuchyni i u kurýra, ale bez slíbeného času. Nový přehled ukazuje poplatky za dopravu, doplatek do minima a expres.

The customer can speed up an "as soon as possible" delivery for a fee. The delivery zone sets the price; express has priority in the kitchen and with the courier, but no promised time. A new report shows the delivery fees, minimum-order surcharges and express fees.

Co musíte udělatNic, pokud expres nechcete nabízet. Kdo čte doklady prodeje (listSales, getSale), počítejte s novými hodnotami SaleLine.type – neznámou hodnotu berte jako jinou položku, jak říkají pravidla pro každého klienta.

What you need to doNothing unless you want to offer express. If you read sales documents (listSales, getSale), expect the new values of SaleLine.type – treat an unknown value as another line, as the rules for every client say.

PřidánoAdded

  • FulfillmentInput.speed a Fulfillment.speed – standard nebo express; expres jen u rozvozu „co nejdřív“.FulfillmentInput.speed and Fulfillment.speed – standard or express; express only for an "as soon as possible" delivery.
  • Příplatek zóny DeliveryZone.express_fee, DeliveryInfo.express_fee a AddressSuggestion.zone.express_fee – null znamená, že se v zóně expres nenabízí.The zone's fee DeliveryZone.express_fee, DeliveryInfo.express_fee and AddressSuggestion.zone.express_fee – null means express is not offered in the zone.
  • Poplatek Charge.type = express_delivery („Expresní doručení“, DPH jako vedlejší výdaj) a kód chyby express_unavailable.The charge Charge.type = express_delivery ("Express delivery", VAT as an incidental cost) and the error code express_unavailable.
  • V kuchyni KitchenTicket.express (štítek EXPRES) a KitchenItem.charge / KitchenModifier.charge – řádek je poplatek, ne jídlo.In the kitchen KitchenTicket.express (the EXPRESS label) and KitchenItem.charge / KitchenModifier.charge – the line is a fee, not food.
  • Přehled poplatků getChargesReport (oprávnění reports:read) – doprava, doplatek do minima a expres, kolikrát a za kolik, stejně jako Statistiky v administraci.The charges report getChargesReport (scope reports:read) – delivery, minimum-order surcharge and express, how many times and for how much, the same as Statistics in the administration.

ZměněnoChanged

  • Řádky dokladu prodeje za doplatek do minima a za expres mají vlastní SaleLine.type – minimum_order_surcharge a express_delivery (doplatek dřív přicházel jako product).Sales document lines for the minimum-order surcharge and express have their own SaleLine.type – minimum_order_surcharge and express_delivery (the surcharge used to come as product).
Přesný výčet změn ve smlouvěExact list of contract changes 14
Nové operaceNew operations 1
Nová poleNew fields 8
  • AddressSuggestion.zone.express_fee
  • DeliveryInfo.express_fee
  • DeliveryZone.express_fee
  • Fulfillment.speed
  • FulfillmentInput.speed
  • KitchenItem.charge
  • KitchenModifier.charge
  • KitchenTicket.express
Nové hodnoty výčtůNew enum values 2
  • Charge.type: express_delivery
  • SaleLine.type: express_delivery, minimum_order_surcharge
Nové kódy chybNew error codes 1
Nová schémata (třídy v knihovnách)New schemas (classes in the libraries) 2
  • ChargesReport
  • ChargesReportRow

26.10.4

Nové funkceNew featuresZpětně kompatibilníBackward compatibledříve 2.1.0formerly 2.1.0

Akce a slevové kódy, kiosek, přehledy tržeb, objednávání od stoluPromotions and promo codes, kiosk, sales reports, ordering from the table

Největší rozšíření od vydání v2: akce a slevové kódy v kalkulaci a objednávce, samoobslužný kiosek a jídlo na místě, přehledy tržeb, doklady prodeje a účetní export pro partnerské systémy, zápis otevírací doby a porcí, přesuny mezi účty stolů a uzávěrka za víc zařízení a objednávání od stolu přes QR kód.

The largest extension since v2 was released: promotions and promo codes in quotes and orders, a self-service kiosk and eating in, sales reports, sales documents and accounting export for partner systems, writing opening hours and portions, moving lines between tabs and closing several devices at once, and ordering from the table by a QR code.

Co musíte udělatNic – verze jen přidává. Kdo chce nové funkce, požádá o nová oprávnění (reports:read, accounting:read, availability:write, opening_hours:write) v nové autorizaci a majitel restaurace je potvrdí; stávající připojení je samo nedostane.

What you need to doNothing – the version only adds. To use the new features, ask for the new scopes (reports:read, accounting:read, availability:write, opening_hours:write) in a new authorization and the restaurant owner confirms them; an existing connection does not get them by itself.

PřidánoAdded

  • Akce a slevové kódy: listPromotions (catalog:read), QuoteRequest.promo_codes, slevy v kalkulaci a objednávce s Discount.promotion, applies_to a line_id, kódy chyb promo_code_invalid, promo_code_expired, promo_code_not_applicable, promo_code_used_up, promo_code_attempts_exceeded a promotion_changed, událost promotions.changed.Promotions and promo codes: listPromotions (catalog:read), QuoteRequest.promo_codes, discounts in quotes and orders with Discount.promotion, applies_to and line_id, error codes promo_code_invalid, promo_code_expired, promo_code_not_applicable, promo_code_used_up, promo_code_attempts_exceeded and promotion_changed, the event promotions.changed.
  • Kiosek: kanál Connection.client.order_channel = kiosk, jídlo na místě fulfillment.type = dine_in (bez obalu, DPH „na místě“), objednávka kiosku bez kontaktu na zákazníka a platba kartou na terminálu kiosku.Kiosk: the channel Connection.client.order_channel = kiosk, eating in fulfillment.type = dine_in (no packaging, VAT for eating in), kiosk orders without customer contact and card payment at the kiosk's terminal.
  • Přehledy a účetnictví (reports:read): getSalesSummary, getProductSales, getTipsReport, getVatReport, doklady prodeje ze všech zdrojů listSales a getSale, uzávěrky listShiftCloses a getShiftClose, události sale.created, sale.cancelled a shift.closed; účetní export pro Pohodu a Money getAccountingExport (accounting:read).Reports and accounting (reports:read): getSalesSummary, getProductSales, getTipsReport, getVatReport, sales documents from all sources listSales and getSale, shift closes listShiftCloses and getShiftClose, the events sale.created, sale.cancelled and shift.closed; the accounting export for Pohoda and Money getAccountingExport (accounting:read).
  • Zápis z partnerských systémů: otevírací doba setOpeningHours (opening_hours:write), zbývající porce a „vyprodáno“ setProductAvailability (availability:write, kód portion_tracking_disabled).Writing from partner systems: opening hours setOpeningHours (opening_hours:write), remaining portions and "sold out" setProductAvailability (availability:write, code portion_tracking_disabled).
  • Sortiment: Category.color, Category.icon, Product.kitchen_name, PosProductInfo.ticket (kuchyň nebo bar) a velikosti Product.size – každá velikost je samostatný produkt, klient je seskupí podle group_id.Catalog: Category.color, Category.icon, Product.kitchen_name, PosProductInfo.ticket (kitchen or bar) and sizes Product.size – each size is its own product; the client groups them by group_id.
  • Kuchyň: KitchenTicket.platform, KitchenItem.category, KitchenItem.from_daily_menu, bon stolu na čas KitchenTicketCreate.preorder_at a události kitchen.ticket_created a kitchen.ticket_updated i pro objednávky mimo API.Kitchen: KitchenTicket.platform, KitchenItem.category, KitchenItem.from_daily_menu, a table ticket for later KitchenTicketCreate.preorder_at and the events kitchen.ticket_created and kitchen.ticket_updated also for orders outside the API.
  • Pokladna: přesun položek mezi účty moveTabLines, důvod u closeTab, uzávěrka za víc zařízení a odvod číšníka (getPosShift s devices, closePosShift s device_ids), vklad, výběr a výdaj createCashMovement a pokladní kniha getCashBook, listStaff s ETag a 304.Register: moving lines between tabs moveTabLines, a reason at closeTab, closing several devices and a waiter's hand-in (getPosShift with devices, closePosShift with device_ids), deposits, withdrawals and expenses createCashMovement and the cash book getCashBook, listStaff with ETag and 304.
  • Objednávání od stolu: skupina operací Table ordering pro telefon hosta s vlastním tokenem pfg_ (způsob přihlášení tableGuest) a spojení hlavní kasy s cloudem (table:sync, jen aplikace Profirestu), DeviceSettings.table_ordering, kód stolu pro QR Room.tables[].code, událost table.inbox_received.Ordering from the table: the Table ordering group for the guest's phone with its own pfg_ token (security scheme tableGuest) and the main register's link to the cloud (table:sync, Profirest's apps only), DeviceSettings.table_ordering, the table's QR code Room.tables[].code, the event table.inbox_received.

ZměněnoChanged

  • listEvents: parametr types přijímá i skupinu order.* jako proud přes WebSocket (dřív 422).listEvents: the types parameter also takes the group order.*, like the WebSocket stream (422 before).
  • OrderCreate.customer a OrderCustomerInput.phone už nejsou ve schématu povinné – vynechat je smí jen kiosek; ostatní dál dostanou 422 required, rozvoz vždy.OrderCreate.customer and OrderCustomerInput.phone are no longer required by the schema – only a kiosk may leave them out; others still get 422 required, delivery always.
  • closeTab: řádky už poslané do kuchyně se zapíšou jako storna.closeTab: lines already sent to the kitchen are recorded as cancellations.
Přesný výčet změn ve smlouvěExact list of contract changes 170
Nové operaceNew operations 31
Nová poleNew fields 21
  • Category.color
  • Category.icon
  • DeviceSettings.table_ordering
  • Discount.applies_to
  • Discount.line_id
  • Discount.promotion
  • KitchenItem.category
  • KitchenItem.from_daily_menu
  • KitchenTicket.platform
  • KitchenTicketCreate.preorder_at
  • PosProductInfo.ticket
  • PosShiftCloseRequest.device_ids
  • PosShiftCloseRequest.manager_credential
  • PosShiftSummary.by_device
  • PosShiftSummary.by_employee
  • PosShiftSummary.cash_movements
  • PosShiftSummary.device_ids
  • Product.kitchen_name
  • Product.size
  • QuoteRequest.promo_codes
  • Room.tables[].code
Nové hodnoty výčtůNew enum values 4
  • Connection.client.order_channel: kiosk
  • Fulfillment.type: dine_in
  • FulfillmentType: dine_in
  • TimeSlots.type: dine_in
Nové typy událostíNew event types 6
  • kitchen.ticket_created
  • promotions.changed
  • sale.cancelled
  • sale.created
  • shift.closed
  • table.inbox_received
Nové kódy chybNew error codes 23
Nová oprávněníNew scopes 5
  • accounting:read – Stahovat účetní exporty tržeb a uzávěrek (Pohoda, Money) včetně odběratelů na fakturách.Download accounting exports of takings and shift closes (Pohoda, Money), including buyers on invoices.
  • availability:write – Měnit zbývající porce produktů a označovat produkty jako vyprodané.Change how many portions of products are left and mark products sold out.
  • opening_hours:write – Měnit běžnou týdenní otevírací dobu provozovny.Change the regular weekly opening hours of the restaurant.
  • reports:read – Vidět uzávěrky, doklady prodeje ze všech zdrojů, přehledy tržeb (po dnech, platbách, produktech, zaměstnancích, dýška) a pokladní knihu – se jmény zaměstnanců, bez kontaktů zákazníků.See shift closes, sales documents of all sources, reports of takings (by day, payment, product, employee, tips) and the cash book – with names of employees, without customer contacts.
  • table:sync – Přebírat žádosti hostů, kteří objednávají od stolu, a zrcadlit stoly hlavní kasy do cloudu.Take over requests of guests ordering from the table and mirror the tables of the main register to the cloud.
Nové způsoby přihlášeníNew security schemes 1
  • tableGuest
Nové parametryNew parameters 3
Nově zdokumentované odpovědiNewly documented responses 1
Už nejsou povinnéNo longer required 2
  • OrderCreate.customer
  • OrderCustomerInput.phone
Nová schémata (třídy v knihovnách)New schemas (classes in the libraries) 73
  • CashBook
  • CashBookDay
  • CashBookEntry
  • CashMovement
  • CashMovementInput
  • DiscountPromotion
  • EventTableInboxData
  • OpeningHoursInput
  • PosShiftCashMovements
  • PosShiftDevicePart
  • PosShiftEmployeePart
  • ProductAvailability
  • ProductAvailabilityInput
  • ProductSales
  • ProductSalesRow
  • ProductSize
  • PromoCode
  • PromoCodeInput
  • Promotion
  • PromotionConditions
  • PromotionEffect
  • PromotionList
  • Sale
  • SaleEet
  • SaleLine
  • SalePage
  • SalesSummary
  • SalesSummaryRow
  • ShiftClose
  • ShiftClosePage
  • ShiftCloseTotals
  • TabMove
  • TabMoveInput
  • TableCall
  • TableCallCreate
  • TableCallState
  • TableDevice
  • TableDeviceState
  • TableHeartbeat
  • TableHeartbeatInput
  • TableInboxCompletion
  • TableInboxItem
  • TableInboxPage
  • TableInboxResultInput
  • TableJoinInput
  • TableMenu
  • TableMenuCategory
  • TableMenuProduct
  • TableOrder
  • TableOrderApplied
  • TableOrderApplyInput
  • TableOrderCreate
  • TableOrderLine
  • TableOrderLineInput
  • TableOrderLineState
  • TableOrderList
  • TableOrderState
  • TableOrderingSettings
  • TableOrderingState
  • TableRequest
  • TableSession
  • TableSessionCreated
  • TableSessionStart
  • TableStateInput
  • TableStateResult
  • TableTab
  • TableTabState
  • TableVisit
  • TableVisitState
  • TimeIntervalInput
  • TipsByEmployee
  • TipsReport
  • VatReport

26.10.3

Opravy a dokumentaceFixes and documentationZpětně kompatibilníBackward compatibledříve 2.0.7formerly 2.0.7

Rozpis DPH dopravy jako na účtenceVAT split of delivery as on the receipt

Doprava a doplatek do minima se do sazeb DPH dělí poměrem hrubých částek položek – přesně jako kopie účtenky a účetní exporty. Rozpis DPH kalkulace a objednávky tak sedí s účtenkou, Pohodou i Money na haléř.

Delivery and the minimum-order surcharge are split into VAT rates by the ratio of the items' gross amounts – exactly like the receipt copy and the accounting exports. The VAT breakdown of quotes and orders now matches the receipt, Pohoda and Money to the cent.

Co musíte udělatNic, pokud rozpis DPH berete z odpovědi. Jestli si ho počítáte sami, dělte dopravu poměrem hrubých částek.

What you need to doNothing if you take the VAT breakdown from the answer. If you compute it yourself, split delivery by gross amounts.

OpravenoFixed

  • Dělení dopravy a doplatku do sazeb DPH poměrem hrubých částek (dřív poměrem základů daně).Delivery and surcharge split into VAT rates by gross amounts (by tax bases before).

DokumentaceDocumentation

  • Příklady kalkulace podle serveru: kalkulace platí 15 minut, voucher v ní je pending a Loyalty.redeemable je false.Quote examples as the server answers: a quote is valid for 15 minutes, a voucher in it is pending and Loyalty.redeemable is false.

Tvar API se nezměnil – jen texty, příklady a chování podle smlouvy.The shape of the API did not change – texts, examples and behaviour by the contract only.

26.10.2

Opravy a dokumentaceFixes and documentationZpětně kompatibilníBackward compatibledříve 2.0.6formerly 2.0.6

Přesnější dokumentaceMore precise documentation

Jen texty a příklady, tvar API se nezměnil. Popisy teď přesně odpovídají tomu, co server dělá, a smlouva uvádí i odpovědi, které server vracel už dřív.

Texts and examples only; the shape of the API did not change. The descriptions now match exactly what the server does, and the contract lists answers the server already gave before.

Co musíte udělatNic.

What you need to doNothing.

DokumentaceDocumentation

  • Zdokumentované odpovědi: 409 ticket_cancelled u startStationWork, stopStationWork a takeBackTicketHandover, 400 invalid_request u oauthRevoke, 429 u oauthAuthorize a oauthDeviceAuthorization (limit na IP adresu); u startPhoneVerification popsaná 503, když SMS nejde odeslat.Documented answers: 409 ticket_cancelled at startStationWork, stopStationWork and takeBackTicketHandover, 400 invalid_request at oauthRevoke, 429 at oauthAuthorize and oauthDeviceAuthorization (a limit per IP address); 503 at startPhoneVerification explained for when an SMS cannot be sent.
  • Doplněné popisy hlavních schémat (účtenka, objednávka, kuchyňský bon, účet stolu, produkt, provozovna, zákazník, nastavení zařízení) a jejich polí, význam hodnot výčtů a parametrů.Descriptions of the main schemas (receipt, order, kitchen ticket, tab, product, restaurant, customer, device settings) and their fields, the meaning of enum values and parameters.
  • Upřesněné chování: vaše ID (putExternalRef) jen u pěti typů objektů, restaurant.changed i po uložení provozovny v administraci, stálá ID zón a stolů, kódy voucherů v poznámkách jen maskované (ABC-***).Behaviour made precise: your IDs (putExternalRef) for five object types only, restaurant.changed also after the restaurant is saved in the administration, stable IDs of zones and tables, voucher codes in notes masked only (ABC-***).
  • Veřejný ukázkový účet profirestdemo (bez SMS, e-mailů a EET, data se každou noc obnoví) a popis přechodu z API v1.The public demo account profirestdemo (no SMS, e-mails or EET, the data is reset every night) and how to move from API v1.
Přesný výčet změn ve smlouvěExact list of contract changes 6
Nově zdokumentované odpovědiNewly documented responses 6

26.10.1

První finální verzeFirst final versiondříve 2.0.5formerly 2.0.5

První finální verze API v2The first final version of API v2

Zmrazená smlouva API v2: napojení e-shopů a partnerských aplikací (OAuth 2.0 s PKCE, sortiment, kalkulace a objednávky, zákazníci, vouchery, vaše ID objektů, události v proudu i webhookem) a vlastní zařízení Profirestu (párování kódem, zaměstnanci, docházka, kuchyňský displej, rozvoz, pokladna s účtenkami spočítanými serverem a EET 2.0 ze serveru, inventura, zálohy a diagnostika). Od této verze platí slib stability – v rámci v2 se jen přidává.

The frozen API v2 contract: integrations of e-shops and partner applications (OAuth 2.0 with PKCE, the catalog, quotes and orders, customers, vouchers, your IDs of objects, events in the feed and by webhook) and Profirest's own devices (pairing by code, staff, attendance, the kitchen display, deliveries, the register with receipts priced by the server and EET 2.0 sent by the server, stock taking, backups and diagnostics). The stability promise holds from this version – within v2 things are only added.

Co musíte udělatPředběžné verze (rc.1–rc.9) se v changelogu neuvádějí; kdo s nimi zkoušel, řiďte se touto verzí.

What you need to doPre-release versions (rc.1–rc.9) are not listed; if you tried them, follow this version.

Výchozí verze: celou smlouvu, jak tehdy vypadala, ukáže reference ve verzi 26.10.1.The starting version: the reference at version 26.10.1 shows the whole contract as it was then.