Orsoft Doku
Dokumentace a nápověda pro IS Orsoft Open

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ář:

  1. 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.
  2. 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.
  3. Spuštění SCbrowseru:
    • Koncový uživatel spustí SCbrowser.exe.
    • SCbrowser je připraven komunikovat s MOPS klientem pomocí Win32Eventů.
  4. 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.
  5. 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ů.
  6. 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}