Webhooky
Webhooky umožňujú zasielanie informácií o nejakej udalosti, ktorá v systéme nastane. Napr. vytvorenie alebo editácia objednávky. Systém pri každej z týchto udalostí pošle HTTP požiadavku na URL adresu nastavenú vo webhooku.
URL adresa nastavená vo webhooku sa volá ako POST požiadavka, v tele požiadavky je JSON, ktorého obsahom je zoznam identifikátorov entít zo systému (napr. objednávok). Bližší popis je pri každom type webhooku. Súčasťou tela požiadavky je tiež názov e-shopu v Upgates.
Každý webhook vytvorený v systéme je viazaný na užívateľa API, ktorý ho vytvoril. Pokiaľ tento užívateľ nemá práva napr. na endpoint objednávok, nepôjde mu vytvoriť ani webhook na udalosti spojené s objednávkami. Rovnako to funguje aj pre iné typy webhookov. Pokiaľ užívateľ má webhook vytvorený a sú mu zmenené oprávnenia, webhook sa deaktivuje.
POST požiadavka na URL adresu nastavenú vo webhooku bude očakávať odpoveď 200 OK
alebo 204 No Content
. Timeout je nastavený na jednu sekundu. Tzn. vo vybavení požiadavky na strane servera volaného webhookom by sa nemali údaje priamo spracovávať. Len si údaje uložiť a vrátiť príslušný stavový kód. V prípade zlej odpovede bude systém odosielať webhook každých 5 minút až do chvíle, kým dostane správnu odpoveď. Pokiaľ systém počas 12 hodín ani raz nedostane správnu odpoveď, webhook sa deaktivuje.
Správa webhookov
Správa webhookov (vytvorenie, editácia, zmazanie) je možná iba cez API. Viac nájdete v dokumentácii k Webhook API.
Vytvorenie objednávok (Orders.create)
-
telo:
project_name
(string) - názov e-shopuorders
(array) - pole objektov s objednávkamiorder_number
(string) - číslo objednávkycreation_time
(datetime) - čas vytvorenia
-
príklad požiadavky
{ "project_name": "", "orders": [ { "order_number": "", "creation_time": "" } ] }
Aktualizácia objednávok (Orders.update)
-
telo:
project_name
(string) - názov e-shopuorders
(array) - pole objektov s objednávkamiorder_number
(string) - číslo objednávkylast_update_time
(datetime) - čas poslednej aktualizácie
-
príklad požiadavky
{ "project_name": "", "orders": [ { "order_number": "", "last_update_time": "" } ] }
Zmazanie objednávok (Orders.delete)
-
telo:
project_name
(string) - názov e-shopuorders
(array) - pole objektov s objednávkamiorder_number
(string) - číslo objednávkydeletion_time
(datetime) - čas zmazania
-
príklad požiadavky
{ "project_name": "", "orders": [ { "order_number": "", "deletion_time": "" } ] }
Vytvorenie zákazníkov (Customers.create)
-
telo:
project_name
(string) - názov e-shopucustomers
(array) - pole objektov so zákazníkmicustomer_id
(int) - ID zákazníkaemail
(string) - email zákazníkacode
(string) - kód zákazníkacreation_time
(datetime) - čas vytvorenia
-
príklad požiadavky
{ "project_name": "", "customers": [ { "customer_id": "", "email": "", "creation_time": "" } ] }
Aktualizácia zákazníkov (Customers.update)
-
telo:
project_name
(string) - názov e-shopucustomers
(array) - pole objektov so zákazníkmicustomer_id
(int) - ID zákazníkaemail
(string) - email zákazníkacode
(string) - kód zákazníkalast_update_time
(datetime) - čas poslednej aktualizácie
-
príklad požiadavky
{ "project_name": "", "customers": [ { "customer_id": "", "email": "", "last_update_time": "" } ] }
Zmazanie zákazníkov (Customers.delete)
-
telo:
project_name
(string) - názov e-shopucustomers
(array) - pole objektov so zákazníkmicustomer_id
(int) - ID zákazníkaemail
(string) - email zákazníkacode
(string) - kód zákazníkadeletion_time
(datetime) - čas zmazania
-
príklad požiadavky
{ "project_name": "", "customers": [ { "customer_id": "", "email": "", "deletion_time": "" } ] }
Vytvorenie produktov (Products.create)
-
telo:
project_name
(string) - názov e-shopuproducts
(array) - pole objektov s produktmiproduct_id
(int) - ID produktucode
(string) - kód produktucreation_time
(datetime) - čas vytvorenia
-
príklad požiadavky
{ "project_name": "", "products": [ { "product_id": "", "code": "", "creation_time": "" } ] }
Aktualizácia produktov (Products.update)
-
telo:
project_name
(string) - názov e-shopuproducts
(array) - pole objektov s produktmiproduct_id
(int) - ID produktucode
(string) - kód produktulast_update_time
(datetime) - čas poslednej aktualizácie
-
príklad požiadavky
{ "project_name": "", "products": [ { "product_id": "", "code": "", "last_update_time": "" } ] }
Zmazanie produktov a variant (Products.delete)
-
telo:
project_name
(string) - názov e-shopuproducts
(array) - pole objektov s produktmiproduct_id
(int) - ID produktucode
(string) - kód produktudeletion_time
(datetime) - čas zmazania
variants
(array) - pole objektov s variantmivariant_id
(int) - ID variantycode
(string) - kód variantydeletion_time
(datetime) - čas zmazania
-
príklad požiadavky
{ "project_name": "", "products": [ { "product_id": "", "code": "", "deletion_time": "" } ], "variants": [ { "variant_id": "", "code": "", "deletion_time": "" } ], }
Vytvorenie kategórií (Categories.create)
-
telo:
project_name
(string) - názov e-shopucategories
(array) - pole objektov s kategóriamicategory_id
(int) - ID kategóriecode
(string) - kód kategóriecreation_time
(datetime) - čas vytvorenia
-
príklad požiadavky
{ "project_name": "", "categories": [ { "category_id": "", "code": "", "creation_time": "" } ] }
Aktualizácia kategórií (Categories.update)
-
telo:
project_name
(string) - názov e-shopucategories
(array) - pole objektov s kategóriamicategory_id
(int) - ID kategóriecode
(string) - kód kategórielast_update_time
(datetime) - čas poslednej aktualizácie
-
príklad požiadavky
{ "project_name": "", "categories": [ { "category_id": "", "code": "", "last_update_time": "" } ] }
Zmazanie kategórií (Categories.delete)
-
telo:
project_name
(string) - názov e-shopucategories
(array) - pole objektov s kategóriamicategory_id
(int) - ID kategóriecode
(string) - kód kategóriedeletion_time
(datetime) - čas zmazania
-
príklad požiadavky
{ "project_name": "", "categories": [ { "category_id": "", "code": "", "deletion_time": "" } ] }