Obsah
Dokumentace k REST API Konfigurátoru
Toto API poskytuje přístup ke konfigurátoru prostřednictvím několika endpointů. Podporuje operace pro získání vlastností konfigurátoru, nastavení vlastností a získání konfigurátoru na základě kódu. Je určeno primárně pro komunikaci s grafickým klientm SCbrowser na základě popisu: schema_2d_konfigurator_sapeli.pdf
Use Case: Integrace 2D konfigurátoru dveří SAPELI s SCbrowserem
Účel: Tento use case popisuje integraci 2D konfigurátoru dveří SAPELI s SCbrowserem, který umožňuje online překreslení dveří při změně parametrů a poskytuje různé módy zobrazení a export.
Aktéři:
- Koncový uživatel: Osoba používající MOPS klienta na svém počítači.
- MOPS klient: Desktopová aplikace u koncového uživatele.
- SCbrowser: Aplikace zobrazující náhled dveří na základě parametrů.
- MOPS server: Server poskytující data o sortimentu a konfiguracích dveří.
- SC server: Server poskytující 2D geometrie modelů a textury.
Předpoklady:
- Koncový uživatel má přístup k MOPS klientovi a SCbrowseru na svém počítači.
- MOPS klient je schopen autentizace a vytvoření zakázky.
- MOPS server a SC server jsou dostupné a funkční.
Scénář:
- Autentizace a přihlášení uživatele:
- Koncový uživatel spustí MOPS klienta.
- MOPS klient vyžádá přihlašovací údaje a autentizuje uživatele pomocí MOPS serveru.
- Vytvoření zakázky:
- Po úspěšné autentizaci uživatel zadá údaje nové zakázky.
- MOPS klient vytvoří zakázku a zašle změny parametrů do MOPS serveru.
- Spuštění SCbrowseru:
- Koncový uživatel spustí SCbrowser.exe.
- SCbrowser je připraven komunikovat s MOPS klientem pomocí Win32Eventů.
- Změna parametrů v konfigurátoru:
- Uživatel změní parametry dveří v MOPS klientovi.
- MOPS klient zašle změněné parametry do MOPS serveru, který vygeneruje data ve formátu JSON.
- Překreslení a aktualizace náhledu:
- SCbrowser obdrží Win32Event, že došlo ke změně parametrů.
- SCbrowser zašle žádost na webovou službu MOPS serveru s ID eventu.
- MOPS server vrátí vygenerovaná data ve formátu JSON.
- SCbrowser načte data a aktualizuje náhled dveří podle nových parametrů.
- Zobrazení a export:
- SCbrowser zobrazí dveře v základním zobrazení.
- Uživatel může přepnout na zobrazení kót, expertní mód, tisk nebo export do PDF.
Alternativní scénáře:
- Neplatné přihlašovací údaje:
- Pokud uživatel zadá neplatné přihlašovací údaje, MOPS klient zobrazí chybovou zprávu a neumožní přístup.
- Chyba při komunikaci s MOPS serverem:
- Pokud dojde k chybě při zasílání změněných parametrů do MOPS serveru, MOPS klient informuje uživatele a pokusí se o opětovné odeslání.
Výstupy:
- Aktuální náhled dveří v SCbrowseru.
- Možnost exportu konfigurace do PDF.
- Možnost tisku konfigurace.
Diagram sekvencí:
Koncový uživatel -> MOPS klient: Přihlášení MOPS klient -> MOPS server: Ověření přihlášení MOPS server -> MOPS klient: Potvrzení přihlášení Koncový uživatel -> MOPS klient: Zadání zakázky MOPS klient -> MOPS server: Vytvoření zakázky MOPS server -> MOPS klient: Potvrzení zakázky Koncový uživatel -> SCbrowser: Spuštění SCbrowser -> MOPS klient: Win32Event Koncový uživatel -> MOPS klient: Změna parametrů MOPS klient -> MOPS server: Odeslání parametrů MOPS server -> SCbrowser: Data ve formátu JSON SCbrowser -> Koncový uživatel: Aktualizace náhledu
Autentizace
Pro přístup k API je vyžadována autentizace. Každý požadavek musí obsahovat platný autentizační token v hlavičce. Token je získán prostřednictvím přihlašovacího procesu.
1. Přihlášení
- URL: `/auth/login`
- Metoda: `POST`
- Formát vstupu: `application/json`
- Formát výstupu: `application/json`
Parametry:
- `username` (string): Login do OR-SYSTEM Open.
- `password` (string): Heslo do OR-SYSTEM Open.
== Příklad požadavku: ==
<code json>
{
"username": "uzivatel",
"password": "tajneheslo"
}
</code>
== Příklad odpovědi: ==
<code json>
{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
}
</code>
2. Odhlášení
- URL: `/auth/logout`
- Metoda: `POST`
- Formát vstupu: `application/json`
- Formát výstupu: `application/json`
Parametry:
- `token` (string): Autentizační token, který má být zneplatněn.
== Příklad požadavku: ==
<code json>
{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
}
</code>
== Příklad odpovědi: ==
<code json>
{
"status": "OK"
}
</code>
3. Obnovení tokenu
- URL: `/auth/refresh`
- Metoda: `POST`
- Formát vstupu: `application/json`
- Formát výstupu: `application/json`
Parametry:
- `refreshToken` (string): Token pro obnovení autentizace.
== Příklad požadavku: ==
<code json>
{
"refreshToken": "dGVzdHJlZnJlc2h0b2tlbg=="
}
</code>
== Příklad odpovědi: ==
<code json>
{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"refreshToken": "dGVzdHJlZnJlc2h0b2tlbg=="
}
</code>
Endpointy
1. Získání konfigurátoru
Tento endpoint lze využít nezávisle na aplikaci SCbrowser. Po zadání kódu konfigurátoru, se získá seznam vlastností a popis konfigurátoru. SCbrowser si tyto hodnoty uloží a v dalších krocích pak pracuje s odkazy.
- URL: `/konfigurator/get_konfigurator`
- Metoda: `GET`
- Formát vstupu: `application/json`
- Formát výstupu: `application/json`
Parametry:
- `kodKonfiguratoru` (string): Kód konfigurátoru, který má být získán.
Příklad požadavku:
{
"kodKonfiguratoru": "V300"
}
Příklad odpovědi:
{
"cKonfiguratorVlastnostExports": [
{
"cKonfiguratorSadaExports": [
{
"cKonfiguratorHodnotas": [
{
"idpk": 42515733,
"kgsIdpk": 88069,
"hodnota": "MAX 0529 SG",
"kgnJn": "N"
},
{
"idpk": 42875093,
"kgsIdpk": 88069,
"hodnota": "F095-ST87",
"kgnJn": "N"
},
{
"idpk": 42796385,
"kgsIdpk": 88069,
"hodnota": "S 1005-Y10R",
"kgnJn": "N"
},
{
"idpk": 42797942,
"kgsIdpk": 88069,
"hodnota": "S 8505-B80G",
"kgnJn": "N"
},
{
"idpk": 42797061,
"kgsIdpk": 88069,
"hodnota": "S 2502-B",
"kgnJn": "N"
},
{
"idpk": 42515729,
"kgsIdpk": 88069,
"hodnota": "MAX 0502 MT",
"kgnJn": "N"
},
{
"idpk": 42797121,
"kgsIdpk": 88069,
"hodnota": "S 3010-Y10R",
"kgnJn": "N"
},
{
"idpk": 42797674,
"kgsIdpk": 88069,
"hodnota": "S 5040-G",
"kgnJn": "N"
},
{
"idpk": 42796743,
"kgsIdpk": 88069,
"hodnota": "S 1515-R90B",
"kgnJn": "N"
},
{
"idpk": 42797713,
"kgsIdpk": 88069,
"hodnota": "S 5540-B30G",
"kgnJn": "N"
},
{
"idpk": 41760882,
"kgsIdpk": 88069,
"hodnota": "POL C 047-FA",
"kgnJn": "N"
},
{
"idpk": 42577856,
"kgsIdpk": 88069,
"hodnota": "POL U 192-EXM",
"kgnJn": "N"
},
{
"idpk": 42796145,
"kgsIdpk": 88069,
"hodnota": "S 0520-B40G",
"kgnJn": "N"
},
{
"idpk": 43792167,
"kgsIdpk": 88069,
"hodnota": "H3317-ST28",
"kgnJn": "N"
}
],
"idpk": 88073,
"kgvIdpk": 3031,
"kod": "9999999999",
"stav": 0,
"nazev": "systémová",
"popis": " ",
"vksIdpk": 25225,
"ename": "klima ",
"edat": 20120425,
"def": "N",
"zmenaCis": 0,
"zmenaTyp": " ",
"typ": "B",
"typVyr": " ",
"kgqJn": "N",
"expJn": " ",
"aname": " ",
"adat": "Jan 1, 1900, 12:00:00 AM",
"iko": "KGS,88073"
}
],
"idpk": 3031,
"kgzIdpk": 112,
"pos": 80,
"stav": 0,
"typ": " ",
"por": 80,
"vkvIdpk": 713,
"vkzIdpk": 433,
"nazev": "Šířka",
"popis": " ",
"vlivIna": "N",
"inaOd": 0,
"inaDel": 0,
"vlivNaz": "N",
"nazOd": 0,
"nazDel": 0,
"vlivVar": "N",
"varOd": 0,
"varDel": 0,
"editJn": "N",
"algTyp": " ",
"pocSad": 1,
"ename": "klima ",
"edat": 20120425,
"typK": "N",
"vlivOzn1": "N",
"ozn1Od": 0,
"ozn1Del": 0,
"vlivOzn2": "N",
"ozn2Od": 0,
"ozn2Del": 0,
"format": "X20 ",
"an": "A",
"hal": 20,
"hnk": 0,
"pilJn": "N",
"defTsJn": "N",
"aJn": "N",
"vlV": "N",
"vlH": "N",
"kf": 0,
"exK": 0,
"hodMin": " ",
"hodMax": " ",
"nasob": "N",
"pismo": "N",
"testLim": " ",
"povJn": "J",
"defJn": "N",
"zmenaCis": 0,
"zmenaTyp": " ",
"prHl": "N",
"defImp": "N",
"kgnJn": "N",
"eshopJn": "N",
"mecNr": 0,
"tKgs": "B",
"kMkz": 6029,
"aname": "klima ",
"adat": "Apr 25, 2012, 11:12:14 AM",
"rPos": 0,
"nHodnota": " ",
"dObr": " ",
"lObr": " ",
"oTyp": " ",
"kSmc": 3915,
"cVlivVlastnost": {
"kgvIdpk": 3031,
"stav": 0,
"vliv01": "J",
"vliv02": "N",
"vliv03": "N",
"vliv04": "N",
"vliv05": "N",
"vliv06": "N",
"vliv07": "N",
"vliv08": "N",
"vliv09": "N",
"vliv10": "N",
"vliv11": "N",
"vliv12": "N",
"vliv13": "N",
"vliv14": "N",
"vliv15": "N",
"vliv16": "N",
"vliv17": "N",
"vliv18": "N",
"vliv19": "N",
"vliv20": "N",
"ename": "klima ",
"edat": 20120425,
"aname": " ",
"adat": "Jan 1, 1900, 12:00:00 AM"
},
"iko": "KGV,3031"
}
],
"kod": "V300 ",
"stav": 5,
"idpk": 112,
"nazev": "V_Obkladový systém ",
"popis": "V_Obkladový systém ",
"typ": "3",
"ename": "klima ",
"edat": 20120425,
"inaDel": 12,
"nazDel": 40,
"varDel": 30,
"ozn1Del": 30,
"ozn2Del": 30,
"doplV": "N",
"minPor": 0,
"maxPor": 999999,
"aktPor": 706,
"novy": "1",
"cenaJn": "M",
"defJn": "J",
"kgqJn": "N",
"zmenaJn": "N",
"zmenaCis": 0,
"hlD": "N",
"urceni": " ",
"cenMkz": 6464,
"aname": "linhova2",
"adat": "May 10, 2024, 4:05:36 PM",
"dObr": " ",
"lObr": " ",
"oKfgJn": " ",
"oKfgMkz": 0,
"cenSmc": 4441,
"oKfgSmc": 0,
"cSabKfg": {
"kgzIdpk": 112,
"stav": 0,
"inaR": "VD300- ",
"nazR": " ",
"varR": "V300 ",
"ename": "klima ",
"edat": 20120425,
"ozn1R": " ",
"ozn2R": " ",
"aname": "klima ",
"adat": "Apr 25, 2012, 9:50:06 AM"
},
"iko": "KGZ,112"
}
2. Získání vlastností konfigurátoru
Získání možných kombinací vlastností v daném kroku konfigurace na základě requestId. Tento endpointje určen pro komunikaci s aplikací SCbrowser.
- URL: `/konfigurator/get_properties`
- Metoda: `GET`
- Formát vstupu: `application/json`
- Formát výstupu: `application/json`
Parametry:
- `requestId` (integer): ID požadavku na získání vlastností.
Příklad požadavku:
{
"requestId": 123
}
Příklad odpovědi:
{
"99":"99",
"A":"B",
"HNormal":"K41167875",
"H---":"K42548837",
"H1970":"K41171997",
"HČeská":"K41171800",
"H10":"K41169333",
"H140 mm":"K41171276",
"HO3":"K41184219",
"Hbez":"K41189148",
"HLevé":"K41171795",
"HStandardní SATÉN":"K41178641",
"H600":"K41171004",
"HStandardní":"K41167772",
"HUpraveno":"K41186633",
"HByt.s polodr.dř.zár.":"K41312159",
"HCPL Dub 17 struktur":"K42423206",
"HJednokřídlové":"K41167888",
"H65 mm":"K41189122",
"HDveře+zárubeň":"K41167713",
"H80/10 SATÉN":"K41172161",
"HElegant Komfort":"K42120310",
"HV100-VD":"K41167706",
"HKOMFORT WC":"K42120396"
}
2. Nastavení vlastností konfigurátoru
Tento endpointje určen pro komunikaci s aplikací SCbrowser. Aktualizje změněné vlastnosti v grafické konfiguraci do OR-SYSTEMu.
- URL: `/konfigurator/set_properties`
- Metoda: `POST`
- Formát vstupu: `application/json`
- Formát výstupu: `application/json`
Parametry:
- `requestId` (integer): ID požadavku na nastavení vlastností.
Příklad požadavku:
{
"requestId": 123
}
Příklad odpovědi:
OK: {"message":"","status":200}
Výjimky a chyby
V případě chyb nebo výjimek API vrací chybové zprávy s popisem problému.
Příklad chybové odpovědi:
ERROR: {"message":"nenalezen kod V3100","status":500}