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 | 2000 | 50000 |
GET /products | 60 | 500 |
GET, POST /prices | 60 | 1000 |
GET /categories | 30 | 200 |
Endpointok
A végpontok többsége GET metódusú; a /prices végpont POST metódussal is hívható (nagy SKU-lista lekérésére). Minden kéré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 vagy teljes lista)
A megadott cikkszámokhoz (SKU) tartozó árakat és készletet adja vissza. Ha a skus paramétert nem adod meg, az összes aktív termék árát visszaadja lapozva.
| Paraméter | Típus | Leírás |
|---|---|---|
skus | szöveg, opcionális | Vesszővel elválasztott SKU lista, pl. „V100Q,V125Q". Ha hiányzik, a teljes (lapozott) árlistát kapod. |
per_page | egész szám, opcionális | Csak teljes listánál. Oldalankénti elemszám (min. 1). Alapérték: 100. Nincs felső korlát. |
page | egész szám, opcionális | Csak teljes listánál. A kért oldal száma. Alapérték: 1. |
Sok cikkszám lekéréséhez használd inkább a lenti POST /api/v1/prices hívást, mert a GET URL hossza korlátos.
{
"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/pricesÁrak és készlet sok SKU-hoz (tömeges lekérés)
Ugyanazt adja vissza, mint a GET változat, de a cikkszámokat a kérés törzsében (JSON body) várja. Így nincs URL-hosszkorlát – egyetlen hívással akár több ezer SKU ára lekérhető, ami a kéréslimit miatt sokkal hatékonyabb.
| Mező | Típus | Leírás |
|---|---|---|
skus | tömb, kötelező | SKU-k tömbje a JSON body-ban. Nincs felső darabszám-korlát. |
Az aláírást a POST metódussal kell számolni (a body nem része az aláírásnak).
{
"skus": ["V100Q", "V125Q", "V150Q"]
}{
"data": [
{
"resource": "api_price",
"sku": "V100Q",
"price": 12990.00,
"sale_price": 10990.00,
"discount_price": 9990.00,
"quantity": 42,
"in_stock": true
}
]
}/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 fiókod nem jogosult az API használatára, vagy a hozzáférés megszűnt. |
422 | Unprocessable Entity | Hibás vagy hiányzó paraméter (pl. nincs megadva SKU lista a POST /prices kérés törzsében). |
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
Változásnapló
Itt követheted nyomon, hogy az API-ban mikor milyen változás történt (új végpontok, fejlesztések, javítások).
Tömeges árlekérés és teljes árlista
Fejlesztések
- Tömeges árlekérés — Az árlekérő végpont (
/api/v1/prices) mostantólPOSTkéréssel is hívható, ahol a cikkszámlistát a kérés törzsében (JSON) küldöd. Így nincs URL-hosszkorlát, és egyetlen kéréssel akár több ezer termék ára lekérhető — felső darabszám-korlát nélkül. - Teljes árlista — Ha a
GET /api/v1/priceshívásnál nem adsz meg cikkszámot, a végpont a teljes aktív árlistát adja vissza, lapozva (per_page,page). - Megemelt kéréskorlátok — Az API óránkénti és napi kéréskorlátai jelentősen megemelve, hogy a teljes termék- és árlista szinkron egyetlen menetben, fennakadás nélkül lefusson. Termékek: 60/óra, 500/nap; árak (
/prices): 60/óra, 1000/nap; kategóriák: 30/óra, 200/nap. A saját partneradatok lekérdezése (/me) gyakorlatilag korlátlan. A pontos korlátok a „Korlátozások" szakaszban találhatók.
Reseller API első kiadás
Új funkciók
- Partner API elérhető — A partnerek mostantól programozottan lekérdezhetik az adataikat. Elérhető végpontok: saját partneradatok (
/me), termékek listája (/products), kategóriafa (/categories) és árak/készlet (/prices). - Biztonságos hitelesítés — Minden kérés aláírással (HMAC-SHA256) hitelesített, egyedi API kulcspárral. A kulcsokat a felhasználók saját maguk hozhatják létre az API oldalon.
- Kéréskorlátok — Az egyes végpontok óránkénti és napi kéréskorláttal védettek, API kulcsonként számolva.
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 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.