Webhooky
Webhooky umožňují zasílání informací o nějaké události, která v systému nastane. Např. vytvoření nebo editace objednávky. Systém při každé z těchto událostí pošle HTTP požadavek na URL adresu nastavenou ve webhooku.
URL adresa nastavená ve webhooku se volá jako POST požadavek, v těle požadavku je JSON, jehož obsahem je seznam identifikátorů entit ze systému (např. objednávek). Bližší popis je u každého typu webhooku. Součástí těla požadavku je také název e-shopu v Upgates.
Každý webhook vytvořený v systému je vázán na uživatele API, který ho vytvořil. Pokud tento uživatel nemá práva např. na endpoint objednávek, nepůjde mu vytvořit ani webhook na události spojené s objednávkami. Stejně to funguje i pro jiné typy webhooků. Pokud uživatel má webhook vytvořen a jsou mu změněna oprávnění, webhook se deaktivuje.
POST požadavek na URL adresu nastavenou ve webhooku bude očekávat odpověď 200 OK
nebo 204 No Content
. Timeout je nastavený na jednu vteřinu. Tzn. ve vyřízení požadavku na straně serveru volaného webhookem by se neměla data přímo zpracovávat. Pouze si data uložit a vrátit příslušný stavový kód. Pokud toto není splněno a nepodaří se URL adresu během 12-ti hodin ani jednou zavolat se správnou odpovědí, webhook se deaktivuje.
Správa webhooků
Správa webhooků (vytvoření, editace, smazání) jde pouze přes API. Více najdete v dokumentaci k Webhook API.
Vytvoření objednávek (Orders.create)
-
tělo:
project_name
(string) - název e-shopuorders
(array) - pole objektů s objednávkamiorder_number
(string) - číslo objednávkycreation_time
(datetime) - čas vytvoření
-
příklad požadavku
Content-Type: application/json { "project_name": "", "orders": [ { "order_number": "", "creation_time": "" } ] }
Aktualizace objednávek (Orders.update)
-
tělo:
project_name
(string) - název e-shopuorders
(array) - pole objektů s objednávkamiorder_number
(string) - číslo objednávkylast_update_time
(datetime) - čas poslední aktualizace
-
příklad požadavku
Content-Type: application/json { "project_name": "", "orders": [ { "order_number": "", "last_update_time": "" } ] }
Vytvoření zákazníků (Customers.create)
-
tělo:
project_name
(string) - název e-shopucustomers
(array) - pole objektů se zákazníkycustomer_id
(int) - ID zákazníkaemail
(string) - email zákazníkacreation_time
(datetime) - čas vytvoření
-
příklad požadavku
Content-Type: application/json { "project_name": "", "customers": [ { "customer_id": "", "email": "", "creation_time": "" } ] }
Aktualizace zákazníků (Customers.update)
-
tělo:
project_name
(string) - název e-shopucustomers
(array) - pole objektů se zákazníkycustomer_id
(int) - ID zákazníkaemail
(string) - email zákazníkalast_update_time
(datetime) - čas poslední aktualizace
-
příklad požadavku
Content-Type: application/json { "project_name": "", "customers": [ { "customer_id": "", "email": "", "last_update_time": "" } ] }
Vytvoření produktů (Products.create)
-
tělo:
project_name
(string) - název e-shopuproducts
(array) - pole objektů s produktyproduct_id
(int) - ID produktucode
(string) - kód produktucreation_time
(datetime) - čas vytvoření
-
příklad požadavku
Content-Type: application/json { "project_name": "", "products": [ { "product_id": "", "code": "", "creation_time": "" } ] }
Aktualizace produktů (Products.update)
-
tělo:
project_name
(string) - název e-shopuproducts
(array) - pole objektů s produktyproduct_id
(int) - ID produktucode
(string) - kód produktulast_update_time
(datetime) - čas poslední aktualizace
-
příklad požadavku
Content-Type: application/json { "project_name": "", "products": [ { "product_id": "", "code": "", "last_update_time": "" } ] }
Vytvoření kategorií (Categories.create)
-
tělo:
project_name
(string) - název e-shopucategories
(array) - pole objektů s kategoriemicategory_id
(int) - ID kategoriecode
(string) - kód kategoriecreation_time
(datetime) - čas vytvoření
-
příklad požadavku
Content-Type: application/json { "project_name": "", "categories": [ { "category_id": "", "code": "", "creation_time": "" } ] }
Aktualizace kategorií (Categories.update)
-
tělo:
project_name
(string) - název e-shopucategories
(array) - pole objektů s kategoriemicategory_id
(int) - ID kategoriecode
(string) - kód kategorielast_update_time
(datetime) - čas poslední aktualizace
-
příklad požadavku
Content-Type: application/json { "project_name": "", "categories": [ { "category_id": "", "code": "", "last_update_time": "" } ] }