vents.hu Webáruház
← Vissza a webshopba

Vents Hungary – Reseller API dokumentáció

Ez a dokumentáció a webshop Reseller API-ját írja le: a hitelesítést, az elérhető végpontokat, a korlátozásokat és a használati példákat. A jelenlegi verzió: v1.

Áttekintés

A Reseller API egy JSON alapú, csak olvasható REST API, amellyel a partnerek lekérdezhetik a termékeket, az árakat, a kategóriákat és a saját partneradataikat.

TulajdonságÉrték
Base URLhttps://webshop.vents.hu/api/v1
Verzióv1
FormátumJSON (UTF-8)
HitelesítésHMAC-SHA256 aláírás

Authentikáció

Minden kérést HMAC-SHA256 aláírással kell hitelesíteni. Ehhez egy kulcspárra van szükség:

  • Public key – nyilvános azonosító, a kérés fejlécében küldendő.
  • Private key – titkos kulcs, ezzel képződik az aláírás. Soha ne küldd el és ne tedd közzé!

A kulcspárt magad hozhatod létre és törölheted ezen az oldalon, az API kulcsok szakaszban (ehhez be kell jelentkezned). A privát kulcs csak egyszer, a létrehozáskor jelenik meg – ekkor kell biztonságos helyre elmenteni, később már nem kérhető le újra.

Kötelező fejlécek

FejlécLeírás
X-Api-KeyA public key.
X-Api-TimestampAz aktuális Unix időbélyeg (másodperc).
X-Api-SignatureA lentebb leírt módon számított HMAC-SHA256 aláírás (hexadecimális).

Az aláírás kiszámítása

Az aláírandó szöveg (payload) három sorból áll, sortörés (\n) elválasztóval:

payload
{HTTP_METÓDUS}\n{ÚTVONAL}\n{IDŐBÉLYEG}
  • HTTP_METÓDUS – nagybetűvel, pl. GET.
  • ÚTVONAL – a kérés útvonala perjellel kezdve, query paraméterek nélkül, pl. /api/v1/products.
  • IDŐBÉLYEG – ugyanaz az érték, amit a X-Api-Timestamp fejlécben küldesz.

Az aláírás ebből: hash_hmac("sha256", payload, private_key) – az eredmény hexadecimális karakterlánc.

példa payload
GET\n/api/v1/products\n1747300000

Korlátozások

Az API végpontonként korlátozza a kérések számát. A limitek API kulcsonként értendők. A limit túllépésekor a szerver 429 Too Many Requests választ ad.

VégpontÓránkéntNaponta
GET /me424
GET /products448
GET /prices10120
GET /categories424

Endpointok

Minden végpont GET metódusú, és a fenti módon hitelesítést igényel. Az alábbi útvonalak a Base URL-hez (https://webshop.vents.hu/api/v1) relatívak.

GET/api/v1/me

A bejelentkezett partner adatai

Visszaadja az API kulcshoz tartozó partner alap­adatait. Nincs paramétere.

200 OK – válasz
{
  "resource": "me",
  "id": 123,
  "email": "partner@pelda.hu",
  "firstname": "Anna",
  "lastname": "Kovács",
  "partner_code": "P-00123",
  "currency": "HUF",
  "payment_day": 15
}
GET/api/v1/products

Termékek listája (lapozott)

Az aktív termékeket adja vissza, név szerint rendezve.

ParaméterTípusLeírás
per_pageegész szám, opcionálisOldalankénti elemszám (min. 1). Alapérték: 100. Nincs felső korlát.
pageegész szám, opcionálisA kért oldal száma. Alapérték: 1.

Ha az összes terméket egy oldalon szeretnéd letölteni, adj meg egy kellően nagy értéket a per_page paraméterben, pl. per_page=9999999.

200 OK – válasz (részlet)
{
  "data": [
    {
      "resource": "api_product",
      "name": "VENTS 100 Quiet ventilátor",
      "slug": "vents-100-quiet",
      "sku": "V100Q",
      "description": "Csendes axiális ventilátor...",
      "category": {
        "id": 4,
        "name": "Axiális ventilátorok",
        "slug": "axialis-ventilatorok"
      },
      "primary_image_url": "https://.../v100q.jpg",
      "images": [
        { "id": 11, "url": "https://.../v100q.jpg", "sort_order": 0 }
      ]
    }
  ],
  "links": { "first": "...", "last": "...", "prev": null, "next": "..." },
  "meta": { "current_page": 1, "last_page": 14, "per_page": 100, "total": 1356 }
}
GET/api/v1/prices

Árak és készlet SKU alapján

A megadott cikkszámokhoz (SKU) tartozó árakat és készletet adja vissza.

ParaméterTípusLeírás
skusszöveg, kötelezőVesszővel elválasztott SKU lista, pl. „V100Q,V125Q".
200 OK – válasz
{
  "data": [
    {
      "resource": "api_price",
      "sku": "V100Q",
      "price": 12990.00,
      "sale_price": 10990.00,
      "discount_price": 9990.00,
      "quantity": 42,
      "in_stock": true
    }
  ]
}

Az árak a partner pénznemében (currency) értendők. Az egyes mezők jelentését lásd az Árazás és kedvezmények résznél.

GET/api/v1/categories

Kategóriafa

A teljes aktív kategóriafát adja vissza, beágyazott children tömbökkel. Nincs paramétere.

200 OK – válasz (részlet)
{
  "data": [
    {
      "resource": "api_category",
      "id": 1,
      "name": "Ventilátorok",
      "slug": "ventilatorok",
      "parent_id": null,
      "product_count": 320,
      "children": [
        {
          "resource": "api_category",
          "id": 4,
          "name": "Axiális ventilátorok",
          "slug": "axialis-ventilatorok",
          "parent_id": 1,
          "product_count": 86,
          "children": []
        }
      ]
    }
  ]
}

Hibakódok

Hiba esetén a szerver a megfelelő HTTP státuszkóddal és egy message mezőt tartalmazó JSON objektummal válaszol.

KódJelentésLehetséges ok
401UnauthorizedHiányzó hitelesítő fejléc, lejárt időbélyeg, ismeretlen API kulcs vagy érvénytelen aláírás.
403ForbiddenA kulcshoz tartozó felhasználó nem (már nem) MEMBER szerepkörű, vagy törölt.
422Unprocessable EntityHibás vagy hiányzó paraméter (pl. nincs megadva SKU a /prices végpontnál).
429Too Many RequestsTúllépted az adott végpont óránkénti vagy napi limitjét.
példa hibaválasz – 401
{ "message": "Invalid signature." }

Árazás és kedvezmények

A /prices végpont árai a partner saját kedvezményeit is figyelembe veszik. A mezők jelentése:

MezőJelentés
priceA katalógus szerinti listaár.
sale_priceÁltalános akciós ár, ha van; egyébként null.
discount_priceA partner egyedi kedvezményeivel (partner­kódhoz kötött termék- és kategória­kedvezmények) számolt ár. Csak akkor van kitöltve, ha kedvezőbb a listaárnál; egyébként null.
quantityAz aktuálisan raktáron lévő mennyiség.
in_stockIgaz, ha a quantity nagyobb mint 0.

A fizetendő ár meghatározásához a legalacsonyabb elérhető (nem null) értéket érdemes használni. Az árak mindig a partner pénznemében (HUF vagy EUR) értendők – ezt a /me végpont currency mezője adja meg.

Kód példák

Az alábbi példák a /api/v1/products végpont hívását mutatják be. Válaszd ki a kívánt programozási nyelvet, majd cseréld le a PUBLIC_KEY és PRIVATE_KEY értékeket a saját kulcsaidra.

PUBLIC_KEY="a_te_public_kulcsod"
PRIVATE_KEY="a_te_private_kulcsod"
METHOD="GET"
ENDPOINT="/api/v1/products"
TS=$(date +%s)

PAYLOAD=$(printf '%s\n%s\n%s' "$METHOD" "$ENDPOINT" "$TS")
SIG=$(printf '%s' "$PAYLOAD" | openssl dgst -sha256 -hmac "$PRIVATE_KEY" | awk '{print $NF}')

curl "https://webshop.vents.hu/api/v1/products?per_page=50" \
  -H "X-Api-Key: $PUBLIC_KEY" \
  -H "X-Api-Timestamp: $TS" \
  -H "X-Api-Signature: $SIG" \
  -H "Accept: application/json"

Fontos: az aláírásba kerülő útvonal mindig query paraméterek nélkül értendő (/api/v1/products), akkor is, ha a kérés tartalmaz ?per_page=50 jellegű paramétert.

Postman

Az API kipróbálásához letölthető egy kész Postman kollekció, amely mind a négy végpontot tartalmazza. A HMAC-SHA256 aláírást a kollekció beépített pre-request szkriptje minden kérés előtt automatikusan kiszámítja – csak a kulcsokat kell megadni.

Postman kollekció letöltése

Beállítás

  1. A Postmanben kattints az Import gombra, és válaszd ki a letöltött fájlt.
  2. Nyisd meg a kollekciót, és a Variables fülön töltsd ki a következőket:
VáltozóÉrték
hostA webshop címe (séma és domain), pl. https://webshop.vents.hu
public_keyA kapott nyilvános kulcs.
private_keyA kapott privát (titkos) kulcs.

A timestamp és signature változókat nem kell kitölteni – ezeket a pre-request szkript minden kérésnél automatikusan beállítja.

Integrációs segítség

Ha szeretnéd, hogy a webshopod összekössük a saját rendszereddel, szívesen segítünk. Az API-t a smartleap.hu fejleszti és támogatja.

Smart Leap Services Kft.

API kulcsok

Itt kezelheted a saját API kulcsaidat: új kulcspárt hozhatsz létre, és törölheted a feleslegessé váltakat. A kulcskezeléshez be kell jelentkezned.

A Reseller API hívásai csak partner (MEMBER) fiókhoz tartozó kulccsal működnek. Ha a fiókod nem partner típusú, és API hozzáférésre van szükséged, keresd az ügyfélszolgálatot.

Az API kulcsok kezeléséhez jelentkezz be. Bejelentkezés után itt tudsz saját API kulcsot létrehozni és törölni.