TracePRO API

Tohle je základní API pro TracePRO, které používá klient dodávaný s TracePRO. Na použití tohoto API je potřeba speciální podpora. Zde popisujeme některé jeho části, ale před tím, než jej začnete používat, konzultujte dodavatele TracePRO.

Připojení

API je implementováno jako jsonrpc. Pro python3 doporučujeme knihovnu jsonrpclib. Pro python2 je asi nejvhodnější jsonrpc-requests. Potřebujete endpoint API serveru, což je vlastně adresa TracePRO s přidáním api. Např.: https://traceability.cz/api.

Pak v jsonrpclib:

from jsonrpclib import Server
server = Server("https://traceability.cz/api")

user_info = server.login(1000)

Obecně vzato, pokud dojde k chybě, může server vrátit buď HTTP chybový kód, nebo JSON s chybovým kódem. JSON má pak strukturu:

{
    "__error__": "error-code",
    "info": "Localized Error Message"
}

ESD API

Tato část API se dá použít k záznamu testování ESD k pracovníkům.

login:

Vrací informace o pracovníkovi. Parametr: worker_id:

server.login(54) => {'erp_id': 'Martin Novák',        # jméno z ERP
                     'esd_tm': '2024-09-26T09:38:37', # datum a čas posledního úspěšného ESD testu
                     'id': 1000,                      # interní ID uživatele
                     'name': 'Martin Novák', }        # jméno uživatele

Tato funkce nemění stav serveru. Lze použít jen k ověření uživatele. Podle nastavení systému může testovat další parametry, např. ESD, ILUO, …

getworkerbycard:

Vrátí informace o pracovníkovi podle čipové karty. Parametr: card:

server.getworkerbycard("123456") => {'erp_id': 'Martin Novák',
                                     'esd_tm': '2024-09-26T09:38:37',
                                     'id': 1000,
                                     'name': 'Martin Novák', }

Pokud nebyla karta nalezena, vrátí chybu.

setworkeresd:

Nastaví stav ESD testu pracovníka. Parametry: worker_id, passed:

server.setworkeresd(1000, True) => {'erp_id': 'Martin Novák',
                                    'esd_tm': '2024-09-26T09:38:37',
                                    'id': 1000,
                                    'name': 'Martin Novák', }

server.setworkeresd(1000, True) => {'erp_id': 'Martin Novák',
                                    'esd_tm': None,
                                    'id': 1000,
                                    'name': 'Martin Novák', }

setworkercard:

Lze použít k nastavení čísla karty pracovníka. Parametry: worker_id, card. Tato funkce je speciální v tom, že pokud pracovník nebyl nalezen, je založen:

server.setworkercard(1000, "123456") => {'erp_id': 'Martin Novák',
                                         'esd_tm': '2024-09-26T09:38:37',
                                         'id': 1000,
                                         'name': 'Martin Novák', }

# neexistující pracovník:
server.setworkercard(9009, "654321") => {'erp_id': '9009',
                                         'esd_tm': '2024-09-26T09:38:37',
                                         'id': 1000,
                                         'name': 'Martin Novák', }

logworkeraction:

TracePRO vytváří záznamy o některých akcích spojených s pracovníkem. Tato funkce umožňuje udělat takový záznam. Mějte na paměti, že:

  • Funkce má sloužit pouze pro informativní zápis akcí, které nemají na nic návaznost. Může to být např. ESD testování náramku.

  • Funkce nemá žádný vedlejší efekt, jen zapíše záznam.

  • Záznamy se pro některé akce provádějí automaticky (login, logout, esd). Pokud je budete zaznamenávat přímo, můžete tím způsobit zmatek.

  • Záznamy lze prohlížet na adrese //tracepro/e/WWorkerLog.

Příklad:

# záznam pro pracovníka č. 1000 na pracovišti 315 (může být null),
# akce č.7, prázdná poznámka
server.logworkeraction(1000, 315, 7, "")

Možné hodnoty pro akci, z nich doporučujeme používat pouze 6, 7, 8.:

WWL_LOGIN = 1
WWL_LOGIN_FAILED = 2
WWL_LOGOUT = 3
WWL_ESD_PASSED = 4
WWL_ESD_FAILED = 5
WWL_ESD_BRACELET_PASSED = 6
WWL_ESD_BRACELET_FAILED = 7
WWL_INFO = 8

PowerShell

Pro rychlý test můžete použít PowerShell. Např. funkce login lze přes PowerShell vyvolat takto:

$Body = @{
  jsonrpc = "2.0"
  method = "login"
  params = @(
    1000
  )
  id = [guid]::NewGuid()
} | ConvertTo-Json
Invoke-WebRequest -Uri 'https://traceability.cz/api' -Method POST -Body $Body

Reference