ProfirestAPI v2
Finální smlouva · v ostrém provozu

API v2

Katalog chyb

Error catalog

Každá chyba API v2 přichází jako application/problem+json podle RFC 9457. Rozhodujte se podle code – kód se nikdy nemění; nové kódy mohou přibýt, neznámý kód berte podle HTTP stavu.

Every API v2 error comes as application/problem+json (RFC 9457). Branch on code – a code never changes; new codes may be added, so treat an unknown code by its HTTP status.

title je česky nebo anglicky podle Accept-Language, detail popisuje konkrétní případ a errors ukazují problémy u jednotlivých polí (ukazatel JSON Pointer, kód a zpráva). Adresa v type vede přímo na kód v tomto katalogu. Při kontaktu s podporou uveďte request_id.

title is Czech or English according to Accept-Language, detail describes the particular case and errors lists field problems (a JSON Pointer, a code and a message). The URL in type leads straight to the code in this catalog. Quote request_id when you contact support.

HTTP/1.1 422 · application/problem+json
{
  "type": "https://api.mujprofirest.cz/v2/docs/errors#product_unavailable",
  "title": "Produkt je vyprodaný nebo se nenabízí",
  "status": 422,
  "code": "product_unavailable",
  "detail": "Pizza Margherita je vyprodaná.",
  "instance": null,
  "request_id": "7c9e6679a1f04d3b8e2b5f0a4c1d2e3f",
  "errors": [
    {
      "pointer": "/items/0/product_id",
      "code": "product_unavailable",
      "message": "Produkt teď nejde objednat."
    }
  ],
  "existing_id": null,
  "candidates": [],
  "paid_by": null
}

Opakovat má smysl jen 429 rate_limited (po Retry-After), 409 idempotency_in_progress a stavy 500, 502, 503 a 504 – vždy se stejným Idempotency-Key. Ukázku v každém jazyce mají návody; oficiální knihovny (nabídka Knihovny) to dělají samy a přidávají vlastní kódy network_error, timeout a not_paired.

Only 429 rate_limited (after Retry-After), 409 idempotency_in_progress and the statuses 500, 502, 503 and 504 are worth repeating – always with the same Idempotency-Key. The guides show it in every language; the official libraries (the Libraries menu) do it for you and add their own codes network_error, timeout and not_paired.

Obecné

Generic

codeHTTPnázev a co dělattitle and what to do
malformed_request400
Chybný požadavekPožadavek nejde přečíst – rozbitý JSON, špatná hlavička nebo parametr (co přesně, říká detail). Opravte ho; beze změny skončí znovu stejně.
Malformed requestThe request cannot be read – broken JSON, a bad header or parameter (detail says what). Fix it; sent unchanged it fails again.
idempotency_key_missing400
Chybí hlavička Idempotency-KeyPřidejte hlavičku Idempotency-Key: nové náhodné UUID pro každý nový zápis, stejný klíč při jeho opakování.
Idempotency-Key header is requiredAdd the Idempotency-Key header: a new random UUID for every new write, the same key when you repeat it.
invalid_token401
Access token chybí, je neplatný nebo vypršelZískejte refresh tokenem nový access token a požadavek zopakujte. Skončí-li obnova chybou invalid_grant, přístup byl zrušen nebo vypršel: autorizujte znovu (zařízení je třeba znovu spárovat).
Access token is missing, invalid or expiredGet a new access token with the refresh token and repeat the request. When the refresh ends with invalid_grant, the access was revoked or has expired: authorize again (a device must be paired again).
insufficient_scope403
Token nemá potřebné oprávněníToken nemá oprávnění uvedené v detail. Požádejte o něj v nové autorizaci – majitel ho musí potvrdit; zařízení je třeba spárovat znovu.
The access token lacks the required scopeThe token lacks the scope named in detail. Ask for it in a new authorization – the owner has to confirm it; a device has to be paired again.
not_found404
NenalezenoObjekt neexistuje, nebo ho vaše připojení nesmí vidět (např. majitel vaší aplikaci provozovnu nezpřístupnil). Zkontrolujte ID; opakování nepomůže.
Not foundThe object does not exist, or your connection may not see it (for example the owner did not share the restaurant with your application). Check the ID; repeating will not help.
method_not_allowed405
Metoda není povolenaPoužijte některou z metod v hlavičce Allow.
Method not allowedUse one of the methods listed in the Allow header.
not_acceptable406
Požadovaný typ odpovědi není k dispoziciPošlete Accept: application/json (u stažení souboru jeho typ), nebo Accept vynechte.
The requested response type is not availableSend Accept: application/json (for a file download the type of the file), or leave Accept out.
conflict409
Konflikt s aktuálním stavemPožadavek se nesnese s aktuálním stavem – jak, říká detail; existing_id, je-li vyplněné, ukazuje na objekt, který překáží. Než se rozhodnete, načtěte aktuální stav.
Conflict with the current stateThe request clashes with the current state – detail says how; existing_id, when filled in, points at the object in the way. Read the current state before you decide what to do.
idempotency_in_progress409
Požadavek se stejným Idempotency-Key se ještě zpracováváPrvní požadavek s tímto klíčem ještě běží. Po Retry-After sekundách ho zopakujte se stejným klíčem i tělem – dostanete jeho výsledek.
A request with this Idempotency-Key is still being processedThe first request with this key is still running. After Retry-After seconds repeat it with the same key and body – you get its result.
external_id_conflict409
Toto external_id už má jiný objektToto external_id už má jiný objekt, jeho ID je v existing_id. Použijte ten objekt, nebo zvolte jiné external_id.
Another object already has this external_idAnother object already has this external_id; its ID is in existing_id. Use that object, or choose another external_id.
cursor_expired410
Kurzor vypršelKurzor je starší než 30 dní a část událostí už nemusí být k dispozici. Načtěte znovu data, která si držíte, a události čtěte znovu bez kurzoru.
The cursor has expiredThe cursor is older than 30 days and some events may be gone. Reload the data you keep, then read events again without a cursor.
precondition_failed412
Záznam se mezitím změnilObjekt se po vašem načtení změnil. Načtěte ho znovu, změnu proveďte nad novým stavem a pošlete ji s novým ETag v If-Match.
The object has changed since you read itSomeone changed the object after you read it. Read it again, apply your change to the new state and send it with the new ETag in If-Match.
payload_too_large413
Požadavek je příliš velkýTělo překračuje limit operace. Posílejte méně najednou – třeba dávku rozdělte do více požadavků.
Request body is too largeThe body is over the limit of the operation. Send less at once – for example split a batch into several requests.
unsupported_media_type415
Nepodporovaný typ těla požadavkuPošlete tělo v typu, který operace bere – obvykle application/json s hlavičkou Content-Type: application/json.
Unsupported type of the request bodySend the body in the type the operation takes – usually application/json with the header Content-Type: application/json.
validation_failed422
Neplatná dataOpravte pole uvedená v errors (pointer říká které, code proč) a požadavek pošlete znovu. Beze změny skončí stejně.
Validation failedFix the fields listed in errors (pointer says which field, code why) and send the request again. Unchanged it fails again.
idempotency_key_mismatch422
Idempotency-Key už byl použit pro jiný požadavekTento klíč už patří jinému požadavku (jiná metoda, cesta nebo tělo). Pro nový požadavek vygenerujte nový náhodný klíč; stejný klíč jen při opakování téhož požadavku.
Idempotency-Key was already used for a different requestThis key was already used for a different request (method, path or body). Generate a new random key for a new request; reuse a key only to repeat the identical request.
precondition_required428
Chybí hlavička If-MatchPošlete If-Match s hodnotou ETag z posledního načtení objektu.
If-Match header is requiredSend If-Match with the ETag from your last read of the object.
rate_limited429
Příliš mnoho požadavkůPočkejte Retry-After sekund a zpomalte – kolik zbývá, ukazují hlavičky RateLimit-*. Místo opakovaného dotazování sledujte GET /events nebo webhooky.
Too many requestsWait Retry-After seconds and slow down – the RateLimit-* headers show what is left. Instead of polling, follow GET /events or webhooks.
internal_error500
Chyba serveruChyba na naší straně. Požadavek zopakujte později se stejným Idempotency-Key – zápis se nikdy neprovede dvakrát. Opakuje-li se to, pošlete podpoře request_id.
Internal errorAn error on our side. Repeat the request later with the same Idempotency-Key – a write is never done twice. If it keeps happening, give request_id to the support.
not_implemented501
Tato operace zatím není k dispoziciOperace je ve smlouvě, ale zatím neběží. Zatím ji nevolejte.
This operation is not available yetThe operation is in the contract but does not run yet. Do not call it yet.
service_unavailable503
Služba je dočasně nedostupnáSlužba, kterou potřebujeme (SMS brána, mapy, úložiště záloh), neodpovídá. Zopakujte po Retry-After sekundách.
Service temporarily unavailableA service we need (SMS gateway, map service, backup storage) does not answer. Repeat after Retry-After seconds.

Objednávky

Ordering

codeHTTPnázev a co dělattitle and what to do
restaurant_closed422
Provozovna má zavřenoProvozovna má teď zavřeno. Ukažte zákazníkovi otevírací dobu a nechte ho objednat, až otevře.
The restaurant is closedThe restaurant is closed now. Show the customer the opening hours and let them order when it opens.
ordering_disabled422
Provozovna teď nepřijímá objednávkyProvozovna teď objednávky z aplikací nepřijímá (pozastavené v administraci, nebo to licence nedovoluje). Řekněte to zákazníkovi; nezkoušejte to dokola.
The restaurant does not accept online orders nowThe restaurant does not take orders from applications now (paused in the administration, or its licence does not allow it). Tell the customer; do not retry in a loop.
delivery_unavailable422
Rozvoz není k dispoziciRozvoz teď nebo v tu dobu není k dispozici. Nabídněte osobní odběr, nebo jiný čas z listTimeSlots.
Delivery is not availableDelivery is not available now or at that time. Offer pickup, or another time from listTimeSlots.
pickup_unavailable422
Osobní odběr není k dispoziciOsobní odběr provozovna nenabízí. Nabídněte rozvoz.
Pickup is not availableThe restaurant does not offer pickup. Offer delivery.
outside_delivery_zone422
Adresa je mimo rozvozové zónyAdresa leží mimo rozvozové zóny. Nabídněte osobní odběr, nebo ať zákazník zadá jinou adresu.
The address is outside all delivery zonesThe address is outside all delivery zones. Offer pickup, or let the customer enter another address.
time_unavailable422
Požadovaný čas nelze splnitZvolený čas provozovna nestihne nebo nenabízí. Ať si zákazník vybere čas z listTimeSlots, a vytvořte novou kalkulaci.
The requested time cannot be servedThe restaurant cannot serve the chosen time. Let the customer pick a time from listTimeSlots and create a new quote.
express_unavailableod 26.10.5since 26.10.5422
Expresní doručení není k dispoziciDo zóny této adresy provozovna expres nenabízí (delivery.express_fee kalkulace bez expresu je null). Spočítejte košík znovu bez fulfillment.speed – běžný rozvoz.
Express delivery is not availableThe restaurant does not offer express delivery to the zone of this address (delivery.express_fee of a quote without express is null). Create the quote again without fulfillment.speed – standard delivery.
product_unavailable422
Produkt je vyprodaný nebo se nenabízíProdukt je vyprodaný nebo se už nenabízí (errors ukazuje na položku, když je známá). Načtěte sortiment znovu, položku odeberte nebo snižte množství a zkuste to znovu – objednávka potřebuje novou kalkulaci.
A product is sold out or not offeredA product is sold out or no longer offered (errors points at the item when it is known). Reload the catalog, remove the item or lower its quantity and try again – an order needs a new quote.
quote_expired409
Kalkulace vypršelaKalkulace platí 15 minut. Vytvořte novou a před založením objednávky ukažte zákazníkovi její částku.
The quote has expiredA quote is valid 15 minutes. Create a new one and show the customer its amount before you create the order.
quote_already_used409
Kalkulace už byla použita pro objednávkuZ této kalkulace už objednávka vznikla, její ID je v existing_id. Načtěte ji přes getOrder, neobjednávejte znovu.
The quote was already used for an orderAn order already exists for this quote; its ID is in existing_id. Read it with getOrder instead of ordering again.
payment_amount_mismatch422
Platby neodpovídají částce k úhraděPlatby musí přesně dát částku k úhradě – amount_due kalkulace, totals.total účtenky (kde se smí zaokrouhlit jen hotovostní část na celé koruny). Přepočítejte je na haléře.
The payments do not add up to the amount dueThe payments must add up exactly to the amount due – amount_due of the quote, totals.total of the receipt (where only the cash part may be rounded to whole CZK). Recompute them to the minor unit.
order_not_cancellable409
Objednávku už nelze zrušitKuchyň už začala, nebo je objednávka vydaná či zrušená. Stav ukáže getOrder; změnu teď řeší provozovna (telefonicky).
The order can no longer be cancelledThe kitchen has started, or the order is already handed out or cancelled. getOrder shows its state; a change now goes through the restaurant (by phone).
order_not_awaiting_payment409
Objednávka nečeká na platbuObjednávka nečeká na online platbu – je zaplacená, zrušená nebo placená jinak. Stav načtěte přes getOrder.
The order is not waiting for paymentThe order is not waiting for an online payment – it is paid, cancelled or paid another way. Read its state with getOrder.

Zákazníci

Customers

codeHTTPnázev a co dělattitle and what to do
customer_not_verified403
Telefon zákazníka není ověřenýNejdřív ověřte telefon zákazníka: startPhoneVerification pošle kód SMS, confirmPhoneVerification ho ověří.
The customer's phone number is not verifiedVerify the customer's phone first: startPhoneVerification sends a code by SMS, confirmPhoneVerification checks it.
verification_failed422
Ověřovací kód je špatný nebo vypršelKód je špatný nebo starší než 10 minut. Ať ho zákazník zadá znovu; po 5 chybných pokusech nebo po vypršení pošlete nový.
The verification code is wrong or expiredThe code is wrong or older than 10 minutes. Let the customer type it again; after 5 wrong tries, or once it has expired, send a new code.
verification_resend_too_early429
Nový kód lze poslat až pozdějiNový kód lze poslat 60 sekund po předchozím. Počkejte Retry-After sekund.
A new code can be sent laterA new code can go out 60 seconds after the previous one. Wait Retry-After seconds.
sms_quota_exceeded429
Limit SMS je vyčerpanýDenní limit ověřovacích SMS je vyčerpaný (5 kódů denně na jeden telefon z vašeho připojení, 15 ze všech aplikací, nebo denní kvóta vašeho připojení). Počkejte Retry-After sekund – do půlnoci.
The SMS limit was reachedThe daily limit of verification SMS is used up (5 codes a day to one phone from your connection, 15 from all applications, or the daily quota of your connection). Wait Retry-After seconds – until midnight.
sms_country_not_supported422
Do této země SMS neposílámeOvěřovací SMS posíláme jen na česká (+420) a slovenská (+421) čísla. Požádejte zákazníka o takové číslo.
SMS cannot be sent to this countryVerification SMS go only to Czech (+420) and Slovak (+421) numbers. Ask the customer for such a number.

Vouchery

Vouchers

codeHTTPnázev a co dělattitle and what to do
voucher_invalid422
Kód voucheru neplatíVoucher s tímto kódem neexistuje. Ať zákazník kód zkontroluje; opakované špatné kódy skončí voucher_attempts_exceeded.
The voucher code is not validNo voucher has this code. Let the customer check it; repeated wrong codes end in voucher_attempts_exceeded.
voucher_expired422
Voucher vypršelPlatnost voucheru skončila. Odeberte ho z plateb; zákazník zaplatí jinak.
The voucher has expiredThe validity of the voucher has ended. Remove it from the payments; the customer pays another way.
voucher_used_up422
Voucher je vyčerpanýNa voucheru nic nezbývá. Odeberte ho z plateb.
The voucher has no balance leftNothing is left on the voucher. Remove it from the payments.
voucher_blocked422
Voucher je zablokovanýProvozovna voucher zablokovala. Odeberte ho z plateb; zákazník se musí obrátit na provozovnu.
The voucher is blockedThe restaurant blocked the voucher. Remove it from the payments; the customer has to contact the restaurant.
voucher_not_accepted_here422
Voucher na této provozovně neplatíVoucher platí jen na jiných provozovnách účtu. Odeberte ho z plateb.
The voucher cannot be used at this restaurantThe voucher is valid only at other restaurants of the account. Remove it from the payments.
voucher_attempts_exceeded429
Příliš mnoho neplatných pokusů o voucherPříliš mnoho špatných kódů voucherů. Počkejte Retry-After sekund a nedovolte zkoušet kódy dokola.
Too many invalid voucher attemptsToo many wrong voucher codes. Wait Retry-After seconds and do not let anyone try codes in a loop.

Akce a slevové kódy

Promotions and promo codes

codeHTTPnázev a co dělattitle and what to do
promo_code_invalidod 26.10.4since 26.10.4422
Slevový kód neplatíProvozovna takový kód nemá (nebo ho vypnula). Ať zákazník kód zkontroluje; opakované špatné kódy skončí promo_code_attempts_exceeded.
The promo code is not validThe restaurant has no such code here (or turned it off). Let the customer check it; repeated wrong codes end in promo_code_attempts_exceeded.
promo_code_expiredod 26.10.4since 26.10.4422
Slevový kód už neplatíAkce kódu skončila. Odeberte kód z kalkulace; objednávka jde i bez něj.
The promo code has expiredThe promotion of the code has ended. Remove the code from the quote; the order works without it.
promo_code_not_applicableod 26.10.4since 26.10.4422
Slevový kód na tuto objednávku neplatídetail říká proč – nejnižší cena položek (a kolik chybí), nejmenší počet kusů, chybějící část sady, v košíku není nic, na co kód platí, jen rozvoz nebo odběr, platí až později, neplatí v tento den nebo čas, jen pro registrované zákazníky (propojený zákazník s ověřeným telefonem) nebo jen na první objednávku. Ukažte ho zákazníkovi.
The promo code does not apply to this orderdetail says why – the lowest price of the items (and how much is missing), the lowest number of items, a missing part of a set, nothing in the basket the code is for, delivery or pickup only, not valid yet, not valid on this day or at this time, registered customers only (a linked customer with a verified phone) or the first order only. Show it to the customer.
promo_code_used_upod 26.10.4since 26.10.4422
Slevový kód je vyčerpanýAkce dosáhla svého počtu použití, jednorázový kód už byl použitý, nebo zákazník akci využil, kolikrát mohl (max_per_customer). Odeberte kód z kalkulace.
The promo code has been used upThe promotion reached its number of uses, the single-use code has already been used, or the customer has used the promotion as many times as allowed (max_per_customer). Remove the code from the quote.
promo_code_attempts_exceededod 26.10.4since 26.10.4429
Příliš mnoho neplatných pokusů o slevový kódPříliš mnoho špatných kódů (limity jsou společné s vouchery). Počkejte Retry-After sekund a nedovolte zkoušet kódy dokola.
Too many invalid promo code attemptsToo many wrong codes (the limits are shared with vouchers). Wait Retry-After seconds and do not let anyone try codes in a loop.
promotion_changedod 26.10.4since 26.10.4409
Akce z kalkulace se změnilaPo kalkulaci provozovna akci vypnula nebo se vyčerpala, zákazník dosáhl jejího limitu na zákazníka, nebo jednorázový kód použila jiná objednávka. Spočítejte košík znovu a ukažte zákazníkovi novou cenu.
A promotion of the quote has changedAfter the quote the restaurant turned a promotion off or it ran out, the customer reached its limit per customer, or another order used the single-use code. Create a new quote and show the customer the new price.

Zařízení a zaměstnanci

Devices and staff

codeHTTPnázev a co dělattitle and what to do
device_required403
Tohle smí jen spárované zařízeníTohle smí jen zařízení spárované v administraci (pokladna, KDS nebo píchačka Profirestu); token integrace ne.
Only a paired device may do thisOnly a device paired in the administration may do this (the register, KDS or attendance terminal of Profirest); a token of an integration may not.
legacy_identity_unsupportedod 26.11.6since 26.11.6403
Tato aplikace identitu API v1 nemáMezi API v1 a API v2 přecházejí jen vlastní aplikace Profirestu pro pokladnu, kuchyňský displej a kurýra. Ostatní aplikace zůstávají na API v2.
This application has no API v1 identityOnly Profirest's own register, kitchen display and courier apps move between API v1 and API v2. Other applications stay on API v2.
no_legacy_identityod 26.11.6since 26.11.6404
Provozovna pro tuto aplikaci identitu API v1 nemáAplikace kurýra se v API v1 přihlašuje heslem webové kuchyně – provozovna ho nemá. Zařízení zůstává na API v2; založte webovou kuchyni a zavolejte znovu.
The restaurant has no API v1 identity for this appThe courier app signs in to API v1 with the password of the web kitchen – the restaurant has none. The device stays on API v2; set up the web kitchen and call again.
staff_session_required403
Nejdřív se musí na zařízení přihlásit zaměstnanecNa zařízení se musí přihlásit zaměstnanec PINem nebo čipem (createStaffSession); relaci posílejte v Profirest-Staff-Token.
An employee must sign in on the device firstAn employee has to sign in on the device with a PIN or card (createStaffSession); send the session in Profirest-Staff-Token.
staff_session_expired403
Přihlášení zaměstnance vypršeloPřihlášení zaměstnance skončilo – nepoužité po idle_timeout_seconds, po max_expires_at, odhlášené, nebo se změnil PIN či čip. Ať se zaměstnanec přihlásí znovu.
The employee sign-in has expiredThe sign-in of the employee has ended – unused for idle_timeout_seconds, past max_expires_at, signed out, or the PIN or card changed. Let the employee sign in again.
license_expiredod 26.11.27since 26.11.27403
Licence provozovny vypršelaLicence skončila (DeviceSettings.paid_until) a z kreditu ji obnovit nešlo. Zařízení zamkněte a ať majitel licenci obnoví v administraci; nastavení zařízení, zálohy, diagnostika a offline účtenky vystavené před koncem fungují dál. Od 26.11.27.
The licence of the restaurant has expiredThe licence ended (DeviceSettings.paid_until) and could not be renewed from the credit. Lock the device and let the owner renew the licence in the administration; the device settings, backups, diagnostics and offline receipts issued before the end still work. Since 26.11.27.
staff_credentials_invalid422
Špatný PIN nebo neznámý čipŠpatný PIN nebo neznámý čip. Ať to zaměstnanec zkusí znovu; opakované chyby přihlašování zamknou (staff_locked).
Wrong PIN or unknown cardWrong PIN or an unknown card. Let the employee try again; repeated failures lock the sign-in (staff_locked).
staff_ambiguous409
Tento PIN má víc zaměstnanců; vyberte jednohoTento PIN má víc zaměstnanců. Nabídněte candidates a přihlášení zopakujte se zvoleným employee_id.
Several employees share this PIN; choose oneSeveral employees have this PIN. Offer the candidates and repeat the sign-in with the chosen employee_id.
staff_locked429
Příliš mnoho špatných PINů nebo čipůPříliš mnoho špatných PINů nebo čipů. Počkejte Retry-After sekund; zapomenutý PIN změní vedoucí v administraci.
Too many wrong PINs or cardsToo many wrong PINs or cards. Wait Retry-After seconds; a forgotten PIN is changed by a manager in the administration.
staff_role_missing403
Přihlášený zaměstnanec tohle nesmíPřihlášený zaměstnanec na tohle nemá oprávnění (např. vedoucí pokladny nebo kuchyně). Přihlaste zaměstnance, který ho má; oprávnění se nastavují v administraci (Zaměstnanci).
The signed-in employee may not do thisThe signed-in employee lacks the permission for this (for example a register or kitchen manager). Sign in an employee who has it; permissions are set in the administration (Employees).

Docházka

Attendance

codeHTTPnázev a co dělattitle and what to do
module_not_licensed403
Licence provozovny tento modul nezahrnujeLicence provozovny tento modul (např. Docházku) nezahrnuje. Majitel ho přidá v administraci (Licence).
The restaurant's licence does not include this moduleThe licence of the restaurant does not include this module (for example Attendance). The owner adds it in the administration (Licence).

Rezervace

Reservations

codeHTTPnázev a co dělattitle and what to do
reservation_unavailableod 26.11.9since 26.11.9409
Termín není volnýV tu dobu není volný stůl, pracovník ani místnost (co přesně, říká detail). Nabídněte jiný čas z getReservationAvailability.
The time is not freeNo table, employee or room is free at that time (detail says which). Offer another time from getReservationAvailability.
reservation_not_allowedod 26.11.9since 26.11.9422
Pravidla provozovny tuto rezervaci nedovolíPříliš brzy, příliš dopředu, mimo otevírací dobu, zavřený den, příliš velká skupina, nebo jsou online rezervace vypnuté – detail začíná důvodem. Viz getReservationSettings; opakování nepomůže.
The rules of the restaurant do not allow this reservationToo soon, too far ahead, outside the opening hours, a closed day, too big a party, or online reservations are off – detail starts with the reason. See getReservationSettings; repeating will not help.
reservation_state_conflictod 26.11.9since 26.11.9409
Rezervace je v jiném stavuRezervace to ve svém stavu neumí (třeba potvrdit zrušenou). Načtěte ji znovu přes getReservation.
The reservation is in another stateThe reservation cannot do this in its state (for example confirm a cancelled one). Read it again with getReservation.
lodging_state_conflictod 26.11.13since 26.11.13409
Host teď není ubytovanýÚtrata jde jen na pobyt, který je právě ubytovaný; host ještě nepřijel nebo už odjel. Nabídněte pokoje z listInHouseStays; ostatní útraty zapíše recepce v administraci.
The guest is not staying nowCharges go only to stays checked in now; the guest has not arrived yet or has left. Offer the rooms from listInHouseStays; the reception adds other charges in the administration.
stay_state_conflictod 26.11.21since 26.11.21409
Pobyt tento krok teď nedovolíKrok nesedí na stav pobytu (třeba odhlásit pobyt, který nepřijel), nebo je vystavený doklad za pobyt a účet je uzavřený. Proč, říká detail; načtěte pobyt znovu přes getStay a nabídněte jen jeho actions.
The stay does not allow this step nowThe step does not fit the state of the stay (for example checking out a stay that has not arrived), or the receipt for the stay is issued and the account is closed. detail says why; read the stay again with getStay and offer only its actions.
lodging_room_unavailableod 26.11.21since 26.11.21409
Pokoj v tomto termínu není volnýPokoj v tomto termínu drží jiný pobyt, je mimo provoz, nebo není volný žádný pokoj typu. Načtěte getLodgingAvailability a vyberte volný pokoj.
The room is not free in these datesAnother stay holds the room in these dates, the room is out of order, or no room of the type is free. Read getLodgingAvailability and pick a free room.
attendance_not_enabled422
Zaměstnanec se na této provozovně nevede v docházceZaměstnanec se na této provozovně v docházce nevede. Zapíná se v kartě zaměstnance v administraci.
The employee is not kept in attendance at this restaurantThe employee is not kept in attendance at this restaurant. It is switched on in the employee card in the administration.
attendance_state_conflict409
Záznam nesedí na aktuální stav docházkyPíchnutí nesedí na aktuální stav zaměstnance (např. konec přestávky bez přestávky). Co nesedí, říká detail; načtěte listAttendancePresence a nabídněte píchnutí, které sedí.
The punch does not fit the current attendance stateThe punch does not fit the current state of the employee (for example a break end without a break). detail says what is wrong; read listAttendancePresence and offer the punch that fits.
offline_records_disabled422
Provozovna nepřijímá záznamy pořízené offlineProvozovna nepřijímá píchnutí pořízená offline. Píchejte online; chybějící záznam se doplní v administraci ručně, nebo se offline záznamy povolí v nastavení docházky.
The restaurant does not accept offline recordsThe restaurant does not accept punches recorded offline. Punch online; a missed record is added in the administration by hand, or offline records are allowed in the attendance settings.
occurred_at_out_of_range422
Čas záznamu je moc starý nebo v budoucnostiČas je v budoucnosti (zkontrolujte hodiny zařízení), nebo je starší, než provozovna u offline záznamů přijímá. Takový záznam doplňte v administraci ručně.
The time of the record is too old or in the futureThe time is in the future (check the clock of the device) or older than the restaurant accepts for offline records. Add such a record in the administration by hand.
punch_id_conflict409
Toto id už má jiný záznamToto id patří jinému píchnutí. Každé nové píchnutí potřebuje nové UUID; píchnutí opakujte jen s jeho vlastním id.
Another record already uses this idThis id belongs to another punch. Give every new punch a new UUID; repeat a punch only with its own id.
absence_requests_disabledod 26.10.7since 26.10.7403
Provozovna žádosti o volno nepřijímáŽádosti o volno na terminálu jsou vypnuté (AttendanceTerminal.absence_requests.enabled). Zapne je majitel nebo vedoucí v administraci (Docházka › Žádosti o volno).
The restaurant does not accept requests for time offRequests for time off at the terminal are switched off (AttendanceTerminal.absence_requests.enabled). The owner or a manager switches them on in the administration (Attendance › Requests for time off).
absence_request_not_allowedod 26.10.7since 26.10.7422
Žádost porušuje pravidlo provozovnyŽádost porušuje pravidlo provozovny (druh volna, předstih, délka, jak daleko dopředu, kolik lidí ze sekce má volno). Které, říká detail; ukažte ho zaměstnanci a nechte ho změnit termín.
The request breaks a rule of the restaurantThe request breaks a rule of the restaurant (kind, notice, length, how far ahead, people of the section off). detail says which one; show it to the employee and let them change the dates.
absence_request_conflictod 26.10.7since 26.10.7409
Zaměstnanec už v tu dobu volno máZaměstnanec už na některé z dnů o volno požádal nebo ho má (kdy, říká detail). Načtěte listMyAbsenceRequests; čekající žádost jde nejdřív vzít zpět.
The employee already has time off thenThe employee already asked for or has time off on some of the days (detail says when). Read listMyAbsenceRequests; a pending request can be withdrawn first.
absence_request_decidedod 26.10.7since 26.10.7409
Žádost už je vyřízenáŽádost už je schválená nebo zamítnutá a na terminálu ji vzít zpět nejde. Schválené volno zruší vedoucí v administraci.
The request is already decidedThe request was already approved or refused and cannot be withdrawn at the terminal. Approved time off is cancelled by a manager in the administration.

Kuchyně

Kitchen

codeHTTPnázev a co dělattitle and what to do
portion_tracking_disabledod 26.10.4since 26.10.4409
Provozovna pro vás porce nehlídáProvozovna porce nehlídá, nebo jen na pokladnách (aplikace hostů je pak měnit nemohou). Zapněte hlídání v administraci, nebo dostupnost neměňte.
The restaurant does not track portions for youThe restaurant does not limit portions, or only at its registers (guest applications then cannot change them). Turn tracking on in the administration, or leave availability alone.
ticket_cancelled409
Objednávka je v kuchyni zrušenáObjednávka byla mezitím zrušena. Načtěte bon znovu a dál na něm nepracujte.
The order was cancelled in the kitchenThe order was cancelled meanwhile. Reload the ticket and stop working on it.
ticket_already_deliveredod 26.11.2since 26.11.2409
Objednávka je už doručenáObjednávka je doručená (třeba označená na jiném zařízení). Načtěte trasu znovu; omylem označené doručení opraví kuchyňský displej.
The order is already deliveredThe order was delivered (perhaps marked on another device). Reload the route; a mistaken delivery is put right by the kitchen display.
already_paidod 26.11.2since 26.11.2409
Objednávka je už zaplacenáPlatba u dveří už je zapsaná – čím a kdy, říká paid_by. Ukažte objednávku jako zaplacenou a platbu znovu neberte; cokoli dalšího vyřeší provozovna.
The order is already paidThe payment at the door was already recorded – paid_by says how and when. Show the order as paid and take no payment again; the restaurant settles anything else.
payment_method_not_changeableod 26.11.2since 26.11.2409
U této objednávky se u dveří nic nevybíráObjednávka je zaplacená předem (kartou nebo online, u pokladny), nebo se platí stravenkami, účtem podniku či fakturou. Platbu neberte; objednávku předejte.
Nothing is collected at the door for this orderThe order was paid in advance (by card or online, at the register) or is paid by meal vouchers, the company account or an invoice. Take no payment; hand the order over.
amount_mismatchod 26.11.2since 26.11.2422
Částka nesedí s objednávkouamount musí být amount_due + tip bonu. Načtěte bon znovu – objednávka se mohla změnit – a pošlete skutečně zaplacenou částku.
The amount does not match the orderamount must be amount_due + tip of the ticket. Reload the ticket – the order may have changed – and send the amount actually paid.
note_requiredod 26.11.2since 26.11.2422
K tomuto důvodu chybí poznámkaDůvod other potřebuje note, co se stalo. Vyžádejte ji od kurýra a hlášení pošlete znovu.
A note is required for this reasonThe reason other needs note saying what happened. Ask the courier for it and send the report again.
ticket_not_amendable409
K této objednávce nejde přidat položkyPoložky už přidat nejde – objednávka je hotová nebo vydaná, nebo zaplacená předem (kartou, online). Na další položky založte nový bon.
Items cannot be added to this orderItems can no longer be added – the order is done or handed out, or paid in advance (card, online). Create a new ticket for the extra items.
nothing_to_complete409
V tomto segmentu nic otevřeného neníV této části už nic otevřeného není – dokončil nebo vydal ji někdo jiný. Načtěte zobrazení znovu.
Nothing is open in this segmentNothing is open in this part any more – someone else completed or handed it out. Reload the view.
action_already_undone409
Akce už byla vzata zpětAkce už byla vzata zpět (třeba na jiném zařízení). Načtěte seznam akcí znovu.
The action was already taken backThe action was already taken back (perhaps on another device). Reload the list of actions.

Pokladna

Receipts

codeHTTPnázev a co dělattitle and what to do
price_changed409
Cena se změnila; načtěte sortiment znovuCena se liší od sortimentu. Načtěte sortiment znovu (getCatalog) a účtenku sestavte znovu; jinou cenu musí schválit vedoucí pokladny.
A price changed; reload the catalogA price differs from the catalog. Reload the catalog (getCatalog) and build the receipt again; a different price needs a register manager.
manager_approval_required403
Tohle musí schválit vedoucí pokladnyTohle musí schválit vedoucí pokladny: přihlaste ho na zařízení, nebo s požadavkem pošlete manager_credential (jeho PIN nebo čip).
A register manager must approve thisThis needs a register manager: sign one in on the device, or send manager_credential (the PIN or card of the manager) with the request.
receipt_id_conflict409
Toto id už má jiná účtenkaToto id patří jiné účtence (jiné zařízení nebo číslo). Každá nová účtenka potřebuje nové UUID; účtenku opakujte jen beze změny s jejím id.
Another receipt already has this idThis id belongs to another receipt (another device or number). Give every new receipt a new UUID; repeat a receipt only unchanged with its own id.
receipt_number_conflict409
Toto číslo účtenky zařízení už použiloZařízení už s tímto číslem vystavilo jinou účtenku (existing_id). Opravte čítač zařízení – pokračujte za nejvyšším vystaveným číslem – a účtenku vystavte s dalším číslem.
The device already used this receipt numberThe device already issued another receipt with this number (existing_id). Fix the counter of the device – continue after the highest number it issued – and issue the receipt with the next number.
receipt_already_cancelled409
Účtenka už je stornovanáÚčtenka už je stornovaná; není co dalšího dělat. Storno ukáže getReceipt.
The receipt is already cancelledThe receipt already has a storno; there is nothing more to do. getReceipt shows it.
receipt_not_cancellable409
Účtenku nejde stornovatÚčtenku nejde stornovat – proč, říká detail (sama je storno, prodaný voucher se už použil, platbu voucherem nejde vrátit). Nejdřív vyřešte příčinu, nebo vystavte novou účtenku.
The receipt cannot be cancelledThe receipt cannot be cancelled – detail says why (it is a storno itself, a sold voucher was already used, a voucher payment cannot be returned). Settle the cause first, or issue a new receipt.
receipt_payment_not_changeableod 26.11.28since 26.11.28409
Platbu této účtenky změnit nejdeMěnit jdou jen platby hotově, stravenkami, na firemní účet a fakturou – proč tahle ne, říká detail (je to storno doklad, nebo je účtenka zaplacená jen kartou či dárkovým voucherem). Vrácení na kartu nebo na voucher jde jen stornem (cancelReceipt) a novou účtenkou.
The payment of this receipt cannot changeOnly cash, meal voucher, company account and invoice payments change – detail says why this one cannot (it is a cancellation document, or the receipt is paid only by card or gift voucher). A refund to a card or a voucher goes only through a cancellation (cancelReceipt) and a new receipt.
pos_shift_closedod 26.11.28since 26.11.28409
Směna účtenky je už uzavřenáÚčtenka patří do uzavřené směny – hotovost už je spočítaná, pokladna její platbu změnit nesmí. Změnu udělá administrace, nebo účtenku stornujte a vystavte novou.
The shift of the receipt is already closedThe receipt belongs to a closed shift – its cash was already counted, so the register cannot change its payment. Let the administration change it, or cancel the receipt and issue a new one.
issued_at_out_of_range422
Účtenka je moc stará nebo v budoucnostiissued_at je starší než 7 dní (u účtenky pořízené offline 62 dní) nebo víc než 5 minut napřed proti serveru. Zkontrolujte hodiny zařízení.
The receipt is too old or in the futureissued_at is more than 7 days old (62 days for a receipt recorded offline) or more than 5 minutes ahead of the server. Check the clock of the device.
pos_shift_empty409
Ve směně není co uzavřítVe směně není co uzavřít; uzávěrka není potřeba.
There is nothing to close in this shiftThere is nothing to close in the shift; no close is needed.
cash_book_not_startedod 26.10.4since 26.10.4409
Pokladní kniha ještě nezačalaNejdřív zapište počáteční stav – vedoucí pokladny s kind opening, nebo majitel v administraci (Statistiky → Pokladní kniha). Pak pohyb pošlete znovu.
The cash book has not startedRecord the opening balance first – a register manager with kind opening, or the owner in the administration (Statistics → Cash book). Then send the movement again.
cash_book_already_startedod 26.10.4since 26.10.4409
Pokladní kniha už má počáteční stavPočáteční stav se zapisuje jednou. Když kasa nesedí s knihou, udělejte kontrolu pokladny v administraci (Statistiky → Pokladní kniha).
The cash book already has an opening balanceThe opening balance is recorded once. When the drawer does not match the book, do a cash check in the administration (Statistics → Cash book).
voucher_not_for_sale422
Voucher nejde prodatTento voucher nejde prodat – už je prodaný nebo použitý, jeho prodej není povolený, nebo je cena vyšší než jeho hodnota. Zvolte jiný voucher.
The voucher cannot be soldThis voucher cannot be sold – it is already sold or used, its sale is not allowed, or the price is above its value. Choose another voucher.
tab_closed409
Účet stolu je už uzavřenýÚčet stolu je už uzavřený (třeba na jiném zařízení). Na další objednávky otevřete nový účet.
The tab is already closedThe tab is already closed (perhaps on another device). Open a new tab for further orders.
stock_taking_id_conflict409
Toto id už má jiná inventuraToto id patří jiné inventuře. Každá nová inventura potřebuje nové UUID.
Another stock taking already has this idThis id belongs to another stock taking. Give every new stock taking a new UUID.

Objednávání od stolu

Ordering from the table

codeHTTPnázev a co dělattitle and what to do
table_not_foundod 26.10.4since 26.10.4404
Žádný stůl nemá tento kódZkontrolujte kód pod QR kódem (8 znaků). Podnik možná vytiskl nové kódy – naskenujte znovu QR kód na stole.
No table has this codeCheck the code under the QR code (8 characters). The restaurant may have printed new codes – scan the QR code on the table again.
visit_endedod 26.10.4since 26.10.4410
Návštěva stolu skončilaÚčet se zaplatil nebo obsluha návštěvu ukončila a s ní skončil i token telefonu. Novou relaci nezakládejte sami; nabídněte hostovi, ať QR kód naskenuje znovu.
The visit of the table has endedThe tab was paid or the staff ended the visit, and the token of the phone ended with it. Do not start a new session by yourself; offer the guest to scan the QR code again.
ordering_pausedod 26.10.4since 26.10.4422
Objednávky od stolu jsou pozastavenéObsluha na chvíli pozastavila nové objednávky; zavolat obsluhu jde dál. Zkuste to později.
Orders from the table are pausedThe staff paused new orders for a while; calling the staff still works. Try again later.
table_not_openod 26.10.4since 26.10.4422
Stůl nemá otevřený účetPodnik bere objednávky od stolu jen na účet, který otevřela obsluha. Zavolejte obsluhu.
The table has no open tabThe restaurant takes orders from the table only to a tab the staff opened. Call the staff.
device_not_verifiedod 26.10.4since 26.10.4403
Telefon u stolu není ověřenýÚčet vidí jen telefon skupiny: zadejte kód od kamaráda u stolu, nebo počkejte, až obsluha přijme první objednávku tohoto telefonu.
This phone is not verified at the tableOnly a phone of the party sees the tab: enter the code from a friend at the table, or wait until the staff accepts the first order of this phone.
join_code_invalidod 26.10.4since 26.10.4422
Špatný kód od kamarádaKód nesedí s kódem stolu. Zeptejte se kamaráda u stolu na aktuální kód; attempts_left říká, kolik pokusů zbývá.
Wrong code from a friendThe code does not match the code of the table. Ask a friend at the table for the current code; attempts_left says how many attempts are left.
join_lockedod 26.10.4since 26.10.4423
Příliš mnoho špatných kódůTento telefon zadal špatný kód příliš mnohokrát. Odemkne ho obsluha; objednávat jde dál a objednávky čekají na obsluhu.
Too many wrong codesThis phone entered a wrong code too many times. The staff unlocks it; ordering still works and the orders wait for the staff.
join_not_availableod 26.10.4since 26.10.4409
Přidání kódem není k dispoziciPodnik kód od kamaráda nepoužívá, nebo stůl nemá otevřenou návštěvu. Objednejte jako obvykle – první objednávku potvrdí obsluha.
Joining by a code is not availableThe restaurant does not use codes from friends, or the table has no open visit. Order as usual – the staff confirms the first order.
product_not_orderableod 26.10.4since 26.10.4422
Tento produkt nejde objednat od stoluProdukt není v menu pro stůl (errors ukazuje na řádek). Načtěte menu znovu; tento produkt objednejte u obsluhy.
This product cannot be ordered from the tableThe product is not in the menu for the table (errors points at the line). Reload the menu; order this product from the staff.
too_many_pending_ordersod 26.10.4since 26.10.4409
Na obsluhu čeká příliš mnoho objednávekObjednávky tohoto telefonu ještě čekají na obsluhu. Počkejte, až o nich rozhodne, a pak objednejte znovu.
Too many orders wait for the staffOrders of this phone still wait for the staff. Wait until the staff decides about them, then order again.
order_not_pendingod 26.10.4since 26.10.4409
Objednávka už na obsluhu nečekáO objednávce mezitím někdo rozhodl – byla přijata, odmítnuta, zrušena nebo propadla. Načtěte znovu její stav.
The order no longer waits for the staffSomeone decided about the order meanwhile – it was accepted, rejected, cancelled or it expired. Read its state again.
restaurant_offlineod 26.10.4since 26.10.4503
Hlavní kasa podniku není připojenáŽádost by teď nikdo nepřevzal. Zkuste to za minutu, nebo požádejte obsluhu; na Wi-Fi podniku objednávání fungovat může.
The main register of the restaurant is not connectedNobody would take the request over now. Try again in a minute or ask the staff; on the Wi-Fi of the restaurant ordering may work.
inbox_item_conflictod 26.10.4since 26.10.4409
Žádost už je rozhodnutá jinakTato položka schránky už má jiný výsledek. Neměňte ho; pozdější stavy posílejte přes putTableState.
The request was already decided differentlyThis item of the inbox already has another result. Do not change it; send later states with putTableState.
main_device_conflictod 26.10.4since 26.10.4409
Hlavní kasou je jiné zařízeníHeartbeat objednávání od stolu posílá jiné zařízení provozovny. Na tomto zařízení objednávání od stolu vypněte, nebo převezměte 90 sekund po tom, co to druhé přestane.
Another device is the main registerAnother device of the restaurant sends the heartbeat of ordering from the table. Turn ordering from the table off on this device, or take over 90 seconds after the other one stops.

Logy zařízení

Device logs

codeHTTPnázev a co dělattitle and what to do
upload_closedod 26.10.6since 26.10.6409
Nahrávání logu je dokončené nebo prošléNahrávání bylo dokončené, vzdané, stažené nebo jeho žádost vypršela. Nic dalšího do něj neposílejte; počkejte na nový příkaz upload_logs.
The log upload is finished or expiredThe upload was completed, given up, withdrawn or its request expired. Send nothing more to it; wait for a new upload_logs command.
upload_incompleteod 26.10.6since 26.10.6422
Části nahrávání logu chybídetail vypisuje čísla chybějících částí. Pošlete je přes putLogUploadPart a nahrávání dokončete znovu.
Parts of the log upload are missingdetail lists the numbers of the missing parts. Send them with putLogUploadPart and complete the upload again.