API
Umožňuje rozšiřovat funkce eshopu, napojovat aplikace třetích stran a obecně pracovat s daty bez ohledu na naše programátory. Obsahuje řadu funkcí pro čtení a manipulaci s daty eshopu, nejčastěji používané funkce a příklady jejich použití jsou popsány na této stránce nápovědy, ucelený seznam a popis všech funkcí je pak k nalezení v kompletní dokumentaci API.
Pro aktivaci modulu nebo více informací kontaktujte naše zákaznické oddělení.
Technologie
Naše API využívá otevřený standard GraphQL, který umožňuje klientům definovat strukturu datových požadavků a odpovědí. Na rozdíl od pevně stanovených formátů, jako je SOAP nebo REST může klient specifikovat, jaká data požaduje, což usnadňuje agregaci odpovědí z různých zdrojů a zmenšuje celkový objem přenášených dat. Naše implementace podporuje čtení (dotazy) a změnu (mutace). Více informací na stránkách tvůrců https://graphql.org/.
Pro testování všech funkcionalit lze používat libovolný GrahpQL editor, doporučujeme například
Altair GraphQL Client https://altairgraphql.dev.
Dokumentace
Kompletní dokumentace se nachází na adrese https://graphql-docs.wpjshop.cz/
Autentifikace
Do pole X-Access-Token v hlavičce každého API requestu je třeba vložit přihlašovací token administrátorského účtu, který bude k přístupu na API používán. Ten se nachází na detailu účtu administrátora v záložce Přihlašování, je možné ho zde vygenerovat nebo přegenerovat. Zároveň je třeba administrátorovi udělit oprávnění API používat. To lze nastavit na záložce Oprávnění: Ostatní zaškrtnutím pole Používat u API.
➡️ Nastavení > Administrátoři
Omezení
U seznamů je omezen maximální počet položek na stránce na 1000. Pokud je zadána hodnota vyšší, vždy se použije nejvyšší možná hodnota.
#limit bude nastaven na 1000 query { orders(limit: 2000){...}}
Queries
Seznam nejčastěji používaných queries k nimž jsou níže zpracovány příklady jejich využití.
Query |
Popis |
order | Načtení objednávky |
orders | Seznam objednávek |
product | Načtení produktu |
products | Seznam produktů |
user | Načtení uživatele |
users | Seznam uživatelů |
Mutations
Seznam nejčastěji používaných mutations, k nimž jsou níže zpracovány příklady jejich využití.
Mutation | Popis |
productCreateOrUpdate | Vytvoření nebo úprava produktu |
variationCreateOrUpdate | Vytvoření nebo úprava varianty |
orderUpdate | Aktualizace objednávky |
orderStorno | Storno objednávky |
userCreateOrUpdate | Vytvoření nebo úprava uživatele |
productPriceListUpdate | Aktualizace ceny produktu v ceníku |
productStoreUpdate | Aktualizace stavu skladu u produktu |
Příklady
Načtení objednávky
query { order(id: 1) { id code dateCreated status { id name } deliveryAddress { name surname street city zip country { code name } } items { name pieces totalPrice { withVat vat currency { code } } } } }
Načtení seznamu objednávek
query { orders(limit: 50, sort: {dateCreated: ASC}, filter: {dateCreated:{ge:"2024-02-01 00:00:00"}}) { hasNextPage hasPreviousPage items { id code dateCreated totalPrice { withVat withoutVat } currency { code name } } } }
Načtení produktu
query { product(id:6185) { id url code ean inStore stores { store { id name } inStore } title price { withVat currency { code } } visible parameters { parameter{ name } values { value } } variations { values { label { name } value } } } }
Načtení seznamu produktů
query { products(limit: 10, sort: {title: ASC}, filter: {dateUpdated: {ge: "2024-02-19 00:00:00"}}) { hasNextPage hasPreviousPage items { id code ean title visible inStore price { withVat currency { code } } } } }
Načtení uživatele
query { user (email:"wpj@wpj.cz") { id name surname isActive dateLastOrder invoiceAddress { name surname firm phone street city zip country { code } ico dic } } }
Načtení seznamu uživatelů
query { users (userSort:{id:ASC}, userFilter: {dateRegistered: {ge:"2024-01-01" le:"2024-02-01"}}) { hasNextPage hasPreviousPage items{ id email name surname newsletterInfo { isSubscribed } } } }
Vytvoření nebo úprava produktu
mutation productCreateOrUpdate($product: ProductModifyInput) { productCreateOrUpdate(product: $product) { result product { id code title description price { withVat } } } } #vytvoření produktu { "product": { "code": "abc1234", "title": "Nový produkt", "description": "Popis nového produktu", "price": { "priceWithVat": 121 } } } #úprava produktu { "product": { "id": 6273, "title": "Aktualizovaný název produktu", "description": "Aktualizovaná anotace produktu" } }
Vytvoření nebo úprava varianty produktu
mutation variationCreateOrUpdate($variation: VariationModifyInput) { variationCreateOrUpdate(variation: $variation) { result product { id } variation { id title values{ label{ name } value } } } } { "variation": { "productId": 6160, "visible": false, "title": "Velikost Apple Watch: 46mm", "labels": [{ "label": "Velikost Apple Watch", "value": "46mm" }] } }
Aktualizace objednávky
mutation orderUpdate($input: OrderUpdateInput!) { orderUpdate(input: $input) { result order { id, code dateCreated dateUpdated status { id name } deliveryInfo { packageId } } } } { "input": { "id": 105184, "status": { "id": 2, "comment": "Přiděleno číslo balíku 'abc123'" }, "packageId": "abc123" } }
Storno objednávky
mutation orderStorno($input: OrderStornoInput!) { orderStorno(input: $input) { result order { id, code cancelled dateCreated dateHandle status{ name } } } } { "input": { "id": 105186, "message": "Storno z API", "sendMail": false } }
Vytvoření nebo úprava uživatele
mutation userCreateOrUpdate($input: UserInput!) { userCreateOrUpdate(input: $input) { result user { id email userName dateRegistered } } } #vytvoření uživatele { "input": { "email": "test@api.cz", "isActive": true, "invoiceAddress": { "name": "Test", "surname": "Api", "street": "Lanovska 123", "city": "Vrchlabi", "zip": "54301", "country": "CZ", "phone": "123456789" } } } #úprava uživatele { "input": { "id": 100393, "ico": "28860608", "dic": "CZ28860608", "invoiceAddress": { "firm": "wpj s.r.o." } } }
Aktualizace ceny produktu v ceníku
mutation productPriceListUpdate($input: ProductPriceListInput!) { productPriceListUpdate(input: $input) { result product { id title price{ withVat } priceLists{ priceList{ id name } price{ withVat } } } } } { "input": { "productId": 6160, "priceListId": 9, "price": { "priceWithVat": 7800 } } }
Aktualizace stavu skladu u produktu
mutation productStoreUpdate($input: ProductStoreInput!) { productStoreUpdate(input: $input) { result product { id variations{ id inStore } title inStore stores{ store{ id } inStore } } } } { "input": { "productId": 6160, "variationId":13380, "storeId": 2, "quantity": 100 } }