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 URL | https://webshop.vents.hu/api/v1 |
| Verzió | v1 |
| Formátum | JSON (UTF-8) |
| Hitelesítés | HMAC-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éc | Leírás |
|---|---|
X-Api-Key | A public key. |
X-Api-Timestamp | Az aktuális Unix időbélyeg (másodperc). |
X-Api-Signature | A 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:
{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-Timestampfejlécben küldesz.
Az aláírás ebből: hash_hmac("sha256", payload, private_key) – az eredmény hexadecimális karakterlánc.
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ént | Naponta |
|---|---|---|
GET /me | 4 | 24 |
GET /products | 4 | 48 |
GET /prices | 10 | 120 |
GET /categories | 4 | 24 |
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.
/api/v1/meA bejelentkezett partner adatai
Visszaadja az API kulcshoz tartozó partner alapadatait. Nincs paramétere.
{
"resource": "me",
"id": 123,
"email": "partner@pelda.hu",
"firstname": "Anna",
"lastname": "Kovács",
"partner_code": "P-00123",
"currency": "HUF",
"payment_day": 15
}/api/v1/productsTermékek listája (lapozott)
Az aktív termékeket adja vissza, név szerint rendezve.
| Paraméter | Típus | Leírás |
|---|---|---|
per_page | egész szám, opcionális | Oldalankénti elemszám (min. 1). Alapérték: 100. Nincs felső korlát. |
page | egész szám, opcionális | A 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.
{
"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 }
}/api/v1/pricesÁrak és készlet SKU alapján
A megadott cikkszámokhoz (SKU) tartozó árakat és készletet adja vissza.
| Paraméter | Típus | Leírás |
|---|---|---|
skus | szöveg, kötelező | Vesszővel elválasztott SKU lista, pl. „V100Q,V125Q". |
{
"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.
/api/v1/categoriesKategóriafa
A teljes aktív kategóriafát adja vissza, beágyazott children tömbökkel. Nincs paramétere.
{
"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ód | Jelentés | Lehetséges ok |
|---|---|---|
401 | Unauthorized | Hiányzó hitelesítő fejléc, lejárt időbélyeg, ismeretlen API kulcs vagy érvénytelen aláírás. |
403 | Forbidden | A kulcshoz tartozó felhasználó nem (már nem) MEMBER szerepkörű, vagy törölt. |
422 | Unprocessable Entity | Hibás vagy hiányzó paraméter (pl. nincs megadva SKU a /prices végpontnál). |
429 | Too Many Requests | Túllépted az adott végpont óránkénti vagy napi limitjét. |
{ "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 |
|---|---|
price | A katalógus szerinti listaár. |
sale_price | Általános akciós ár, ha van; egyébként null. |
discount_price | A partner egyedi kedvezményeivel (partnerkódhoz kötött termék- és kategóriakedvezmények) számolt ár. Csak akkor van kitöltve, ha kedvezőbb a listaárnál; egyébként null. |
quantity | Az aktuálisan raktáron lévő mennyiség. |
in_stock | Igaz, 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.
Beállítás
- A Postmanben kattints az Import gombra, és válaszd ki a letöltött fájlt.
- Nyisd meg a kollekciót, és a Variables fülön töltsd ki a következőket:
| Változó | Érték |
|---|---|
host | A webshop címe (séma és domain), pl. https://webshop.vents.hu |
public_key | A kapott nyilvános kulcs. |
private_key | A 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.
- Kapcsolattartó: Bánk Noel
- Weboldal: smartleap.hu
- E-mail: it@smartleap.hu
- Telefon: +36 30 201 8330
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.