Interní API pro aplikaci Comgate Pokladna: aktivace zařízení, vydávání krátkodobých tokenů a doručování konfigurace.
Aktivace (jednou za instalaci)POST /pos/pokladna-api/activate pod bootstrap HTTP Basic přístupem. Fyzický POS se prokáže sériovým číslem (zero-touch), SoftPOS aktivačním kódem vydaným pro propojení obchodu. Odpověď obsahuje dlouhoživotný opaque deviceToken a plnou konfiguraci.
Autentizace (opakovaně)POST /pos/pokladna-api/authenticate s Authorization: Bearer [deviceToken] vrátí krátkodobý JWT a configVersion.
KonfiguraceGET /pos/pokladna-api/config s Authorization: Bearer [JWT]. Kdykoli se configVersion liší od uložené, stáhněte konfiguraci znovu — změny se doručují bez push notifikací.
Chybové stavy — závazné pravidlo pro klienta
Aplikace se přepne do stavu „deaktivováno“ VÝHRADNĚ na errorCode == 'DEVICE_REVOKED'. TOKEN_EXPIRED znamená jeden refresh tokenu, RATE_LIMITED, 5xx a timeouty znamenají backoff a nic víc — jinak by výpadek internetu zamkl pokladnu.
Vše, s čím komunikuje samotná pokladna: aktivace, vydávání tokenů, konfigurace, nahrávání transakcí, uzávěrek a logů a katalog položek. Všechno vyžaduje přístupy zařízení.
Vydá dlouhoživotný device token a plnou konfiguraci. Fyzický POS se identifikuje sériovým číslem, SoftPOS aktivačním kódem svého propojení obchodu. Opakování volání je bezpečné a nepotřebuje idempotenční klíč — poslední vydaný token vyhrává a předchozí padá, protože aplikace ještě žádný token nedrží. Uložte si connectionId; pokud pozdější aktivace vrátí jiné, aplikace ji musí odmítnout a vyžádat nejdřív vymazání dat.
| platform required | string Enum: "POS" "SOFTPOS" Musí odpovídat typu terminálu na propojení obchodu. |
| serialNumber | string Povinné pro POS, u SOFTPOS musí být prázdné. |
| activationCode | string Povinné pro SOFTPOS, u POS musí být prázdné. |
| appVersion | string <= 64 characters Nepovinná verze aplikace, drží se pro diagnostiku. |
| deviceToken | string |
| deviceId | integer |
| configVersion | integer |
| connectionState | string Enum: "ACTIVE" "PENDING_DEACTIVATION" |
| config | object Stejná struktura jako GET /pos/pokladna-api/config. |
| errorMessage | string Chybová zpráva pro člověka. |
| errorCode | string Enum: "INVALID_REQUEST" "UNAUTHORIZED" "TOKEN_EXPIRED" "DEVICE_REVOKED" "ACTIVATION_BLOCKED" "CONNECTION_DEACTIVATED" "CONNECTION_NOT_READY" "DEVICE_NOT_REGISTERED" "ACTIVATION_CODE_UNKNOWN" "ACTIVATION_CODE_USED" "AMBIGUOUS_INPUT" "RATE_LIMITED" "INTERNAL_ERROR" Strojově čitelný kód chyby. Do stavu „deaktivováno“ smí aplikaci přepnout jedině DEVICE_REVOKED. Nevalidní JSON tělo je odmítnuto před dispatchem a vrací 400 bez errorCode — berte ho jako INVALID_REQUEST. |
| errorMessage | string Chybová zpráva pro člověka. |
| errorCode | string Enum: "INVALID_REQUEST" "UNAUTHORIZED" "TOKEN_EXPIRED" "DEVICE_REVOKED" "ACTIVATION_BLOCKED" "CONNECTION_DEACTIVATED" "CONNECTION_NOT_READY" "DEVICE_NOT_REGISTERED" "ACTIVATION_CODE_UNKNOWN" "ACTIVATION_CODE_USED" "AMBIGUOUS_INPUT" "RATE_LIMITED" "INTERNAL_ERROR" Strojově čitelný kód chyby. Do stavu „deaktivováno“ smí aplikaci přepnout jedině DEVICE_REVOKED. Nevalidní JSON tělo je odmítnuto před dispatchem a vrací 400 bez errorCode — berte ho jako INVALID_REQUEST. |
| errorMessage | string Chybová zpráva pro člověka. |
| errorCode | string Enum: "INVALID_REQUEST" "UNAUTHORIZED" "TOKEN_EXPIRED" "DEVICE_REVOKED" "ACTIVATION_BLOCKED" "CONNECTION_DEACTIVATED" "CONNECTION_NOT_READY" "DEVICE_NOT_REGISTERED" "ACTIVATION_CODE_UNKNOWN" "ACTIVATION_CODE_USED" "AMBIGUOUS_INPUT" "RATE_LIMITED" "INTERNAL_ERROR" Strojově čitelný kód chyby. Do stavu „deaktivováno“ smí aplikaci přepnout jedině DEVICE_REVOKED. Nevalidní JSON tělo je odmítnuto před dispatchem a vrací 400 bez errorCode — berte ho jako INVALID_REQUEST. |
| errorMessage | string Chybová zpráva pro člověka. |
| errorCode | string Enum: "INVALID_REQUEST" "UNAUTHORIZED" "TOKEN_EXPIRED" "DEVICE_REVOKED" "ACTIVATION_BLOCKED" "CONNECTION_DEACTIVATED" "CONNECTION_NOT_READY" "DEVICE_NOT_REGISTERED" "ACTIVATION_CODE_UNKNOWN" "ACTIVATION_CODE_USED" "AMBIGUOUS_INPUT" "RATE_LIMITED" "INTERNAL_ERROR" Strojově čitelný kód chyby. Do stavu „deaktivováno“ smí aplikaci přepnout jedině DEVICE_REVOKED. Nevalidní JSON tělo je odmítnuto před dispatchem a vrací 400 bez errorCode — berte ho jako INVALID_REQUEST. |
| errorMessage | string Chybová zpráva pro člověka. |
| errorCode | string Enum: "INVALID_REQUEST" "UNAUTHORIZED" "TOKEN_EXPIRED" "DEVICE_REVOKED" "ACTIVATION_BLOCKED" "CONNECTION_DEACTIVATED" "CONNECTION_NOT_READY" "DEVICE_NOT_REGISTERED" "ACTIVATION_CODE_UNKNOWN" "ACTIVATION_CODE_USED" "AMBIGUOUS_INPUT" "RATE_LIMITED" "INTERNAL_ERROR" Strojově čitelný kód chyby. Do stavu „deaktivováno“ smí aplikaci přepnout jedině DEVICE_REVOKED. Nevalidní JSON tělo je odmítnuto před dispatchem a vrací 400 bez errorCode — berte ho jako INVALID_REQUEST. |
| errorMessage | string Chybová zpráva pro člověka. |
| errorCode | string Enum: "INVALID_REQUEST" "UNAUTHORIZED" "TOKEN_EXPIRED" "DEVICE_REVOKED" "ACTIVATION_BLOCKED" "CONNECTION_DEACTIVATED" "CONNECTION_NOT_READY" "DEVICE_NOT_REGISTERED" "ACTIVATION_CODE_UNKNOWN" "ACTIVATION_CODE_USED" "AMBIGUOUS_INPUT" "RATE_LIMITED" "INTERNAL_ERROR" Strojově čitelný kód chyby. Do stavu „deaktivováno“ smí aplikaci přepnout jedině DEVICE_REVOKED. Nevalidní JSON tělo je odmítnuto před dispatchem a vrací 400 bez errorCode — berte ho jako INVALID_REQUEST. |
| errorMessage | string Chybová zpráva pro člověka. |
| errorCode | string Enum: "INVALID_REQUEST" "UNAUTHORIZED" "TOKEN_EXPIRED" "DEVICE_REVOKED" "ACTIVATION_BLOCKED" "CONNECTION_DEACTIVATED" "CONNECTION_NOT_READY" "DEVICE_NOT_REGISTERED" "ACTIVATION_CODE_UNKNOWN" "ACTIVATION_CODE_USED" "AMBIGUOUS_INPUT" "RATE_LIMITED" "INTERNAL_ERROR" Strojově čitelný kód chyby. Do stavu „deaktivováno“ smí aplikaci přepnout jedině DEVICE_REVOKED. Nevalidní JSON tělo je odmítnuto před dispatchem a vrací 400 bez errorCode — berte ho jako INVALID_REQUEST. |
{- "platform": "POS",
- "serialNumber": "N920WA03787",
- "activationCode": "A1B2C3D4",
- "appVersion": "1.4.2 (142)"
}{- "deviceToken": "cgp_1_9x3Kf7QpZ2mR8vTn1LbY4sHc0eJdWgAu6iOo5r2NkPQ",
- "deviceId": 1234,
- "configVersion": 1,
- "connectionState": "ACTIVE",
- "config": { }
}Device token předejte v Authorization: Bearer [deviceToken]. Vrací krátkodobý JWT pro ostatní endpointy a configVersion — kdykoli se liší od uložené, stáhněte konfiguraci znovu. Revokovaný nebo překonaný device token vrací 401 DEVICE_REVOKED, což je jediný signál, který aplikaci přepne do stavu „deaktivováno“.
| appVersion | string <= 64 characters |
| token | string |
| expiry | string |
| configVersion | integer |
| catalogVersion | integer Nejvyšší verze položky v katalogu zařízení. Když se liší od uložené, stáhněte katalog položek znovu. |
| paymentCodesAt | integer or null <int64> Značka kódů plateb ke karetním transakcím. Když se liší od uložené, stáhněte kódy přes |
| connectionState | string Enum: "ACTIVE" "PENDING_DEACTIVATION" |
| minAppVersionCode | integer or null Nejnižší |
object or null Je v odpovědi jen tehdy, když si podpora vyžádala diagnostiku z tohoto zařízení. Posbírejte logy za posledních |
| errorMessage | string Chybová zpráva pro člověka. |
| errorCode | string Enum: "INVALID_REQUEST" "UNAUTHORIZED" "TOKEN_EXPIRED" "DEVICE_REVOKED" "ACTIVATION_BLOCKED" "CONNECTION_DEACTIVATED" "CONNECTION_NOT_READY" "DEVICE_NOT_REGISTERED" "ACTIVATION_CODE_UNKNOWN" "ACTIVATION_CODE_USED" "AMBIGUOUS_INPUT" "RATE_LIMITED" "INTERNAL_ERROR" Strojově čitelný kód chyby. Do stavu „deaktivováno“ smí aplikaci přepnout jedině DEVICE_REVOKED. Nevalidní JSON tělo je odmítnuto před dispatchem a vrací 400 bez errorCode — berte ho jako INVALID_REQUEST. |
| errorMessage | string Chybová zpráva pro člověka. |
| errorCode | string Enum: "INVALID_REQUEST" "UNAUTHORIZED" "TOKEN_EXPIRED" "DEVICE_REVOKED" "ACTIVATION_BLOCKED" "CONNECTION_DEACTIVATED" "CONNECTION_NOT_READY" "DEVICE_NOT_REGISTERED" "ACTIVATION_CODE_UNKNOWN" "ACTIVATION_CODE_USED" "AMBIGUOUS_INPUT" "RATE_LIMITED" "INTERNAL_ERROR" Strojově čitelný kód chyby. Do stavu „deaktivováno“ smí aplikaci přepnout jedině DEVICE_REVOKED. Nevalidní JSON tělo je odmítnuto před dispatchem a vrací 400 bez errorCode — berte ho jako INVALID_REQUEST. |
{- "appVersion": "1.4.2 (142)"
}{- "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJwb2tsYWRuYToxMjM0In0.dummy-signature",
- "expiry": "2026-08-06T10:15:00+00:00",
- "configVersion": 7,
- "catalogVersion": 47,
- "paymentCodesAt": 1758540120000,
- "connectionState": "ACTIVE",
- "minAppVersionCode": 142,
- "requestDebugLogs": {
- "requestId": "9f1c4e2b7a8d4f10b3c5d6e7f8a9b0c1",
- "days": 7
}
}Plná konfigurace pro zařízení autentizované JWT. env rozhoduje, se kterou platební aplikací se komunikuje, a nikdy se neodvozuje z prefixu TID. currencies se řídí nastavením obchodu. Revokace se kontroluje na každém volání, takže revokované zařízení přestane konfiguraci číst okamžitě, ne až po vypršení JWT.
| configVersion | integer |
| connectionId | integer |
| shopId | integer |
| platform | string Enum: "POS" "SOFTPOS" |
| serialNumber | string or null |
| env | string Enum: "PROD" "ACC" "INT" Prostředí terminálové sítě z propojení obchodu. |
| terminalId | string |
| merchantId | string |
| connectionState | string Enum: "ACTIVE" "PENDING_DEACTIVATION" |
object | |
Array of objects | |
object or null Jak pokladna nabízí spropitné. V odpovědi je jen tehdy, když se nastavilo v administraci - dokud klíč chybí, server názor nemá a rozhoduje volba v zařízení. Na rozdíl od | |
| receiptPrint | string Enum: "OFF" "MERCHANT" "CUSTOMER" "MERCHANT_AND_CUSTOMER" Komu pokladna tiskne prodejní účtenku. Nastavuje se per zařízení, protože na terminálu s Comgate Pokladnou tisk vlastní pokladna - tisk na terminálu se při aktivaci vypíná. U SoftPOSu je vždy |
| receiptHeader | string Enum: "BASIC" "PREMISES" "BILLING" Které údaje patří do hlavičky účtenky. |
| documentDeviceCode | string or null Dvojčíslí zařízení v čísle dokladu ( |
| reversalEnabled | boolean Smí obchodník stornovat karetní platbu? Týká se jen karetních operací - refundaci QR platby neomezuje. |
| refundEnabled | boolean Smí obchodník refundovat karetní platbu (návrat, i částečný)? Je to jiné oprávnění než |
object Kdy si obchodník přeje automatickou uzávěrku. Pokladna ji musí udělat sama: terminál v režimu ECR - a Comgate Pokladna ECR vždy potřebuje - má vlastní plánovač uzávěrky vypnutý. | |
| qrMoreOptions | boolean Smí pokladna nabídnout u nepotvrzené QR platby další možnosti (vydat zboží bez potvrzení, požadovat jiný způsob platby)? Vypnuto znamená, že obsluha jen čeká do expirace platby. Nastavuje se per zařízení. |
object or null Pravidla pro variabilní symbol, který smí obsluha zadat. V odpovědi je jen tehdy, když se nastavil v administraci - dokud klíč chybí, server názor nemá a rozhoduje přepínač v zařízení. | |
| defaultPin | string^[0-9]{4,12}$ Výchozí PIN chráněných funkcí aplikace (dnes Návrat). Řetězec, nikdy číslo - vedoucí nulu vyloučit nelze. Je to výchozí hodnota produktu, stejná pro všechna zařízení, takže ji lze hromadně změnit nasazením. Jakmile si obsluha PIN v aplikaci změní, tuhle hodnotu ignoruje a server se nový PIN nikdy nedozví. Chybějící klíč znamená, že aplikace použije vlastní výchozí hodnotu. |
| pinResetAt | integer or null <int64> |