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
  }
}