WEXBO API

ÚVOD

Táto dokumentácia poskytuje informácie o API rozhraní pre vývojárov, prostredníctvom ktorého je možné získať prístup do jednotlivých účtov (profilov) vedených v systéme WEXBO. Naše rozhranie API funguje ako webová služba REST, ktorá je založená na jednoduchej komunikácii s protokolom HTTP, pričom na výmenu dát využíva dátový formát JSON. Dokumentácia popisuje aktuálnu verziu označovanú ako v1.

Podrobné informácie o systéme WEXBO nájdete na stránkach https://wexbo.com.

Autorizácia

Každé volanie požiadavky na REST API musí byť autorizované. Vo všetkých volaniach tak musí byť prítomná HTTP hlavička Authorization obsahujúca API token, ktorý reprezentuje prístup ku konkrétnemu účtu.

Authorization: Bearer {API_TOKEN}požiadavkahttp

API token získate po prihlásení sa do administrácie vášho účtu cez https://admin.wexbo.com v sekcii DOPLNKY / PLUGINY v plugine s názvom API.

Návratový stavový kód HTTP pre volanie, pri ktorých nebol používateľ prihlásený, je 401 Unauthorized.

Požiadavka

HTTP metódy

Podporované sú bežné metódy protokolu HTTP, ktoré sa zvyčajne používajú medzi webovými službami REST. Každá metóda protokolu HTTP má inú funkciu, pričom spôsob výkladu je popísaný v nasledujúcom zozname:

CODEDESCRIPTION
GETNačítanie jedného alebo viacerých záznamov. Požiadavka neobsahuje žiadne telo, teda sa využívajú len URL parametre.
POSTVytvorenie nového záznamu. Požiadavka musí obsahovať telo vo formáte JSON, teda údaje záznamu, ktoré chcete pridať.
PUTÚprava či aktulizácia existujúceho záznamu. Požiadavka musí obsahovať identifikátor záznamu a telo vo formáte JSON, teda údaje záznamu, ktoré chcete upraviť.
DELETEZmazanie existujúceho záznamu. Požiadavka musí obsahovať identifikátor záznamu, a zároveň neobsahuje žiadne telo.

HTTP hlavičky

Požiadavka na volanie musí obsahovať HTTP hlavičku autorizácie s tokenom a HTTP hlavičku s verziou API. Aktuálna verzia API je v1.

Authorization: Bearer {API_TOKEN}
Content-Type: application/vnd.wexbo.v1+json; charset=utf-8požiadavkahttp

HEADERDESCRIPTION
AuthorizationAutorizácia bude vykonaná na základe Bearer tokenu. Hlavička je popísaná vyššie v dokumentácii.
Content-TypeUrčuje, že odoslaná požiadavka je v štruktúre systému WEXBO vo aktuálnej verzii v1 a obsah tela je vo formáte JSON s kódovaním UTF-8.

URL adresa

Základná URL adresa pre požiadavky API je pre všetky profily rovnaká, a to:

https://api.wexbo.com/

Celková požiadavka sa skladá z HTTP hlavičiek, konkrétnej metódy, endpointu, parametrov popísaných nižšie, prípadne aj tela požiadavky vo formáte JSON.

https://api.wexbo.com/{ENDPOINT}/{NULL|ID|COUNT}?{URL_PARAMETERS}požiadavkaget

Koncový bod

Zároveň URL adresa musí obsahovať aj tzv. endpoint (koncový bod). Konečná URL adresa pre volanie požiadavky pre zobrazenie zoznamu produktov bude vyzerať nasledovne:

https://api.wexbo.com/productspožiadavkaget

Zozname všetkých dostupných endpointov nájdete nižšie v dokumentácii v sekcii REFERENCE, kde sú detailne popísané, keďže každý endpoint má vlastné parametre, dostupné metódy a rôznu štruktúru pre dáta požiadavky či samotné dáta odpovede.

Identifikátor

V prípade použitia metódy GET pre zobrazenie konkrétneho detailu jedného záznamu, je nutné hneď za endpointom pridať {ID} (identifikátor záznamu). Napr. pre zobrazenie produktu s ID 1000001 je to URL adresa požiadavky:

https://api.wexbo.com/products/1000001požiadavkaget

URL parametre

Do URL požiadavky je možné pridať niektoré všeobecné nepovinné URL parametre, ktorých zoznam nájdete v tabuľke nižšie. Bližšie informácie niektorých všeobecných URL parametrov sú popísané nižšie v dokumentácii.

https://api.wexbo.com/products?fields=id&limit=25&page=1&offset=0&include=pagination,links&sort=id&direction=descpožiadavkaget

PARAMETERTYPEDESCRIPTION
fieldslistPožadované polia odpovede oddelené čiarkou. Predvolená hodnota je zoznam predvolene zobrazených polí konkrétneho endpointu (napr. id).
limitintegerNastavenie stránkovania. Predvolená hodnota je 25 (záznamov na stranu).
pageintegerAktuálna strana. Predvolená hodnota je 1 (prvá strana).
offsetintegerNastavený začiatočný offset položiek pri stránkovaní. V prípade použitia parametru page sa parameter offset neuplatní. Predvolená hodnota je 0 (od začiatku).
includelist: pagination, links, dataZobrazenie doplnkových parametrov v odpovedi. Predvolene je hodnota parametru prázdna.
sortenumZoradenie zoznamu záznamov na základe určeného poľa. Povolené hodnoty, resp. zoznam polí pre radenie je zobrazený v konkrétnom endpointe (napr. id).
directionenum: asc, descSpôsob abecedného radenia záznamov na základe URL parametra sort. Zadať je možné len hodnoty asc (A - Z, vzostupne) alebo desc (Z - A, zostupne). Predvolenú hodnotu má nastavenú každý endpointu zvlášť.

Polia

Každý endpoint obsahuje predvolené polia, ktoré sú súčasťou JSON tela odpovede na požiadavku už zahrnuté v parametri data. V prípade zadania ďalších hodnôt do URL parametra fields je možné v odpovedi v parametri data zobraziť ďalšie polia, ktoré konkrétny endpoint podporuje. Príklad zadania požiadavky pre zobrazenie ďalších polí:

https://api.wexbo.com/products?fields=id,code,namepožiadavkaget

{
···
"data": [
{
"id": 1000001,
"code": "product_code",
"name": "Product name",
},
···
],
···
}odpoveďjson

Všetky podporované polia pre URL parameter fields sú popísané v konkrétnom endpointe.

Doplnkové parametre

V odpovedi je možné zobraziť aj ďalšie doplnkové parametre a to prostredníctvom URL parametra include. Do parametra je možné zadať viacero hodnôt oddelených čiarkou, napr.:

https://api.wexbo.com/products?include=pagination,linkspožiadavkaget

VALUEDESCRIPTION
paginationInformácie o stránkovaní zobraziť v samotnom JSON tele odpovedi
linksZobraziť v JSON tele odpovedi aj odkazy, napr. ohľadom stránkovania.
dataZobraziť v JSON tele odpovedi len samotný obsah parametra data (len dáta bez ďalších parametrov). V tomto prípade sa v tele nezobrazia žiadne ďalšie parametre ako result, pagination, links, errors atď. pričom dané údaje je možné získať len z dostupných HTTP hlavičiek.

Odpoveď

Súčasťou každej odpovede servera na požiadavku klienta je telo vo formáte JSON s parametrami result, data, errors.

Stav

Úspešne spracovaná požiadavka obsahuje v JSON tele odpovedi, hneď na začiatku parameter result s hodnotou ok. Naopak chybne spracovaná požiadavka obsahuje parameter result s hodnotou error.

{
"result": "ok",
···
}odpoveďjson

Dáta

Základom odpovede na požiadavku sú samotné dáta, ktoré sú obsiahnuté v JSON tele odpovedi v parametri data. V prípade požiadavky s metódou DELETE (zmazanie záznamu) má daný parameter prázdnu hodnotu. V opačnom prípade parameter obsahuje predvolené polia, prípadne aj polia zahrnuté v URL parametry fields.

{
···
"data": {
"id": 1,
···
},
···
}odpoveďjson

Stránkovanie

V prípade požiadavky na zoznam záznamov (metóda GET bez ID) sa zobrazuje len určitý počet záznamov, pričom sa využíva tzv. stránkovanie. Predvolene je počet zobrazujúcich záznamov na stranu nastavený na hodnotu 25.

Nastaviť je možné aj inú hodnotu a to prostredníctvom URL parametra limit, do ktorého je možné zadať hodnotu od 1 do 250. Aktuálne nastavené stránkovanie požiadavky sa vždy zobrazí v odpovedi stránkovania v parametri paging.

https://api.wexbo.com/products?limit=50požiadavkaget

Predvolene sa zobrazí prvá stránka so zoznamom položiek, keďže URL parameter page má predvolenú hodnotu 1. Pridaním daného parametra do URL adresy požiadavky je možné zobraziť zoznam položiek ďalších stránok.

https://api.wexbo.com/products?page=2požiadavkaget

Namiesto parametra page je možné použiť URL parameter offset, kedy sa majú zobraziť záznamy od nastavenej hodnoty. Predvolene má daný parameter hodnotu 0 (od začiatku). Ak je zadaný súčasne aj parameter page, tak parameter offset sa v požiadavke neuplatní, teda pre stránkovanie je možné použiť len jeden z nich. Nastaviť je možné napr. zobrazenie záznamov od 50-teho záznamu 25 záznamov na stranu, teda záznamy v poradí 5075:

https://api.wexbo.com/products?limit=25&offset=50požiadavkaget

Súčasťou odpovede takýchto požiadaviek je HTTP hlavička X-Pagination-Metadata obsahujúca informácie o stránkovaní.

X-Pagination-Metadata: {pages:10,page:1,offset:0,count:25,total:250,paging:25}odpoveďhttp

Ak chcete informácie o stránkovaní zobraziť priamo v JSON tele odpovede, je nutné v požiadavke využiť parameter include obsahujúcu hodnotu pagination.

https://api.wexbo.com/products?include=paginationpožiadavkaget

{
···
"pagination": {
"pages": 10,
"page": 1,
"offset": 0,
"count": 25,
"total": 250,
"paging": 25,
"status": "continue"
},
···
}odpoveďjson

PARAMETERTYPEDESCRIPTION
pagination.pagesintegerCelkový počet dostupných strán záznamov.
pagination.pageintegerAktuálna strana záznamov.
pagination.offsetinteger
pagination.countintegerPočet záznamov na aktuálnej strane.
pagination.totalintegerCelkový počet záznamov (na všetkých stranách).
pagination.pagingintegerPočet záznamov na stranu. Aktuálne nastavené stránkovanie pomocou URL parametra limit.
pagination.statusenum: continue, done, errorAktuálny stav stránkovania, ktorý určuje či je existuje aj nasledujúca strana s ďalšími záznamami. Parametr môže obsahovať hodnoty continue (je možné prejsť na ďalšiu stranu), done (posledná strana), error (strana mimo rozsah stránkovania).

Odpoveď obsahuje aj HTTP hlavičku Link obsahujúcu automaticky generované odkazy pre jednoduchšiu možnosť vykonania ďalšej akcie. V prípade stránkovania sú to napríklad odkazy na požiadavky pre zobrazenie ďalšej strany záznamov.

Link: <https://api.wexbo.com/products?page=2&include=links>; rel="self", <https://api.wexbo.com/products?page=1&include=links>; rel="first", <https://api.wexbo.com/products?page=1&include=links>; rel="prev", <https://api.wexbo.com/products?page=3&include=links>; rel="next", <https://api.wexbo.com/products?page=9&include=links>; rel="last"odpoveďhttp

Ak chcete informácie o odkazoch zobraziť priamo v JSON tele odpovede, je nutné v požiadavke využiť parameter include obsahujúcu hodnotu links.

https://api.wexbo.com/products?page=2&include=linkspožiadavkaget

{
···
"links": {
"self": "https://api.wexbo.com/products?page=2&include=links",
"first": "https://api.wexbo.com/products?page=1&include=links",
"prev": "https://api.wexbo.com/products?page=1&include=links",
"next": "https://api.wexbo.com/products?page=3&include=links",
"last": "https://api.wexbo.com/products?page=9&include=links"
},
···
}odpoveďjson

PARAMETERTYPEDESCRIPTION
links.selfurlAktuálna strana záznamov alebo aktuálne URL adresa požiadavky.
links.firsturlPrvá strana záznamov.
links.prevurlPredchádzajúca strana záznamov.
links.nexturlNasledujúca strana záznamov.
links.lasturlPosledná strana záznamov.

Chyby

Zoznam konkrétnych informácií týkajúcich sa chýb požiadavky nájdete vždy v JSON tele odpovede na konci v parametri errors. V prípade úspešného spracovania položky by mal byť zoznam parametra prázdny (prázdne array pole). Napriek tomu sa v danom zozname môžu nachádzať aj varovania s kódom 100, ktoré nie sú závažnými chybami, teda nebránia spracovaniu požiadavky, ale len upozorňujú na prípadné nezrovnalosti v požiadavke.

{
···
"errors": [
{
"code": 404,
"msg": "Information about error",
"error": "...",
"field": "..."
},
{
"code": 100,
"msg": "Just some warning",
"error": "...",
"field": "..."
}
]
}odpoveďjson

PARAMETERTYPEDESCRIPTION
errorsarrayZoznam chýb a varovaní.
errors[].codeintegerVšeobecný stavový kód chyby popísaný nižšie.
errors[].msgstringKrátky popis chyby.
errors[].errorstringInterný identifikačný kód chyby pre lepšiu identifikáciu v prípade požiadavky na dohľadanie problému.
errors[].fieldstringProblémový parameter, metóda, pole alebo položka požiadavky.

Kódy odpovedí

Súčasťou každej odpovede servera na požiadavku klienta je kód o stave odpovedi v hlavičke (HTTP response status codes). Väčšina odpovedí zvyčajne obsahuje nižšie uvedené kódy odpovedí.

Úspešné spracovanie

CODEDESCRIPTION
200 OKÚspešné načítanie alebo vykonanie požadovaného úkonu na zázname (metódy GET, PUT, DELETE).
201 CreatedZáznam bol úspešne vytvorený (metóda POST).
204 No ContentÚspešné spracovanie požiadavky no bez odpovede. Napr. pri niektorých požiadavkách zmazania záznamu (metóda DELETE).

Chyba pri spracovaní

CODEDESCRIPTION
400 Bad RequestChyba v požiadavke klienta (napr. v objekte JSON).
401 UnauthorizedNesprávna autorizácia požiadavky klienta. Nezadaná hlavička autorizácie alebo nesprávny či neplatný API token.
403 Forbidden
404 Not FoundPožadovaný záznam sa nenašiel.
405 Method Not AllowedNepovolená metóda REQUEST METHOD v požiadavke klienta. Povolené sú len metódy GET, POST, PUT, DELETE.
408 Request TimeoutPrekročená maximálna doba na vykonanie požiadavky klienta.
413 Payload too largePríliš veľký obsah parametrov požiadavky klienta. Najčastejšie sa jedná o veľmi objemné obrázky, ktoré je možné posielať taktiež prostredníctvom JSON požiadavky.
422 Unprocessable EntityNesprávne zadaná niektorá hodnota alebo parameter požiadavky.
423 LockedBlokovanie požiadavky klienta najčastejšie z dôvodu nepovolenej IP adresy klienta, alebo exspirácie API tokenu či samotného pluginu API.
426 Upgrade RequiredVyžadované nastavenie vyššej verzie požiadavky klienta. Aktuálna verzia API je v1. Verziu API zadávate do HTTP hlavičky Content-Type, pričom popis je uvedený vyššie v dokumentácii.
429 Too Many RequestsPožiadavku klienta nebolo možné vykonať z dôvodu dosiahnutia maximálneho počtu požiadaviek, buď za určitý čas alebo na základe nastavených limitov v plugine API.
501 Not ImplementedNeexistujúci alebo aktuálne nepodporovaný endpoint požiadavky.
503 System maintenancePrebiehajúca údržba lebo dočasný výpadok API systému. Zopakujte požiadavku neskôr.
505 HTTP Version Not SupportedPožiadavka klienta bola odoslaná cez nepodporovaný protokol HTTP. Všetky požiadavky je nutné posielať cez šifrovaný protokol HTTPS.

Denník zmien

DATEVERSIONDESCRIPTION
2019-02-01v1Release

ODKAZY

Technická špecifikácia jednolivých endpoint akcií API je dostupná len pre prihlásených vývojárov, resp. po prihlásení vývojárskeho API tokenu.