PriceZag API — Áradatok összekapcsolása a rendszereiddel
A PriceZag JSON API-val lekérdezheted a versenytársak árait és készletét, kezelheted a termékeket és átárazási szabályokat, riportokat tölthetsz le, és automatizálhatod a munkafolyamataidat.
Gyors curl-példa
MYAPIKEY értéket a fiókod API-kulcsára (lásd: API-kulcs).Teszttermék létrehozása:
curl -vX POST 'https://pricezag.com/api/v3/MYAPIKEY' -d '{"actions":[{"a":"productCreate","code":"000-SOME-TEST-PRODUCT","name":"Some Test Product created via PriceZag API","price":12.34,"currency":"USD"}]}'
(ha másodszor is futtatod a parancsot, hibaüzenetet kapsz, mert a termék már létezik)Most kérdezd le a létrehozott terméket:
curl -X POST 'https://pricezag.com/api/v3/MYAPIKEY' -d '{"actions":[{"a":"productGet","code":"000-SOME-TEST-PRODUCT"}]}' | python -mjson.tool
(hagyd el a | python -mjson.tool részt, ha a terminálodon nem érhető el ez a JSON-választ formázó eszköz)Áttekintés
Mire használhatod a PriceZag API-t?
A PriceZag JSON API segítségével a szkriptjeid és üzleti rendszereid közvetlenül használhatják az általunk figyelt versenytársi ár- és készletadatokat. Lekérdezheted a termékadatokat, kezelheted a termékeket és kategóriákat, összegeket számíthatsz az átárazási szabályok alapján, beállíthatsz értesítéseket, és letölthetsz egyéni Excel-riportokat. Az API bármely olyan webáruházplatformmal vagy programozási nyelvvel használható, amely képes HTTPS-kéréseket küldeni és JSON-t feldolgozni.
Megkérheted kedvenc AI-asszisztensedet is, hogy írja meg a szkripteket. Add meg neki a dokumentáció címét (https://pricezag.com/integrations/api), írd le, mit szeretnél automatizálni, és add meg a programozási nyelvet vagy webáruházplatformot. Az API-kulcsodat kezeld bizalmasan, és ne illeszd be AI-beszélgetésbe.
A PriceZag a saját felületén végzi a figyelést, ezért az API használata opcionális. Akkor hasznos, ha ezeket az adatokat a saját rendszeredhez szeretnéd kapcsolni. Shopify és WooCommerce rendszerekhez közvetlen integráció is elérhető.
API-kulcs és jogosultságok
A PriceZag-fiókodban nyisd meg az Automation > API menüpontot. Kattints a Reveal the current API key gombra a jelenlegi kulcs megtekintéséhez, vagy a Change the API key gombra a lecseréléséhez. Mindkét művelethez meg kell adni a fiók jelszavát. A felhasználónak rendelkeznie kell az API-kulcs megtekintéséhez vagy létrehozásához szükséges jogosultsággal. Ha nincs ilyen jogosultságod, fordulj a fiók rendszergazdájához.
Tartsd titokban az API-kulcsot. A kulcs jelentős módosításokat, akár adatok törlését is lehetővé teheti a fiókban. Ne tedd közzé nyilvános kódtárban, böngészőben futó kódban vagy AI-beszélgetésben. Ha valaki segít az integráció fejlesztésében, hozz létre számára megfelelő jogosultságú PriceZag-felhasználót, és szükség esetén cseréld le az API-kulcsot.
Az API-hozzáférés az előfizetésedtől függ. Teljes API-hozzáféréssel a szkriptjeid az összes termékkel dolgozhatnak. Enélkül csak az alfanumerikusan, referenciakód szerint rendezett első 10 termék érhető el. Ha például 1000 terméked van, a kódok SKU0001 és SKU1000 között, az API a SKU0001 és SKU0010 közötti termékeket érheti el. A 14 napos ingyenes próbaidőszak teljes API-hozzáférést tartalmaz. A teljes API-hozzáférést külön előfizetési opcióként is bekapcsolhatod.
API-tevékenységnapló és utolsó kérés
A fiókodban található Automation > API oldalon láthatod az utolsó API-kérés időpontját és az API Activity Log gombot. Ha egy szkript nem működik, ezekből megtudhatod, hogy a kérések eljutottak-e a PriceZaghoz, és megvizsgálhatod a sikertelen hívásokat vagy váratlan módosításokat.
Az API-n keresztül végzett változtatások a fiókban található History of Edits naplóban is megjelennek API felhasználónév alatt. Egy termék előzményeiben például a Price edited by API szöveg szerepelhet a Price edited by JOHN helyett. Mivel a PriceZag egy fiókon belül több felhasználót is támogat, megkülönböztetheted az automatikus módosításokat a csapattagok által végzettektől.
Kérés URL-je és módszerei
Minden API-kérés ugyanazt a HTTPS-címet használja. Küldj POST kérést erre a címre, és a MYAPIKEY értéket cseréld a saját kulcsodra:
https://pricezag.com/api/v3/MYAPIKEY
A végrehajtandó műveletek ("actions") és paramétereik a JSON-kérés törzsébe tartoznak, nem az URL-be.
A POST-kérés törzsében küldj egy vagy több műveletet tartalmazó JSON-objektumot. Az URL ugyanaz marad terméklekérdezés, árfrissítés és táblázatletöltés esetén is.
Nem tudsz POST-kérést küldeni?
Végső megoldásként GET-kéréssel is elküldheted a Base64-kódolt JSON-t a ?data= URL-paraméterben. Az URL-ek hossza korlátozott, ezért határozottan a POST használatát javasoljuk.
A műveletek működése
Az API és a felhasználói felület (UI) ugyanazokat a háttérfunkciókat használja, így a felületen elérhető műveletek szinte mindegyike API-n keresztül is végrehajtható.
Egy API-kérés JSON-adatai egy tömbben tartalmazzák az összes végrehajtandó műveletet, legalább 1, de legfeljebb 1000 műveletet kérésenként. Például egyetlen, négy műveletből álló kéréssel átnevezhetsz három terméket és létrehozhatsz egy kategóriát. Ezer „productGet” művelettel egyszerre ezer termék adatait is lekérdezheted.
A műveletek a tömbben megadott sorrendben futnak le. Ha előbb átárazási szabályt hozol létre, majd termékeket rendelsz hozzá, ebben a sorrendben add meg őket, hogy a szabály már létezzen a termékek módosításakor.
Görgess le az összes elérhető művelet listájához.
A JSON-kérés objektuma
Szkriptekhez és AI által generált kódhoz: Az alábbi példák // megjegyzéseket és ... helyőrzőket tartalmaznak a mezők magyarázatához. Ezek szemléltető példák, nem küldhetők el változatlanul érvényes JSON-ként. Küldés előtt távolítsd el a megjegyzéseket és helyőrzőket. A fenti két curl példa érvényes JSON-t tartalmaz.
{
"stopOnFailure" : 1, // (opcionális) Alapértelmezés szerint a háttérrendszer hiba esetén is folytatja a következő művelettel. Az 1 érték leállítja a végrehajtást.
// Az összes művelet tömbje:
"actions" : [
// 1. művelet:
{
"a" : "someActionName", // A művelet neve mindig az egyes objektumok "a" mezőjében szerepel.
"xx" : "some parameter this action needs" // Az "a" mezőn kívül minden más a művelethez szükséges paraméter.
},
// 2. művelet:
{
"a" : "anotherActionName",
"abc" : "some parameter this action needs",
"xyz" : {"x":"some object this action needs", "y":5, "z":6}
},
// 3. művelet:
{
"a" : "aThirdAction",
"xyz" : ["some array this action needs", "..."]
}
]
}
Szerverválasz és HTTP-állapotkódok
Ha a kérés megfelelő, rendszerint JSON objektumot kapsz válaszként, néhány külön jelzett kivételtől eltekintve (például táblázat letöltésekor). Ezt a Content-Type: application/json válaszfejléc jelzi.
A HTTP-válaszkódjaink jelentése:
► 200 ha minden művelet sikeres volt (a semleges ok=0 eredmény is sikernek számít).
► 406 ha néhány művelet sikerült, mások viszont nem.
► 422 ha minden művelet sikertelen volt, de nem az alábbi okokból.
► 400 ha a kapott JSON-objektumot nem sikerült feldolgozni.
► 403 ha a hitelesítés sikertelen volt (általában hibás API-kulcs miatt).
A szkriptekben egyszerűen támaszkodhatsz ezekre az állapotkódokra. Ha több információra van szükséged, a visszaadott JSON-objektum további részleteket tartalmaz:
{
"ok" : 15, // A sikeresen végrehajtott műveletek száma (művelet ok>0).
"errors" : 0, // A hibát adó műveletek száma (művelet ok<0).
"actionsCount" : 20, // Az eredetileg kért műveletek száma (az "actions" tömb hossza).
// MEGJEGYZÉS: ebből látható, hogy 5 művelet ok=0 eredményt adott: nem hibázott, de nem is változtatott semmit.
// Az eredetileg kért műveletek tömbje, azonos sorrendben:
"actions" : [
...
// Az egyes műveletek válaszobjektuma:
{
"a" : "someActionName",
"ok" : 4, // Eredmény: >0 = siker, 0 = nincs változás, <0 = hiba.
// Például 0 lehet az eredmény, ha egy termék árát a már meglévő értékre állítod.
// -1 lehet az eredmény, ha a termék nem létezik.
// A >0 pontos jelentése műveletenként eltér; gyakran a ténylegesen módosított mezők vagy elemek száma.
"error" : "...", // Hibaüzenet, ha ok < 0.
// A hibaüzeneteink részletesek. Érdemes naplózni őket,
// mert segítenek a hiba okának feltárásában.
... // A műveletre jellemző további visszaadott adatok.
},
...
]
}
Példák?
Kérésgyakoriság és időzítés
A jogos API-kérések zavartalan működéséhez:
► Ne használj hibás API-kulcsot: a tűzfal kevés sikertelen próbálkozást tűr meg (ahogy a hibás bejelentkezési jelszavaknál is).
► Vond össze a műveleteket egyetlen JSON-kérésbe (legfeljebb 1000). Ezer termék létrehozásához egy kérést küldj, ne ezret.
► Ha valóban sok kérést kell küldened, várj közöttük 500 ms-ot, és használd újra ugyanazt a HTTPS-kapcsolatot. Gyakori hiba minden kéréshez új kapcsolatot nyitni. Sok kérés általában csak több százezer termék egyszerre történő frissítésekor indokolt; ilyenkor egy kérésbe 1000 műveletet tegyél.
Nincs rögzített kérésgyakorisági korlátunk: a tűzfal több tucat tényező alapján dönt. A legjobb, ha észszerű kérésütemezést használsz.
Időzített kérések:
Az időközönként futtatott kérésekhez adj véletlenszerű késleltetést, hogy ne mindig az egész perc 0. másodpercében induljanak. Sok ügyfél ugyanakkor küldi a kéréseit; az időpontok eltolása gyorsíthatja a válaszokat és csökkentheti a túlterhelés miatti időtúllépéseket.
Az összes elérhető API-művelet
Az alábbiakban minden művelet paramétereit, valamint kérési és válaszpéldáit találod. A bal oldali navigációból közvetlenül az adott művelethez ugorhatsz.
Termékek
| Művelet | Cél |
|---|---|
| productCreate | Új termék létrehozása |
| productEdit | Meglévő termék szerkesztése |
| productCompetitors | Egy termék versenytársi URL-jeinek módosítása (az összes felülírása nélkül) |
| productCategories | Egy vagy több termék kategóriáinak módosítása (az összes felülírása nélkül) |
| productRepricing | Több termék hozzárendelése átárazási szabályhoz |
| productDelete | Egy vagy több termék törlése |
| productGet | Termék lekérdezése (a versenytársak adataival együtt) |
| productGetAll | Az összes termék lekérdezése (a versenytársak adataival együtt) |
Kategóriák
| Művelet | Cél |
|---|---|
| categoryCreate | Új kategória létrehozása |
| categoryEdit | Meglévő kategória szerkesztése |
| categoryDelete | Egy vagy több kategória törlése |
| categoryCopy | Termékek másolása/áthelyezése kategóriák között |
| categoryGet | Kategória lekérdezése |
| categoryGetAll | Az összes kategória lekérdezése |
Értesítések
| Művelet | Cél |
|---|---|
| alertRecipientCreate | Új értesítési címzett létrehozása |
| alertRecipientEdit | Címzett és/vagy értesítési szabályainak szerkesztése |
| alertRecipientDelete | Értesítési címzett törlése |
| alertRuleEdit | Meglévő értesítési szabály szerkesztése |
| alertRuleCreate ? | Ilyen művelet nincs. Használd helyette az alertRecipientEdit műveletet „rulesAdd” tömbbel. |
| alertRuleDelete ? | Ilyen művelet nincs. Használd helyette az alertRecipientEdit műveletet „rulesRemove” tömbbel. |
| alertGetAll | Az összes címzett és értesítési szabály lekérdezése |
Átárazási szabályok
| Művelet | Cél |
|---|---|
| repricingCreate | Új átárazási szabály létrehozása |
| repricingEdit | Meglévő átárazási szabály módosítása |
| repricingDelete | Átárazási szabály törlése |
| repricingGetAll | Az összes átárazási szabály lekérdezése |
Táblázatok
| Művelet | Cél |
|---|---|
| spreadsheetDownload | Táblázat letöltése |
| spreadsheetPresetEdit | Táblázatsablon átnevezése/törlése |
| spreadsheetAutoCreate | Automatikus táblázatexport létrehozása |
| spreadsheetAutoEdit | Automatikus táblázatexport szerkesztése |
Versenytársak és további lehetőségek
| Művelet | Cél |
|---|---|
| competitorDeleteAll | Versenytárs törlése minden termékből vagy kategóriából |
| mathEdit | Versenytárs domainjének árképlet-beállítása/szerkesztése |
Termékek
productCreate – Új termék létrehozása
{ "actions" : [
...
{
"a" : "productCreate",
"code" : "UNIQUE-REF-CODE", // 1–80 karakter ([a-z\d][a-z\d_-]{0,78}[a-z\d]); nem érzékeny a kis- és nagybetűkre (nagybetűsre alakítva).
"name" : "The Product Name", // 1–200 karakter.
"price" : 1234.90, // Ügyelj a vesszőre és a pontra: nincs ezreselválasztó, a tizedesjel pont.
"currency" : "USD",
"cost" : 1234.90, // (opcionális)
"costCurrency" : "USD", // Kötelező, ha a cost meg van adva.
"repricingRule" : "The Rule Name", // (opcionális) Hozzárendelt átárazási szabály (üres = kikapcsolva, nem létező = hiba).
"myWebsite" : "https://...", // (opcionális) URL vagy shopify:productId:variantId vagy woocommerce:productId(:variationId).
"competitors" : ["https://...", "https://..."], // (opcionális)
"categories" : ["The Category 1", "The Category 2"], // (opcionális) A termék kategóriái (a nem létezőket létrehozza).
"comments" : "Some comments\nAnd another line", // (opcionális) Legfeljebb 1000 UTF-8 karakter.
"custom_someFieldName1" : "Value of custom field", // (opcionális)
"custom_someFieldName2" : "Value of other\nCustom\tField", // (opcionális)
// Az egyéni mezők belső használatra szolgálnak. A fiók több részén is felhasználhatók, például az exportált táblázatok oszlopaiként.
// Termékenként legfeljebb 20 egyéni mező lehet. A mezőnév legfeljebb 40 betűt, számot vagy aláhúzást tartalmazhat (kis- és nagybetűk számítanak), a "custom_" előtag nélkül, összesen 47 karakter.
// A mezőérték legfeljebb 500 bájt lehet (ez nem feltétlenül 500 karakter). Számként is beállíthatod: custom_varname:123,
// de az API mindig karakterláncként adja vissza (custom_varname:"123"). Szükség esetén alakítsd át a típust.
// Egyéni mező törléséhez állítsd az értékét ""-re. Ez a productEdit műveletre vonatkozik, nem a productCreate-re.
},
...
] }
VÁLASZ:{
...
"actions" : [
...
{
"a" : "productCreate",
"ok" : 1,
"code" : "REF-CODE", // Az adatbázisban tárolt végleges kód (például a speciális karaktereket átalakíthatjuk).
},
...
]
}
productEdit – Meglévő termék szerkesztése
{ "actions" : [
...
{
"a" : "productEdit",
"code" : "REF-CODE",
... // A productCreate paramétereit használja, mind opcionális.
"newCode" : "REF-CODE-RENAMED", // (opcionális)
"competitors" : ["https://...", "https://..."], // Ha megadod, FELÜLÍRJA az összes meglévő versenytársi URL-t.
// Ha csak URL-eket szeretnél hozzáadni vagy eltávolítani, használd helyette a productCompetitors műveletet.
"categories" : ["The Category 1", "The Category 2"], // Ha megadod, FELÜLÍRJA az összes meglévő kategóriát. Használd inkább a productCategories vagy categoryEdit műveletet.
"custom_someFieldName" : "New value or empty to delete that custom field",
// Ne feledd: termékenként legfeljebb 20 egyéni mező lehet. Új mezők hozzáadása előtt lehet, hogy régebbieket kell törölnöd "" érték beállításával.
},
...
] }
VÁLASZ:{
...
"actions" : [
...
{
"a" : "productEdit",
"ok" : 3, // A módosítások száma (például saját ár + 2 versenytársi URL = 3).
"code" : "REF-CODE", // Az adatbázis végleges (új) kódja (például speciális karakterek átalakítása után).
},
...
]
}
productCompetitors – Egy termék versenytársi URL-jeinek módosítása
{ "actions" : [
...
{
"a" : "productCompetitors",
"code" : "REF-CODE",
"competitorsAdd" : ["https://...", "https://..."], // (opcionális) Ezeknek a versenytársi URL-eknek a hozzáadása a meglévőkhöz.
"competitorsRemove" : ["https://...", "example.com/a0ff80...5f00", "example.net"], // (opcionális) Ezeknek a versenytársaknak az eltávolítása. Azonosítójuk lehet:
// > URL (az esetleges hashtag-módosítóval együtt). Címke opcionális.
// > A versenytárs "ref" azonosítója (a többi művelet által visszaadott gyökérdomain és egy 32 karakteres MD5-kód).
// > Gyökérdomain vagy teljes gazdagépnév; ekkor az adott domain összes versenytársi URL-je törlődik a termékből.
// MEGJEGYZÉS: a "competitorsAdd" és "competitorsRemove" egyetlen elemű tömb helyett karakterlánc is lehet.
// Az eltávolítás a hozzáadás előtt történik, így törölhetsz egy teljes domaint, majd hozzáadhatsz belőle egy URL-t.
},
...
] }
VÁLASZ:{
...
"actions" : [
...
{
"a" : "productCompetitors",
"ok" : 3, // A módosított versenytársi URL-ek száma.
"competitorsAdded" : 2, // A termékhez hozzáadott versenytársi URL-ek száma.
"competitorsRemoved" : 1, // A termékből eltávolított versenytársi URL-ek száma.
// HIBÁK:
// > Már meglévő URL hozzáadása NEM eredményez hibát (ok = 0).
// > Nem létező teljes URL vagy "ref" eltávolítása hibát okoz (ok = -1).
// > Nem létező domain összes URL-jének eltávolítása NEM okoz hibát (ok = 0).
},
...
]
}
productCategories – Egy vagy több termék kategóriáinak módosítása
Ez ugyanaz a funkció, amelyet a felületen az All Products oldalon, a termékek kijelölése után a Selected Products > Edit Categories menüpontra kattintva használsz. A részletesebb magyarázatért érdemes ott is megnézned.
Érdemes megnézni a categoryEdit műveletet is, hogy a számodra megfelelőt választhasd.
{ "actions" : [
...
{
"a" : "productCategories",
"code" : "REF-CODE", // Nem érzékeny a kis- és nagybetűkre (karakterlánc), VAGY:
"code" : ["REF-CODE-1", "REF-CODE-2"], // Tömb is lehet több termékkel (legfeljebb 100 000).
"categoriesRemove" : ["The Category 1", "The Category 2"], // (opcionális) Először eltávolítás ezekből a kategóriákból.
"categoriesRemoveAll" : 1, // (opcionális) Először eltávolítás minden kategóriából (mint productEdit esetén).
"deleteEmptyCategories" : 1, // Ezzel minden kategória törlődik, amely a termékek eltávolítása
// miatt üressé válik.
"categoriesAdd" : ["The Category 1", "The Category 2"], // (opcionális) Ezután hozzáadás ezekhez a kategóriákhoz (ha nem léteznek, létrejönnek).
"categoriesAddClear" : 1, // (opcionális) Először ürítsd ki azokat a kategóriákat, amelyekhez a termékeket hozzáadod.
},
...
] }
VÁLASZ:{
...
"actions" : [
...
{
"a" : "productCategories",
"ok" : 3, // A módosított termékek száma.
},
...
]
}
productRepricing – Több termék hozzárendelése átárazási szabályhoz
Ugyanezt végzi a productEdit művelet, de mivel egy kérés legfeljebb 1000 műveletet tartalmazhat, 50 000 termék hozzárendeléséhez 50 kérést kellene küldened, és a végrehajtás sokkal lassabb lenne.
Ha csak néhány terméket módosítanál, inkább a productEdit műveletet használd.
{ "actions" : [
...
{
"a" : "productRepricing",
"repricingRule" : "The Rule Name", // Nem érzékeny a kis- és nagybetűkre; a "" (létező, de üres karakterlánc) azt jelenti, hogy nincs szabály (átárazás kikapcsolva).
"products" : ["REF-CODE-1", "REF-CODE-2"], // Nem érzékeny a kis- és nagybetűkre (legfeljebb 100 000).
},
...
] }
VÁLASZ:{
...
"actions" : [
...
{
"a" : "productRepricing",
"ok" : 10, // A módosított termékek száma.
// Ha minden termékhez már ez a szabály tartozott, ok=0 az eredmény.
},
...
]
}
productDelete – Egy vagy több termék törlése
A felületen ugyanezt az All Products oldalon végezheted el: jelöld ki a termékeket, majd válaszd a Selected Products > Delete lehetőséget.
{ "actions" : [
...
{
"a" : "productDelete",
"code" : "REF-CODE", // Nem érzékeny a kis- és nagybetűkre (karakterlánc), VAGY:
"code" : ["REF-CODE-1", "REF-CODE-2"], // Tömb is lehet több termék törléséhez (legfeljebb 100 000).
"deleteEmptyCategories" : 1, // Ezzel minden kategória törlődik, amely a termékek eltávolítása
// Ezzel törlődnek azok a kategóriák is, amelyek e termék(ek) törlése miatt üressé válnak.
},
...
] }
VÁLASZ:{
...
"actions" : [
...
{
"a" : "productDelete",
"ok" : 2, // A sikeresen törölt termékek száma.
},
...
]
}
productGet – Termék lekérdezése
{ "actions" : [
...
{
"a" : "productGet",
"code" : "REF-CODE", // Nem érzékeny a kis- és nagybetűkre.
"currency" : "EUR", // (opcionális) Minden összeg átváltása ebbe a pénznembe a termék árának pénzneme helyett.
"withStats" : 1, // (opcionális) A statisztikai objektum visszaadása.
"noCompetitors" : 1, // (opcionális) Ne add vissza a versenytársak tömbjét (kisebb válaszméret).
"noComments" : 1, // (opcionális) Ne add vissza a megjegyzéseket (...).
"withScreenshots" : 1, // (opcionális) Minden versenytárshoz a legutóbbi képernyőkép URL-jének visszaadása.
"sickMax" : 2, // (opcionális, alapértelmezés: 1) 0–3; csak az N-nél nem magasabb "sickness" szintű versenytársi URL-eket adja vissza.
},
...
] }
A termék összes adatát visszaadja, beleértve a versenytársak aktuális árait és készletét.VÁLASZ:
{
...
"actions" : [
...
{
"a" : "productGet",
"ok" : 1,
"code" : "REF-CODE",
"name" : "The Product Name",
"price" : 1234.90, // A saját árad, mindig az eredeti pénznemben.
"currency" : "USD", // A "price" eredeti pénzneme.
"convCurrency" : "EUR", // Az átváltott összegek pénzneme (a megadott "currency" vagy a termék árához tartozó pénznem).
"priceConv" : 1234.90, // Saját árad "convCurrency"-re átváltva, vagy a "price" értékével azonos.
"cost" : 1234.90,
"costCurrency" : "USD",
"costPriceConv" : 1234.90, // A beszerzési árad a "currency" pénznemre átváltva.
"costConv" : 1234.90, // A beszerzési árad a "convCurrency" pénznemre átváltva.
"margin" : 10.5, // Százalék (negatív is lehet).
"repricingRule" : "The Rule Name", // Ez a 3 átárazási változó HIÁNYZIK, ha nincs átárazás.
"reprice" : 1234.90, // Az aktuális átárazási összeg a repricingRule alapján kiszámítva.
"repriceCurrency" : "USD", // Ugyanaz, mint a "convCurrency", itt csak az egyértelműség kedvéért szerepel.
"myWebsite" : "https://...",
"created" : 1234567890, // A termék létrehozásának epoch-ideje.
"createdBy" : "SOMEUSER", // Felhasználónév vagy "API".
"edited" : 1234567890, // Az utolsó módosítás epoch-ideje (ha volt).
"editedBy" : "SOMEUSER", // Felhasználónév vagy "API".
"comments" : "Some comments\nAnd another line",
"commentsLast" : 1234567890, // A megjegyzések utolsó szerkesztésének epoch-ideje (ha volt).
"commentsLastBy" : "SOMEUSER", // Felhasználónév vagy "API".
"categories" : ["The Category 1", "The Category 2"],
"stats" : {
// A statisztikába csak a 0-s és 1-es sickness-szintű versenytársi URL-ek számítanak bele, a "sickMax" értékétől függetlenül.
// Minden összeg "convCurrency" pénznemben van: vagy a megadott "currency", vagy a termék eredeti "currency" értéke.
// FIGYELMEZTETÉS: ha nincs rendelkezésre álló összeg (például compIn*, de senkinél nincs készlet), az érték 0.
"rank" : 1.23, // Ár szerinti helyezésed (1 = senki nem olcsóbb nálad).
"rankIn" : 1.23, // Helyezésed a készleten lévő versenytársak között.
"compCount" : 3, // Érvényes árral rendelkező versenytársak száma.
"compInCount" : 3, // Készleten lévő versenytársak száma.
"compOutCount" : 3, // Kifogyott versenytársak száma.
"compAvg" : 123.56, // Az összes versenytárs árának átlaga.
"compAvgVsMe" : 123.56, // A saját árad és a versenytársak átlagára közötti különbség ("convCurrency" pénznemben; negatív = te vagy olcsóbb).
"compInAvg" : 123.56, // A készleten lévő versenytársak átlagára.
"compInAvgVsMe" : 123.56, // Mint a "compAvgVsMe", de csak a készleten lévő versenytársakra.
"compLowest" : 123.56, // A legalacsonyabb versenytársi ár.
"compLowestVsMe" : 123.56, // Mint a "compAvgVsMe", de az átlag helyett a legalacsonyabb árra.
"compInLowest" : 123.56, // A legolcsóbb, készleten lévő versenytárs.
"compInLowestVsMe" : 123.56, // Mint a "compInAvgVsMe", de ...
"compHighest" : 123.56, // A legmagasabb versenytársi ár.
"compHighestVsMe" : 123.56, // Mint a "compAvgVsMe", de ...
"compInHighest" : 123.56, // A legdrágább, készleten lévő versenytárs.
"compInHighestVsMe" : 123.56, // Mint a "compInAvgVsMe", de ...
},
"competitors" : [
// A versenytársak tömbje, legolcsóbbtól kezdve; minden elem egy objektum:
...
{
"url" : "https://...", // Az esetleg megadott hashtag-módosítót is tartalmazza.
"ref" : "example.com/123abc...def",
// URL-hivatkozási azonosító (gyökérdomain és 32 karakteres MD5). Így azonosítjuk belsőleg az URL-eket.
"domain" : "example.com", // A versenytárs gyökérdomainje.
"price" : 1234.90, // A webhelyen utoljára talált összeg (a beállított matematikai módosítások után).
"currency" : "USD", // A webhelyen talált pénznem.
"priceConv" : 1234.90, // Az ár "convCurrency" pénznemre átváltva.
"stock" : "5", // Készlet (karakterlánc): "A" = elérhető, "2" = 2 darab készleten, "0" = nincs készleten, "" = ismeretlen.
"salesWk" : 123, // Becsült heti eladások (ha elérhető; magyarázat a termékoldal kérdőjelénél).
"screenshotURL" : "https://pricezag.com/.../screenshot.png",
// Ha "withScreenshots" aktív, a legújabb képernyőkép URL-je (nem kell bejelentkezni; a hosszú URL nyilvánosan elérhető).
"confidence" : 98,
// Az általunk kiválasztott ár helyességének becsült valószínűsége százalékban (magyarázat a termékoldali (?) ikonra kattintva).
// 70% alatt (állítható) a platformon kérdőjellel jelöljük a megbízhatatlan árakat.
// Ez független a sickness-állapottól. Az URL lehet hibás, miközben a legutóbbi látogatáskor helyes árat találtunk,
// vagy működhet a látogatás, de nem lehetünk biztosak abban, hogy a megfelelő árat olvastuk ki.
"sick" : 0, // Az URL sickness-szintje 0–3 között.
// 0: A legutóbbi lekérés sikeres volt (az oldalt elértük, és árat találtunk).
// 1: A legutóbbi lekérés sikertelen volt, de nemrég sikerült (nem kell aggódni; gyakran előfordul).
// 2: Több napja nem találtunk érvényes árat.
// 3: Több hete nem találtunk érvényes árat.
// MEGJEGYZÉS: a "price" és "priceConv" mezők csak legfeljebb 1-es sickness-szintű URL-eknél érhetők el. A 2-es és 3-as szinthez nem tartozik ár.
},
...
],
"custom" : {
// Ezek az egyéni mezőid. Ha nem ismered őket, nyisd meg
// egy termék oldalát a felületen, és kattints a CUSTOM FIELDS mező melletti (?) ikonra.
// Ha nincs egyéni mező, a teljes "custom" objektum hiányzik.
"variable_1" : "value 1", // Az értékek mindig karakterláncok, még ha valójában számok is.
"variable_2" : "value 2", // Üres érték nincs: azzal a mező törlődne.
...
}
},
...
]
}
productGetAll – Az összes termék lekérdezése
{ "actions" : [
...
{
"a" : "productGetAll",
"currency" : "EUR", // (opcionális) Minden összeg átváltása ebbe a pénznembe, nem az egyes termékek saját pénznemébe.
"withStats" : 1, // (opcionális) A statisztikai objektum visszaadása.
"noCompetitors" : 1, // (opcionális) Ne add vissza a versenytársak tömbjét (kisebb válaszméret).
"noComments" : 1, // (opcionális) Ne add vissza a megjegyzéseket (...).
"withScreenshots" : 1, // (opcionális) Minden versenytárshoz a legutóbbi képernyőkép URL-jének visszaadása.
"sickMax" : 2, // (opcionális, alapértelmezés: 1) 0–3; csak az N-nél nem magasabb "sickness" szintű versenytársi URL-eket adja vissza.
},
...
] }
VÁLASZ:{
...
"actions" : [
...
{
"a" : "productGetAll",
"ok" : 10, // Termékek száma összesen.
"products" : [ // Termékobjektumok tömbje, referenciakód szerinti alfanumerikus sorrendben:
...
{ ... }, // Termékobjektum, ugyanúgy, mint a fenti productGet válaszában.
...
],
},
...
]
}
A categoryGet művelet is hasznos lehet.Kategóriák
categoryCreate – Új kategória létrehozása
Más műveletekkel ellentétben, amelyek meglévő és új kategóriákat is elfogadnak (például productCreate), ez a művelet hibát ad, ha a kategória már létezik.
{ "actions" : [
...
{
"a" : "categoryCreate",
"name" : "The New Category Name",
"name" : ["New Category 1", "New Category 2"], // Tömb is lehet.
"products" : ["REF-CODE-1", "REF-CODE-2"], // (opcionális) Termékek hozzárendelése ezekhez a kategóriákhoz a létrehozásukkor.
"comments" : "Some comments\nAnd another line", // (opcionális) Legfeljebb 1000 UTF-8 karakter.
},
...
] }
categoryEdit – Meglévő kategória szerkesztése
{ "actions" : [
...
{
"a" : "categoryEdit",
"name" : "The Category Name", // Nem érzékeny a kis- és nagybetűkre.
"newName" : "The Category Renamed", // (opcionális)
"products" : ["REF-CODE-1", "REF-CODE-2"], // (opcionális) A terméklista felülírása.
"productsAdd" : ["REF-CODE-1", "REF-CODE-2"], // (opcionális) Termékek hozzáadása a kategóriához.
"productsRemove" : ["REF-CODE-3", "REF-CODE-4"], // (opcionális) Termékek eltávolítása a kategóriából (NEM törli őket).
"comments" : "To overwrite the comments.", // (opcionális) Legfeljebb 1000 UTF-8 karakter.
},
...
] }
A "products", "productsAdd" és "productsRemove" mind a kategóriához tartozó termékeket módosítja, de eltérő módon. Az összes termék eltávolításához használd ezt: "products" : []VÁLASZ:
{
...
"actions" : [
...
{
"a" : "categoryEdit",
"ok" : 5, // Végrehajtott módosítások száma.
// (Az átnevezés és a megjegyzés módosítása egy-egy változás, ahogy minden termék hozzáadása/eltávolítása is.)
"name" : "The Category Name", // Az új név, ha át lett nevezve, egyébként a régi név.
"productsCount" : 30, // A kategóriában lévő termékek új száma (függetlenül attól, hogy változott-e).
"productsAdded" : 2, // A kategóriához hozzáadott termékek száma.
"productsRemoved" : 2, // A kategóriából eltávolított termékek száma.
},
...
]
}
categoryDelete – Egy vagy több kategória törlése
{ "actions" : [
...
{
"a" : "categoryDelete",
"name" : "The Category Name", // Nem érzékeny a kis- és nagybetűkre (karakterlánc), VAGY:
"name" : ["Category 1", "Category 2"], // Tömb is lehet több kategória törléséhez (legfeljebb 1000).
"deleteProducts" : 1,
// Alapértelmezés szerint a kategória törlődik, de termékei megmaradnak,
// viszont deleteProducts esetén a kategória összes terméke megerősítés nélkül törlődik,
// és velük együtt a versenytársi URL-ek is, visszaállítási lehetőség nélkül!
},
...
] }
VÁLASZ:{
...
"actions" : [
...
{
"a" : "categoryDelete",
"ok" : 2, // A törölt kategóriák száma.
"productsCount" : 123, // Az adott kategóriákban érintett termékek száma.
"productsDeleted" : 123, // A "deleteProducts" beállítás miatt törölt termékek száma.
// MEGJEGYZÉS: a több megadott kategóriában is szereplő termékek csak egyszer számítanak.
},
...
]
}
categoryCopy – Termékek másolása/áthelyezése kategóriák között
Ez a művelet nem töröl termékeket: csak a kategóriák közötti hozzárendelésüket módosítja.
A felületen ugyanezt a Categories oldalon végezheted el: jelöld ki a kategóriákat, majd válaszd a Selected Categories > Copy & More lehetőséget. Ott részletesebb útmutatást is találsz.
{ "actions" : [
...
{
"a" : "categoryCopy",
"categoriesFrom" : ["Category 1", "Category 2"], // A forráskategóriákba tartozó termékek kiválasztása.
"removeMode" : "cat", // (opcionális) Az érintett termékek eltávolítása a megadott "categoriesFrom" kategóriákból.
"removeMode" : "all", // (opcionális) Az érintett termékek eltávolítása minden kategóriájukból.
// Ha a removeMode nincs megadva, a termékek a "categoriesFrom" kategóriákban is megmaradnak, és hozzáadódnak a "categoriesTo" kategóriákhoz (másolás, nem áthelyezés).
"deleteMode" : "cat", // (opcionális) A megadott "categoriesFrom" kategóriák törlése a másolás után.
"deleteMode" : "all", // (opcionális) Az érintett termékek összes kategóriájának törlése.
// Ha a deleteMode nincs megadva, a "categoriesFrom" kategóriák a termékek removeMode miatti eltávolítása után is megmaradnak.
"categoriesTo" : ["Another Category 1", "Another Category 2"],
// A kiválasztott termékek hozzáadása ezekhez a célkategóriákhoz (a hiányzókat létrehozza).
"categoriesToClear" : 1, // (opcionális) Először ürítsd ki azokat a kategóriákat, amelyekhez a termékeket hozzáadod.
},
...
] }
VÁLASZ:{
...
"actions" : [
...
{
"a" : "categoryCopy",
"ok" : 3, // A módosított kategóriák száma (forrás- és célkategóriák együtt).
// Az "ok" értéke: categoriesModified + categoriesCreated + categoriesDeleted.
"categoriesModified" : 2, // A módosított meglévő kategóriák száma (forrás- és célkategóriák).
"categoriesCreated" : 1, // Az újonnan létrehozott kategóriák száma.
"categoriesDeleted" : 0, // A "deleteMode" miatt törölt kategóriák száma.
"productsCount" : 123, // A megadott "categoriesFrom" kategóriákba tartozó termékek száma.
// MEGJEGYZÉS: a több "categoriesFrom" kategóriában is szereplő termék csak egyszer számít.
},
...
]
}
categoryGet – Kategória lekérdezése
{ "actions" : [
...
{
"a" : "categoryGet",
"name" : "The Category Name", // Nem érzékeny a kis- és nagybetűkre.
"currency" : "EUR", // (KÖTELEZŐ, ha withStats vagy withProducts aktív) A statisztikák pénzneme.
"withStats" : 1, // A statisztikák visszaadása is (lassabb).
"withProducts" : 1, // A kategória termékeinek visszaadása is (nagy adatmennyiség lehet).
"noCompetitors" : 1, // Ha withProducts aktív, a versenytársak tömbjének kihagyása (kisebb válaszméret).
"noComments" : 1, // Ha withProducts aktív, a termékmegjegyzések kihagyása (a kategóriamegjegyzések maradnak).
},
...
] }
VÁLASZ:{
...
"actions" : [
...
{
"a" : "categoryGet",
"ok" : 1,
"name" : "The Category Name",
"created" : 1234567890, // Epoch-idő.
"createdBy" : "SOMEUSER", // Felhasználónév vagy "API".
"comments" : "Comments of this category",
"commentsLast" : 1234567890, // A megjegyzések utolsó szerkesztésének epoch-ideje (ha volt).
"commentsLastBy" : "SOMEUSER", // Felhasználónév vagy "API".
"productsCount" : 10, // A kategóriában lévő termékek száma.
"stats" : {
// Ezek a statisztikák láthatók a kategória oldalán és a kategórialista oszlopaiban a felületen.
// Részletesebb magyarázatért válaszd ki őket oszlopként a listában, és kattints a (?) ikonra.
// Minden összeg a kérésben megadott "currency" pénznemben szerepel.
// FIGYELMEZTETÉS: ha nincs rendelkezésre álló összeg (például compIn*, de senkinél nincs készlet), az érték 0.
"priceAvg" : 123.45, // A saját átlagárad.
"costAvg" : 123.45, // Csak a beszerzési árral rendelkező termékek számítanak bele ebbe az átlagba.
"marginAvg" : 10.5, // Százalék (negatív is lehet, csak a beszerzési árral rendelkező termékek számítanak).
"rankAvg" : 1.23, // Átlagos árhelyezésed (1 = senki sem olcsóbb nálad).
"rankInAvg" : 1.23, // Átlagos helyezésed a készleten lévő versenytársak között.
"productsCountComp" : 9, // Versenytársakkal rendelkező termékek száma.
"productsCountCompIn" : 7, // Készleten lévő versenytársakkal rendelkező termékek száma.
"compAvg" : 123.56, // Az összes versenytársi átlagár átlaga.
"compAvgVsMe" : 123.56, // A saját és versenytársi árak közötti átlagos különbség (negatív = te vagy olcsóbb).
"compInAvg" : 123.56, // Mint a "compAvg", de csak készleten lévő versenytársakkal.
"compInAvgVsMe" : 123.56, // Mint a "compAvgVsMe", de csak a készleten lévő versenytársakra.
"compLowest" : 123.56, // Mint a "compAvg", de termékenként a legolcsóbb versenytársak átlagával.
"compLowestVsMe" : 123.56, // Mint a "compAvgVsMe", de ...
"compInLowest" : 123.56, // Mint a "compInAvg", de ...
"compInLowestVsMe" : 123.56, // Mint a "compInAvgVsMe", de ...
"compHighest" : 123.56, // Mint a "compAvg", de termékenként a legdrágább versenytársak átlagával.
"compHighestVsMe" : 123.56, // Mint a "compAvgVsMe", de ...
"compInHighest" : 123.56, // Mint a "compInAvg", de ...
"compInHighestVsMe" : 123.56, // Mint a "compInAvgVsMe", de ...
},
"products" : [ // Termékobjektumok tömbje, referenciakód szerinti alfanumerikus sorrendben:
...
{ ... }, // Termékobjektum, mint a productGet válaszában.
...
],
},
...
]
}
categoryGetAll – Az összes kategória lekérdezése
{ "actions" : [
...
{
"a" : "categoryGetAll",
"withStats" : 1, // A statisztikák visszaadása is (lassabb).
"noComments" : 1, // A megjegyzések kihagyása (kisebb válaszméret).
"noProducts" : 1, // A termékek tömbjének kihagyása (...).
},
...
] }
VÁLASZ:{
...
"actions" : [
...
{
"a" : "categoryGetAll",
"ok" : 10, // A kategóriák száma összesen (a "categories" tömb hossza).
"categories" : [ // Kategóriaobjektumok tömbje, alfanumerikus sorrendben:
...
{
"name" : "The Category Name",
"created" : 1234567890, // Epoch-idő.
"createdBy" : "SOMEUSER", // Felhasználónév vagy "API".
"comments" : "Comments of this category",
"commentsLast" : 1234567890, // A megjegyzések utolsó szerkesztésének epoch-ideje (ha volt).
"commentsLastBy" : "SOMEUSER", // Felhasználónév vagy "API".
"productsCount" : 2, // A kategóriában lévő termékek száma.
"products" : ["REF-CODE-1", "REF-CODE-2"], // A termékek referenciakódjai (alfanumerikus sorrendben), kivéve ha noProducts=1.
"stats" : {
// Ha "withStats" aktív, ugyanaz a statisztikai objektum, mint a fenti categoryGet műveletnél.
...
},
}
...
],
},
...
]
}
Értesítések
alertRecipientCreate – Új értesítési címzett létrehozása
Az egyes mezőkről a fiókodban található zöld kérdőjelikonokra kattintva kaphatsz részletes információt.
{ "actions" : [
...
{
"a" : "alertRecipientCreate",
"email" : "john@example.net", // Lehet SMS-értesítésekhez használt telefonszám is (lásd a felület súgóját).
"name" : "john", // Egyszerű megjelenített név (általában a keresztnév; nem érzékeny a kis- és nagybetűkre).
"maxFrequency" : 1800, // (opcionális, alapértelmezés: 7200) Lásd a felület súgóját.
"simplify" : 0, // (opcionális, alapértelmezés: 1) Egyszerűsítés bekapcsolása (lásd a felület súgóját).
"sleepEnabled" : 1, // (opcionális) Alvási időszak bekapcsolása.
"sleepFrom" : "18:30", // (csak ha sleepEnabled) 24 órás formátum.
"sleepTo" : "07:00", // (csak ha sleepEnabled) 24 órás formátum.
"timezone" : "America/Los_Angeles", // (csak ha sleepEnabled) Linux-időzónaútvonal a /usr/share/zoneinfo könyvtárból.
// A szóközöket aláhúzásokra alakítjuk.
// Keresd meg az időzónádat a felület [New Recipient] űrlapján a pontos érték ellenőrzéséhez.
"status" : "hold", // (opcionális) "hold" vagy "disable" mód. Más érték (például "") esetén aktív.
"rules" : [...], // (opcionális) Kezdeti értesítési szabályok (szabályobjektumok tömbje), mint a lenti alertRecipientEdit "rulesAdd" mezőjében.
},
...
] }
VÁLASZ:{
...
"actions" : [
...
{
"a" : "alertRecipientCreate",
"ok" : 1,
},
...
]
}
alertRecipientEdit – Címzett és/vagy értesítési szabályainak módosítása
Az egyes mezőkről a fiókodban található zöld kérdőjelikonokra kattintva kaphatsz részletes információt.
Az "email" mező azonosítja a módosítandó címzettet; a többi mező annak beállításait változtatja meg.
{ "actions" : [
...
{
"a" : "alertRecipientEdit",
"email" : "john@example.net", // Jelenlegi e-mail-cím vagy telefonszám (pontosan az alertGetAll által visszaadott formátumban).
"newEmail" : "john2@example.net", // (opcionális) Új e-mail-cím vagy telefonszám; lásd a felület súgóját.
"name" : "john2", // (opcionális) Új név.
"maxFrequency" : 1800, // (opcionális) Lásd a felület súgóját.
"simplify" : 1, // (opcionális) Egyszerűsítés bekapcsolása (lásd a felület súgóját).
"sleepEnabled" : 1, // (opcionális) Alvási időszak bekapcsolása.
"sleepFrom" : "18:30", // (csak ha sleepEnabled) 24 órás formátum.
"sleepTo" : "07:00", // (csak ha sleepEnabled) 24 órás formátum.
"timezone" : "America/Los_Angeles", // (csak ha sleepEnabled) Lásd fent az alertRecipientCreate műveletet.
"status" : "hold", // (opcionális) "hold" vagy "disable" mód. Más érték (például "") esetén "active".
"rules" : [{ruleObject}, {ruleObject}], // (opcionális) Az összes meglévő szabály felülírása (üres tömbbel mind törölhető).
// Ne add meg a "rules" tömböt, ha meg szeretnéd tartani a meglévő szabályokat.
"rulesAdd" : [ // (opcionális) Ezeknek a szabályoknak a hozzáadása a meglévőkhöz.
...
{ // EZ EGY SZABÁLYOBJEKT FORMÁTUMA:
"name" : "me_cross_avg", // A szabály API-nevét a felület Alerts > [Rules] > [+ New Rule] menüpontjában, a szabály kiválasztásával találod.
"disabled" : 1, // (opcionális) Letiltott szabályt létrehozni furcsa lenne, de a lenti alertRuleEdit műveletnél hasznos lehet.
"var_n" : 123.00, // Az "X" változóból "var_x" lesz,
"var_c" : "USD", // ... így itt a szabály által megkövetelt mezők szerepeljenek,
"var_h" : 24, // ... néhány szabálynak pedig egyáltalán nincs változója.
"direction" : "both", // Vagy "drop" vagy "rise", ha a szabálynak iránya van.
"categories" : ["The Category 1", "The Category 2"], // (opcionális) Üres vagy hiányzó érték = AZ ÖSSZES TERMÉK.
"ignoreOos" : 1, // (opcionális) A készlethiányos versenytársak figyelmen kívül hagyása (lásd a felületet).
"urlInclude" : "", // (opcionális, nem érzékeny a kis- és nagybetűkre).
"urlExclude" : "amazon", // (opcionális, nem érzékeny a kis- és nagybetűkre).
// A "ruleNumber" azonosít minden egyes szabályt (például későbbi módosításkor vagy törléskor).
// A szabályok lekérdezésekor látod, de nem állíthatod be.
}
...
],
"rulesRemove" : [1,4,7], // (opcionális) Az eltávolítandó szabályok "ruleNumber" értéke.
// Ezt a "ruleNumber" értéket a lenti alertGetAll művelet adja vissza.
// MEGJEGYZÉS: minden szabály törléséhez inkább használd a "rules" = [] beállítást.
},
...
] }
VÁLASZ:{
...
"actions" : [
...
{
"a" : "alertRecipientEdit",
"ok" : 3, // A módosítások száma (változók + hozzáadott/törölt szabályok száma).
},
...
]
}
alertRecipientDelete – Értesítési címzett törlése
{ "actions" : [
...
{
"a" : "alertRecipientDelete",
"email" : "john@example.net", // Jelenlegi e-mail-cím vagy telefonszám (pontosan az alertGetAll által visszaadott formátumban).
},
...
] }
VÁLASZ:{
...
"actions" : [
...
{
"a" : "alertRecipientDelete",
"ok" : 1,
},
...
]
}
alertRuleEdit – Meglévő értesítési szabály szerkesztése
Szabály törléséhez használd az alertRecipientEdit művelet „rulesRemove” tömbjét; új szabály hozzáadásához pedig ugyanott a „rulesAdd” tömböt.
{ "actions" : [
...
{
"a" : "alertRuleEdit",
"email" : "john@example.net", // A címzett e-mail-címe vagy telefonszáma (az alertGetAll válaszával azonos formátumban).
"ruleNumber" : 1, // A módosítandó szabály referenciaazonosítója, a lenti alertGetAll válaszából.
"rule" : {
// A felülírandó szabályváltozók. A SZABÁLYOBJEKTUM FORMÁTUMÁT lásd fent az alertRecipientEdit "rulesAdd" részében.
"disabled" : 1, // Például szabály be- vagy kikapcsolásához.
"var_n" : 5, // Vagy más változóhoz, például N-hez, a szabály típusától függően.
...
},
},
...
] }
VÁLASZ:{
...
"actions" : [
...
{
"a" : "alertRuleEdit",
"ok" : 1, // A módosított változók száma.
},
...
]
}
alertGetAll – Az összes címzett és szabály lekérdezése
{ "actions" : [
...
{
"a" : "alertGetAll",
// Ez a művelet nem fogad paramétereket.
},
...
] }
VÁLASZ:{
...
"actions" : [
...
{
"a" : "alertGetAll",
"ok" : 3, // Címzettek száma (valójában a "recipients" tömb hossza).
"recipients" : [ // Az összes címzett tömbje; minden elem objektum, mint a fenti alertRecipientCreate műveletnél.
...
{
"email" : "john@example.net",
"name" : "john",
"maxFrequency" : 1800,
"simplify" : 0,
"sleepEnabled" : 1,
"sleepFrom" : "18:30",
"sleepTo" : "07:00",
"timezone" : "America/Los_Angeles",
"status" : "active",
"rules" : [ // Szabályok tömbje; minden elem a fenti alertRecipientEdit műveletnél leírt objektum.
...
{
"ruleNumber" : 4, // A szabály referenciaazonosítója a fenti alertRuleEdit művelettel történő módosításhoz.
"name" : "me_cross_avg",
"disabled" : 0,
"var_n" : "123.00", // MEGJEGYZÉS: minden változót karakterláncként adunk vissza, akkor is, ha szám.
"var_c" : "USD",
"var_h" : "24",
"direction" : "both",
"categories" : [], // Üres érték = az összes termék.
"ignoreOos" : 0,
"urlInclude" : "",
"urlExclude" : "amazon",
}
...
],
}
...
],
},
...
]
}
Átárazási szabályok
repricingCreate – Új átárazási szabály létrehozása
Az egyes mezőkről a fiókodban található zöld kérdőjelikonokra kattintva kaphatsz részletes információt.
Hogyan rendelhetsz termékeket az új szabályhoz? A termékeket kell módosítanod a productEdit vagy productRepricing művelettel. Valójában a szabály nem „tartalmaz” termékeket: minden termék a hozzá rendelt szabályra hivatkozik.
{ "actions" : [
...
{
"a" : "repricingCreate",
"name" : "The Rule Name", // Legfeljebb 50 karakter.
"init" : { // A kezdőérték objektuma (az első sor, amelynek neve "Set my price to").
"target" : "cheapest_n", // (Lásd az alábbi listát.)
"var_n" : 3, // Csak ha a cél N változót igényel.
"plusAmount" : -2, // Pozitív = fölé, negatív = alá.
"plusCurrency" : "%", // Pénznem (például "USD") vagy "%".
// Ez azt jelenti: „Állítsd a saját áramat a 3 legolcsóbb versenytárs átlagára alá 2%-kal.”
// FIGYELMEZTETÉS: a lenti "never" objektumokkal ellentétben a kezdőértéknél nincs "direction" mező. A "plusAmount" előjele határozza meg, hogy alá vagy fölé kerül-e az ár.
},
"never" : [ // (opcionális) „De soha” feltételobjektumok, végrehajtási sorrendben (legfeljebb 10).
{
"target" : "cheapest_n_in", // (Lásd az alábbi listát.)
"var_n" : 1, // Csak ha a cél N változót igényel.
"direction" : "below", // Vagy "above".
"plusAmount" : -10, // Pozitív = hozzáadás, negatív = levonás (0 esetén is kötelező).
"plusCurrency" : "USD", // Pénznem vagy "%" (plusAmount=0 esetén is kötelező).
// Ez azt jelenti: „De soha ne legyen alacsonyabb a legolcsóbb, készleten lévő versenytárs áránál mínusz 10,00 USD.”
},
{
"target" : "cost",
"direction" : "below",
"plusAmount" : 5,
"plusCurrency" : "%",
// Ez azt jelenti: „De soha ne legyen alacsonyabb a beszerzési áramnál plusz 5%.”
}
],
"ignoreDomains" : "amazon ebay.com MyLabel1", // (opcionális) Figyelmen kívül hagyandó versenytársi domainek és/vagy címkék (kis- és nagybetűktől függetlenül; lásd a felületet).
"charm" : "none|zeros|charm", // (opcionális, alapértelmezés: "none") Végződéses árképzés; a "", "none" és hiányzó érték ugyanaz.
"confidence" : 82, // (opcionális, alapértelmezés: 70) Minimális megbízhatóság 0–99% (lásd a felületet).
"disabled" : 1, // (opcionális)
},
...
] }
// ========== Az elérhető "target" értékek: ==========
// "average": Az összes versenytárs átlagára.
// "average_in": A készleten lévő versenytársak átlagára.
// "cheapest_n": Az N legolcsóbb versenytárs átlagára (N=1 esetén a legolcsóbb).
// "cheapest_n_in": Az N legolcsóbb készleten lévő versenytárs átlagára (vagy ...).
// "highest_n": Az N legdrágább versenytárs átlagára (vagy ...).
// "highest_n_in": Az N legdrágább készleten lévő versenytárs átlagára (vagy ...).
// "cost": Saját beszerzési áram.
// "me_avg_n": A saját áram N órás átlaga (az árváltozás sebességének korlátozására).
// "domain:example.com": Az example.com ára (ha több van, a legalacsonyabb).
// "domainIn:example.com": Az example.com ára, csak ha készleten van (...).
VÁLASZ:{
...
"actions" : [
...
{
"a" : "repricingCreate",
"ok" : 3, // A sikeresen feldolgozott és mentett objektumok száma (például init + never[0] + never[1] = 3).
"name" : "The Rule Name", // Az adatbázisban szereplő végleges név (speciális karakterek átalakítása után).
},
...
]
}
repricingEdit – Meglévő átárazási szabály módosítása
Lásd a fenti repricingCreate részt a változók működésének megértéséhez.
Ez magát a szabályt módosítja, nem a hozzárendelt termékeket. Termékek szabályhoz rendeléséhez a productEdit vagy a productRepricing műveletet használd.
{ "actions" : [
...
{
"a" : "repricingEdit",
"name" : "The Rule Name", // Nem érzékeny a kis- és nagybetűkre.
"newName" : "The Rule Renamed", // (opcionális) Legfeljebb 50 karakter.
"init" : { // (opcionális) Ha megadod, felülírja a kezdőérték egyes változóit (lásd repricingCreate).
"plusAmount" : 1, // Például csak a "plusAmount" mezőt írhatod felül, a többi változatlan marad.
// FIGYELMEZTETÉS: ha az új "target" N változót igényel, a "var_n" mezőt is meg kell adnod.
},
"never" : [...], // (opcionális) A teljes "never" tömböt is felülírhatod, de valószínűleg érdemes inkább a never_* mezőket használni.
// A "never":[] törli az összes meglévő feltételt. Ha megtartanád őket, hagyd ki ezt a mezőt.
"never_0" : { // (opcionális) Az első „De soha” feltétel felülírása (0-s tömbindex).
"var_n" : 2, // Például csak a "var_n" mezőt írhatod felül, a többi változatlan marad.
},
"never_2" : {
"target" : "", // Ezzel a harmadik „De soha” feltétel kikapcsol (2-es tömbindex).
// Ha a "target" értéke "", az objektum többi mezőjével nem kell foglalkoznod.
// A "never_2":{} ugyanezt teszi.
},
"never_6" : {...}, // Ez lehet újonnan hozzáadott „De soha” feltétel is; ekkor minden mező kötelező, mint a repricingCreate műveletnél.
// A "never_9" a legnagyobb index, mert a "never" tömb legfeljebb 10 elemből állhat.
"ignoreDomains" : "", // (opcionális) Ugyanaz, mint a repricingCreate műveletnél.
"charm" : "zeros", // (opcionális) ...
"confidence" : 82, // (opcionális) ...
"disabled" : 1, // (opcionális) 0 a jelenleg letiltott szabály bekapcsolásához.
},
...
] }
VÁLASZ:{
...
"actions" : [
...
{
"a" : "repricingEdit",
"ok" : 3, // A módosítások száma (például egy never_N objektum egyik változója + egy init-változó + "charm").
"name" : "The Rule Name", // Az adatbázisban tárolt végleges (új) név (speciális karakterek átalakítása után).
},
...
]
}
repricingDelete – Átárazási szabály törlése
{ "actions" : [
...
{
"a" : "repricingDelete",
"name" : "The Rule Name", // Nem érzékeny a kis- és nagybetűkre.
"onlyIfUnused" : 1, // (opcionális) Biztonsági ellenőrzés: hibát ad, ha a szabályt termék(ek) használják.
},
...
] }
VÁLASZ:{
...
"actions" : [
...
{
"a" : "repricingDelete",
"ok" : 1,
"productsCount" : 10, // A szabályt korábban használó, most szabály nélkül maradt termékek száma.
},
...
]
}
repricingGetAll – Az összes átárazási szabály lekérdezése
{ "actions" : [
...
{
"a" : "repricingGetAll",
// Ez a művelet nem fogad további paramétereket.
},
...
] }
VÁLASZ:{
...
"actions" : [
...
{
"a" : "repricingGetAll",
"ok" : 10, // Szabályok száma összesen (a "rules" tömb hossza).
"rules" : [ // Átárazási szabályok tömbje alfanumerikus sorrendben; minden szabály objektum:
...
{
"name" : "Some Repricing Rule",
"created" : 1234567890, // A szabály első létrehozásának epoch-ideje.
"createdBy" : "SOMEUSER", // Felhasználónév vagy "API".
"edited" : 1234567890, // Az utolsó módosítás ideje (ha volt, egyébként a mező hiányzik).
"editedBy" : "SOMEUSER", // Felhasználónév vagy "API" (vagy hiányzik).
"disabled" : 1234567890, // Ha a szabály jelenleg le van tiltva, az utolsó letiltás epoch-ideje; egyébként hiányzik.
"disabledBy" : "SOMEUSER", // Felhasználónév vagy "API" (vagy hiányzik).
"productsCount" : 10, // A szabályt jelenleg használó termékek száma.
"ignoreDomains" : "amazon ebay.com MyLabel1", // Figyelmen kívül hagyott versenytársi domainek és/vagy címkék (lásd a felületet).
"charm" : "charm", // Végződéses árképzés módja (none|zeros|charm).
"confidence" : 82, // Minimális megbízhatósági százalék 0–99 (lásd a felületet).
"init" : { // A kezdőérték objektuma (az első sor, amelynek neve "Set my price to").
"target" : "cheapest_n", // (Lásd a repricingCreate listáját.)
"var_n" : 3, // Ha a cél N változót igényel, egyébként hiányzik.
"plusAmount" : -2, // Pozitív = fölé, negatív = alá.
"plusCurrency" : "%", // Pénznem (például "USD") vagy "%".
// Ez azt jelenti: „Állítsd a saját áramat a 3 legolcsóbb versenytárs átlagára alá 2%-kal.”
// FIGYELMEZTETÉS: a lenti "never" objektumokkal ellentétben a kezdőértéknél nincs "direction" mező. A "plusAmount" előjele határozza meg, hogy alá vagy fölé kerül-e az ár.
},
"never" : [ // A „De soha” feltételobjektumok a végrehajtás sorrendjében.
{
"target" : "cheapest_n_in",
"var_n" : 1,
"direction" : "below", // Vagy "above".
"plusAmount" : -10, // Pozitív = hozzáadás, negatív = levonás.
"plusCurrency" : "USD", // Pénznem vagy "%".
// Ez azt jelenti: „De soha ne legyen alacsonyabb a legolcsóbb, készleten lévő versenytárs áránál mínusz 10,00 USD.”
},
{}, // Ez azt jelenti, hogy a „De soha” feltételek második sorát üresen hagytad.
{
"target" : "cost",
"direction" : "below",
"plusAmount" : 5,
"plusCurrency" : "%",
// Ez azt jelenti: „De soha ne legyen alacsonyabb a beszerzési áramnál plusz 5%.”
}
],
}
...
],
},
...
]
}
Táblázatok
spreadsheetDownload – Táblázat letöltése
Ugyanazt tudja, mint amit a fiókod Export oldalán elvégezhetsz.
A timeout időtúllépési beállítást állítsd elég magasra, mert a nagy táblázatok előállítása időbe telhet.
EGYSZERŰ MEGOLDÁS: Az Export oldalon kattints a Show API equivalent gombra: ez létrehozza az űrlapon kiválasztott beállításoknak megfelelő teljes JSON-kérést (és curl-parancsot).
{ "actions" : [
{
"a" : "spreadsheetDownload",
"preset" : "Some Preset Name", // (opcionális) Az alábbi mezők helyett használhatod saját vagy általunk kínált sablonjaidat.
// Saját sablon esetén add meg a teljes nevet, a felhasználónév előtagja és a pénznem utótagja nélkül.
// Az alapértelmezett sablonjaink nevét az Export oldalon a DIRECT DOWNLOAD legördülő menü elemére mutatva találod meg.
// Például a "pricezag_backup" a speciális biztonsági mentési sablonunk (lásd a DIRECT DOWNLOAD menü "Special BACKUP format to re-import" elemét).
// Az alábbi változókkal felülírhatod a sablon alapbeállításait (például más pénznemet, formátumot vagy kategóriákat használhatsz).
"savePreset" : "My New Preset Name", // (opcionális) Az alább megadott beállítások mentése új sablonként, amelyet a felületen és az API-ban is használhatsz.
// KIVÉTEL A KIVÉTELBEN: savePreset esetén nem töltődik le táblázat; helyette a szokásos JSON-objektumot kapod válaszként.
"savePresetOverwrite" : 1, // (opcionális) A "savePreset" értékével megadott meglévő sablon felülírása (különben hibát ad).
// FIGYELMEZTETÉS: a felülírás minden korábbi beállítást töröl, ezért ne próbálj így csak egyetlen mezőt módosítani.
// Sablon átnevezéséhez vagy törléséhez használd a lenti spreadsheetPresetEdit műveletet.
"downloadURL" : 1, // (opcionális) KIVÉTEL A KIVÉTELBEN: táblázatfájl helyett a szokásos JSON-választ adja vissza, benne a "fileURL" mezővel.
// Ez a fájl nyilvános URL-je (nem kell hitelesítés vagy API-kulcs). A fájl 15 percig bárhonnan letölthető.
// Az "ok" értéke a sorok száma, és a bájtban megadott "fileSize" is szerepel.
"format" : "xlsx|xls|csv|csv-tab", // (API esetén alapértelmezés: csv).
"currency" : "USD", // (KÖTELEZŐ, ha nincs sablon) A pénznem, amelyben az ÖSSZES összeg szerepel.
"categories" : ["Category 1", "Category 2"], // Csak ezekből a kategóriákból származó termékeket exportálj (egyébként az összeset).
"historyPeriod" : "prev_6mo", // (opcionális, alapértelmezés: "now").
// ELŐSZÖR nézd meg az Export oldal előzményidőszakok melletti (?) súgóikonjait, mert ott minden részletet elmagyarázunk.
// A "historyPeriod" határozza meg, milyen messzire megyünk vissza az időben, mielőtt a "historyRow" szerint termékenként több sorba rendezzük az adatokat.
// "now": nincs előzmény, csak az aktuális adatok (ezért nincs "historyRow").
// "all": a regisztráció óta rendelkezésre álló teljes időszak (legalábbis az adott termékeknél). LASSÚ LEHET.
// "1234500000-1237800000": egyedi időszak epoch-időpontokkal (kezdés–vég).
// "123h": az utolsó 123 óra. Nincs időhatárhoz igazítás; a végpont a jelenlegi pillanat, a kezdet akár óra közepére is eshet.
// "cur_123(d|wk|mo|yr)": az utolsó 123 nap/hét/hónap/év a jelenlegi, még nem teljes időszakkal együtt. Így a 10-én letöltött "cur_2mo" 40 napot jelent.
// "prev_123(d|wk|mo|yr)": az előző, már lezárt 123 nap/hét/hónap/év. Így a február 10-én letöltött "prev_2mo" december és január 62 napját jelenti.
// A cur_* és prev_* kezdete (és a prev_* vége) mindig az előző éjféli határhoz igazodik, míg a cur_* vége a jelenlegi pillanat.
// Így a délben letöltött "cur_2d" az utolsó 36 órát fedi le, a "prev_2d" pedig a 12 órával korábban véget ért 48 órát.
"historyRow" : "2w", // (kötelező, ha a "historyPeriod" nem "now").
// A "historyRow" szabja meg, hány időegységet foglal össze egy sor (az adott időszak átlaga), így termékenként több sor keletkezik (kivéve "all").
// A "historyRow" a "historyPeriod" egyes táblázatsorokra történő FELOSZTÁSÁT jelenti termékenként.
// "all": a teljes historyPeriod átlaga, termékenként egy sorban.
// "123(d|wk|mo|qt|yr)": 123 naptári nap/hét/hónap/negyedév/év éjféli határokkal. Az 123 elhagyható, ha 1 (tehát "wk" is jó "1wk" helyett).
// Szombati letöltésnél historyRow:"7d" esetén minden sor szombat 00:00 és péntek 23:59 közötti időszak átlagát tartalmazza.
// historyRow:"1wk" esetén viszont minden sor hétfő 00:00 és vasárnap 23:59 közötti átlagot ad; a legfrissebb sor a még nem teljes hétfő–szombat időszak.
// ▶ 500 000 SOROS KORLÁT: a felület és az API sem fogad el olyan előzménybeállítást, amely több mint 500 000 sort eredményez.
// Ez könnyen előfordulhat historyRow:"day" esetén, ha a historyPeriod sok napot fed le, például 365 nap × 1400 termék.
// Ha valóban erre van szükséged, tölts le kategóriánként külön táblázatot néhány száz termékkel.
"timezone" : "America/Los_Angeles", // (opcionális, alapértelmezés: "UTC") Linux-időzónaútvonal a /usr/share/zoneinfo könyvtárból.
// A szóközöket aláhúzásokra alakítjuk.
// Időzóna csak akkor kell, ha a history* beállításaid naptári időszakokat használnak (az éjfél meghatározásához).
// A felület az aktuális felhasználó beállításai szerinti időzónát használja, de az API-ban nincs ilyen beállítás, ezért a kérésben külön meg kell adnod.
// ========== OSZLOPOK: ==========
// A column* változókkal adhatod meg, mely oszlopok kerüljenek a táblázatba (részletekért lásd az Export oldal űrlapjának súgóját).
// A Code kivételével minden alapértelmezett érték 0 (az oszlop kimarad).
"columnCode" : 1, // (Ez az oszlop nem távolítható el: minden termék REF-CODE azonosítója szerepel benne.)
"columnName" : 1, // Terméknév.
"columnCategories" : 1, // A termék kategóriái ("Category 1; Category 2" egyetlen cellában).
"columnComments" : 1, // Termékmegjegyzések.
"columnCreated" : 1, // A termék létrehozásának dátuma YYYY/MM/DD (a rendszerünkben).
"columnCustom" : 1, // A termék egyéni mezői (egy-egy oszlop minden különböző mezőhöz).
"columnPrice" : 1, // A termék ára a kért pénznemben (NEM a termék eredeti pénznemében).
"columnCost" : 1, // Beszerzési ár (... pénznemben).
"columnMargin" : 1, // Árrés százalékban az eladási és a beszerzési ár alapján.
"columnRank" : 1, // Saját árhelyezésem.
"columnInRank" : 1, // Saját helyezésem a készleten lévő versenytársak között.
"columnMyWebsite" : 1, // Saját weboldalam URL-címe.
"columnReprice" : 1, // Az átárazási szabály alapján számított összeg (... pénznemben).
"columnRepricingRule" : 1, // Az átárazási szabály neve.
"columnRecommended" : 1, // Javasolt ár (lásd az Export oldal súgóját).
"columnCompUrls" : 1, // Versenytársi URL-ek (oszloponként egy).
"columnCompUrlsJoin" : 1, // Versenytársi URL-ek (szóközzel elválasztva egy cellában).
"columnCompMinMaxAvg" : 1, // 3 oszlopot ad hozzá: versenytársak minimum/maximum/átlagára.
"columnInCompMinMaxAvg" : 1, // 3 oszlopot ad hozzá: KÉSZLETEN LÉVŐ versenytársak minimum/maximum/átlagára.
"columnCompPrice" : 1, // Versenytársanként egy oszlop az árral (... pénznemben).
"columnCompStock" : 1, // Versenytársanként egy oszlop a készlettel (123|IN|OUT).
"columnCompSales" : 1, // Versenytársanként egy oszlop a heti becsült eladással.
"columnCompRank" : 1, // Versenytársanként egy oszlop az összesített helyezésével (téged is beleszámítva).
"columnCompInRank" : 1, // Versenytársanként egy oszlop a készleten lévő versenytársak közötti helyezésével (téged is beleszámítva).
// ========== NEM HIVATALOS HALADÓ PARAMÉTEREK: ==========
// Néhány nem hivatalos, részletesen nem dokumentált beállításunk is van; például a "pricezag_backup" sablonunk használ ilyet.
"originalCurrencies" : 1, // Az összegek kért pénznemre váltása helyett a cellák az eredeti pénznemet is tartalmazó szövegek lesznek ("123.90 USD"), nem számok.
"keepUrlLabels" : 1, // Általában eltávolítjuk a versenytársi URL-ek címkéit; ez megtartja őket (biztonsági mentéshez hasznos).
"csvSeparator" : ";", // Ha a CSV-hez vesszőtől vagy tabulátortól eltérő elválasztójelet szeretnél.
"csvNoQuote" : 1, // Megakadályozza, hogy a CSV idézőjeleket (") használjon. Ez érvénytelenné teheti a fájlformátumot.
}
] }
// Egy CSV biztonsági mentés egyszerű letöltése így néz ki:
// curl --connect-timeout 15 --max-time 600 --retry 2 -X POST 'https://pricezag.com/api/v3/MYAPIKEY' -d '{"actions":[{"a":"spreadsheetDownload","preset":"pricezag_backup"}]}' -o pricezag-backup-20241225.csv
spreadsheetPresetEdit – Táblázatsablon átnevezése vagy törlése
Ez a művelet csak sablon ÁTNEVEZÉSÉRE vagy TÖRLÉSÉRE szolgál. Új sablon létrehozásához vagy egy meglévő módosításához a fenti spreadsheetDownload műveletet használd.
{ "actions" : [
{
"a" : "spreadsheetPresetEdit",
"preset" : "Some Preset Name", // A sablon jelenlegi neve.
"newName" : "The Renamed Preset", // A sablon átnevezéséhez.
"delete" : 1, // Ez törli a "preset" sablont a fiókodból.
// MEGJEGYZÉS: automatikus exportáláshoz használt sablon nem törölhető (hibaüzenet).
// Előbb törölnöd kell az ütemezett automatikus exportokat (lásd az Export oldalt).
}
] }
VÁLASZ:{
...
"actions" : [
...
{
"a" : "spreadsheetPresetEdit",
"ok" : 1,
},
...
]
}
spreadsheetAutoCreate – Új automatikus táblázatexport létrehozása
{ "actions" : [
{
"a" : "spreadsheetAutoCreate",
"preset" : "The Preset Name",
"email" : "john@example.net",
"currency" : "USD", // (opcionális) Alapértelmezés: "preset", azaz a sablon pénznemét használjuk.
"attach" : "link", // (opcionális, alapértelmezés: "attach") "attach" = csatolt fájl; "link" = közzétett közvetlen letöltési hivatkozás.
"everyMonday" : 1, // Táblázat küldése minden hétfőn.
"everyTuesday" : 1, // ... (és így tovább a hét minden napján, az "everySunday" mezőig).
"everyMonthDay1" : 15, // Küldés minden hónap 15-én.
"everyMonthDay2" : 21, // ... és a 21-én is.
"everyMonthDay3" : "last", // ... és a hónap utolsó napján is.
// Az everyMonthDay* indexe 0–9 lehet, tehát legfeljebb 10 nap állítható be havonta.
"time" : "3:59pm", // A "15.59" is jó, ezt "3:59pm"-re alakítjuk. A "0:9", "0.09", "00:09" és "0:09am" ugyanazt jelenti.
"timezone" : "America/Los_Angeles", // (opcionális, alapértelmezés: "UTC") Linux-időzónaútvonal a /usr/share/zoneinfo könyvtárból.
// A városnév szóközei aláhúzásokká alakulnak.
}
] }
VÁLASZ:{
...
"actions" : [
...
{
"a" : "spreadsheetAutoCreate",
"ok" : 1,
"id" : "5gwi6fqa", // Az automatikus export referenciaazonosítója a későbbi módosításokhoz (lásd lent a spreadsheetAutoEdit műveletet).
},
...
]
}
spreadsheetAutoEdit – Automatikus táblázatexport szerkesztése
{ "actions" : [
{
"a" : "spreadsheetAutoEdit",
"id" : "5gwi6fqa", // A módosítandó automatikus export referenciaazonosítója.
// Az azonosítót a spreadsheetAutoCreate válaszából kapod, de a felületen is megtalálod az export Edit gombjára kattintva megnyíló ablak címében.
"disabled" : 1, // (opcionális) 0 a jelenleg letiltott automatikus export bekapcsolásához.
"delete" : 1, // (opcionális) Az automatikus export teljes törlése.
// ===== Az alábbi mezők (mind opcionálisak) ugyanazok, mint a fenti spreadsheetAutoCreate műveletnél. =====
"preset" : "The Preset Name",
"email" : "john@example.net",
"currency" : "USD",
"attach" : "link",
"everyMonday" : 1, // FIGYELMEZTETÉS: ha legalább egy every* mezőt megadsz, az összes korábbi every* beállítás törlődik.
"everyMonthDay1" : 15, // Így ha korábban "everyFriday"=1 volt, a "everyMonthDay3" megadása törli ezt az "everyFriday" beállítást.
// ... és így tovább (az összes every* mezőt lásd a spreadsheetAutoCreate műveletnél).
"time" : "3:59pm",
"timezone" : "America/Los_Angeles",
}
] }
VÁLASZ:{
...
"actions" : [
...
{
"a" : "spreadsheetAutoEdit",
"ok" : 3, // A végrehajtott módosítások száma.
},
...
]
}
Versenytársak és további lehetőségek
competitorDeleteAll – Versenytárs törlése minden termékből vagy kategóriából
FIGYELMEZTETÉS: a versenytársi URL-ek azonnal és visszaállíthatatlanul törlődnek a fiókodból.
Ugyanezt a funkciót használja a felület, amikor megnyitod egy versenytárs oldalát, és a Delete from all Products gombra kattintasz, vagy egy kategória oldalán a (X) ikont a versenytársak listájában.
{ "actions" : [
...
{
"a" : "competitorDeleteAll",
"domain" : "competitordomain.com",
"categories" : ["The Category 1", "The Category 2"], // (opcionális) Ha nincs megadva, az "allProducts" = 1 kötelező.
"allProducts" : 1, // (opcionális) Törlés minden termékből (ekkor a "categories" mező NEM adható meg).
// Tehát vagy "categories" vagy "allProducts" kell; mindkettő vagy egyik sem nem megengedett.
},
...
] }
VÁLASZ:{
...
"actions" : [
...
{
"a" : "competitorDeleteAll",
"ok" : 10, // A törölt URL-ek száma.
},
...
]
}
mathEdit – Versenytárs domainjének árképlete
Az egyes mezőkről a fiókodban található zöld kérdőjelikonokra kattintva kaphatsz részletes információt.
{ "actions" : [
...
{
"a" : "mathEdit",
"domain" : "competitordomain.com",
"clear" : 1, // (opcionális) A domain összes matematikai módosításának kikapcsolása (minden korábbi beállítás törlődik).
// Ha clear:1, nem adhatsz meg más alábbi mezőt, különben hibát kapsz.
"math" : [ // Alkalmazandó matematikai blokkok tömbje.
{ // Ez egy matematikai blokk objektuma; minden mező opcionális.
"categories" : ["Category 1", "Category 2"], // Csak az ezekbe a kategóriákba tartozó termékekre.
"theirPriceMin" : 1234.90, // Csak ha az áruk legalább N.
"theirPriceMinCurrency" : "USD", // Pénznem ("original" = a webhely pénzneme).
"theirPriceMax" : 1234.90, // ... legfeljebb N.
"theirPriceMaxCurrency" : "USD", // Pénznem (...).
"themMeMin" : -20.00, // Csak ha a [versenytárs ára – saját ár] különbség legalább N (lásd a felületet).
"themMeMinCurrency" : "USD", // Pénznem vagy a saját árad "%"-a (itt NEM használható "original").
"themMeMax" : -1.5, // ... legfeljebb N.
"themMeMaxCurrency" : "%", // Pénznem (...).
"addPre" : -10.00, // Szorzás előtt hozzáadandó összeg (negatívnál levonás).
"addPreCurrency" : "USD", // Pénznem ("original" = a webhely pénzneme).
"multiply" : 1.1, // Szorzás ezzel a tényezővel.
"divide" : 1.1, // VAGY osztás (ne add meg mindkettőt).
"addPost" : 5.00, // Szorzás után hozzáadandó összeg (negatívnál levonás).
"addPostCurrency" : "USD", // Pénznem (...).
// Bonyolultnak tűnik? A válasz alatt találsz egy egyszerű példát.
},
... // Legfeljebb 10 blokk (sorrendben hajtjuk végre).
],
// MEGJEGYZÉS: jelenleg nem lehet csak egy változót vagy matematikai blokkot módosítani. Ha megadod a math tömböt, minden meglévő beállítást felülír.
// MEGJEGYZÉS: figyelmen kívül hagyjuk az olyan blokkot, amely nem szoroz vagy oszt (hiányzik vagy 1), és addPre!=0 vagy addPost!=0 sincs benne.
// Ha minden blokk ilyen, az ugyanaz, mintha clear:1 beállítással törölnéd a teljes matematikai módosítást.
// Más szóval: a mentéshez a képletnek ténylegesen módosítania kell valamit.
// TIPP: ha ideiglenesen szeretnéd kikapcsolni egy domain árképletét a beállítások törlése nélkül,
// beállíthatod a categories : ["Some Empty Existing Category"] értéket.
},
...
] }
VÁLASZ:{
...
"actions" : [
...
{
"a" : "mathEdit",
"ok" : 3, // A megváltozott matematikai blokkok száma (a törlés/ürítés is változás).
},
...
]
}
EGYSZERŰ PÉLDA — 10%-os adó eltávolítása az amazon.co.uk árából:{ "actions" : [
{
"a" : "mathEdit",
"domain" : "amazon.co.uk",
"math" : [
{
"divide" : 1.1
}
]
}
] }
További példák
▶ 1. PÉLDA — Termék beszerzési árának frissítése
KÉRÉS:
{
"actions" : [
{
"a" : "productEdit",
"code" : "SKU-1234",
"cost" : 140.50,
"costCurrency" : "EUR"
}
]
}
VÁLASZ:{
"ok" : 1, // 0, ha a SKU-1234 beszerzési ára már ennyi volt.
"errors" : 0, // 1, ha a SKU-1234 nem létezett.
"actionsCount" : 1,
"actions" : [
{
"a" : "productEdit",
"ok" : 1 // 0, ha a SKU-1234 már ezen a beszerzési áron volt, és -1, ha nem létezett.
}
]
}
▶ 2. PÉLDA — Nem létező termék lekérdezése
KÉRÉS:
{
"actions" : [
{
"a" : "productGet",
"code" : "NON-EXISTING-SKU",
"currency" : "USD"
}
}
VÁLASZ:{
"ok" : 0, // Mert egyetlen művelet sem adott ok>0 eredményt.
"errors" : 1, // Mert egy művelet ok<0 eredményt adott.
"actionsCount" : 1,
"actions" : [
{
"a" : "productGet",
"ok" : -1, // Ebből látszik, hogy sikertelen volt.
"error" : "Sorry, the product #NON-EXISTING-SKU does not exist. Maybe someone else just removed or renamed it?"
}
]
}
▶ 3. PÉLDA — Kategória, átárazási szabály, majd két hozzájuk rendelt termék létrehozása
KÉRÉS:
{
"actions" : [
{
"a" : "categoryCreate",
"name" : "My New Category"
},
{
"a" : "repricingCreate",
"name" : "My New Repricing Rule",
"init" : {
"target" : "cheapest_n",
"var_n" : 2,
"plusAmount" : 0,
"plusCurrency" : "%"
// Ez azt jelenti: „Állítsd a saját áramat a két legolcsóbb versenytárs árának középértékére.”
},
"never" : [
{
"target" : "cost",
"direction" : "below",
"plusAmount" : 5,
"plusCurrency" : "%"
// Ez azt jelenti: „De soha ne legyen a beszerzési áram + 5% alatt.”
}
],
"charm" : "charm"
},
{
"a" : "productCreate",
"code" : "SKU-1001",
"name" : "My New Product 1",
"price" : 199.90,
"currency" : "USD",
"cost" : 112.00,
"costCurrency" : "USD",
"repricingRule" : "My New Repricing Rule", // Az előbb létrehozott szabály neve.
"categories" : ["My New Category"], // Az előbb létrehozott kategória neve.
// ... bár a productCreate amúgy is létrehozza a hiányzó kategóriákat, tehát a categoryCreate műveletre itt nem lett volna szükség.
"competitors" : ["https://...", "https://..."]
},
{
"a" : "productCreate",
"code" : "SKU-1002",
"name" : "My New Product 2",
"price" : 59.95,
"currency" : "USD",
"cost" : 31.50,
"costCurrency" : "USD",
"repricingRule" : "My New Repricing Rule",
"categories" : ["My New Category"],
"competitors" : ["https://...", "https://..."]
}
]
}
VÁLASZ:{
"ok" : 4, // Mert mind a 4 művelet ok>0 eredményt adott.
"errors" : 0, // Mert egyik művelet sem adott ok<0 eredményt.
"actionsCount" : 4,
"actions" : [
{
"a" : "categoryCreate",
"ok" : 1
},
{
"a" : "repricingCreate",
"ok" : 1
},
{
"a" : "productCreate",
"ok" : 1
},
{
"a" : "productCreate",
"ok" : 1
}
]
}
▶ 4. PÉLDA — Két kategória összevonása egy harmadikba, az eredeti kettő törlésével
KÉRÉS:
{
"actions" : [
{
"a" : "categoryCopy",
"categoriesFrom" : ["Original Category 1", "Original Category 2"],
"deleteMode" : "cat",
// A "removeMode":"cat" felesleges, mert a deleteMode úgyis törli ezt a két kategóriát.
"categoriesTo" : ["A New Category"]
}
}
VÁLASZ:{
"ok" : 1, // Mert egy művelet ok>0 eredményt adott.
"errors" : 0, // Mert egyik művelet sem adott ok<0 eredményt.
"actionsCount" : 1,
"actions" : [
{
"a" : "categoryCopy",
"ok" : 3, // Mert 3 kategória változott: a két eredeti törlődött, és egy új célkategória jött létre.
"categoriesCreated" : 1,
"categoriesDeleted" : 2,
"categoriesModified" : 0,
"productsCount" : 123
}
]
}
▶ 5. PÉLDA — Egy értesítési szabály N változójának és irányának módosítása
KÉRÉS:
{
"actions" : [
{
"a" : "alertRuleEdit",
"email" : "john@example.net",
"ruleNumber" : 3,
"rule" : {
"var_n" : 1.5,
"direction" : "drop"
}
}
}
VÁLASZ:{
"ok" : 1, // Mert egy művelet ok>0 eredményt adott.
"errors" : 0, // Mert egyik művelet sem adott ok<0 eredményt.
"actionsCount" : 1,
"actions" : [
{
"a" : "alertRuleEdit",
"ok" : 2 // Mert 2 változó módosult sikeresen.
}
]
}
