PriceZag API - Propojte cenová data se svými systémy
Pomocí JSON API PriceZag můžete načítat ceny a skladovou dostupnost konkurence, spravovat produkty a pravidla automatického přeceňování, stahovat reporty a automatizovat své postupy.
Rychlý příklad s curl
MYAPIKEY svým API klíčem (viz API klíč).Vytvoření testovacího produktu:
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"}]}'
(při opětovném spuštění příkazu dojde k chybě, protože produkt už existuje)Nyní můžete načíst údaje vytvořeného produktu:
curl -X POST 'https://pricezag.com/api/v3/MYAPIKEY' -d '{"actions":[{"a":"productGet","code":"000-SOME-TEST-PRODUCT"}]}' | python -mjson.tool
(odstraňte | python -mjson.tool, pokud tento nástroj pro formátování odpovědi JSON v terminálu nemáte)Přehled
Co umožňuje API PriceZag
JSON API PriceZag umožňuje vašim skriptům a firemním systémům pracovat přímo s cenami a skladovou dostupností konkurence, kterou sledujeme. Načítejte údaje o produktech, spravujte produkty a kategorie, počítejte ceny podle pravidel automatického přeceňování, nastavujte upozornění a stahujte vlastní tabulkové reporty. API můžete použít s jakoukoli e-commerce platformou nebo programovacím jazykem, který umí odesílat HTTPS požadavky a zpracovávat JSON.
Můžete také požádat svého oblíbeného AI asistenta, aby vám skripty napsal. Předejte mu adresu této dokumentace (https://pricezag.com/integrations/api), popište, co chcete automatizovat, a uveďte programovací jazyk nebo e-commerce platformu, kterou používáte. API klíč uchovávejte v tajnosti a nevkládejte ho do konverzace s AI.
PriceZag provádí monitoring přímo ve své platformě, takže API je volitelné. Hodí se, když chcete tato data propojit s vlastním systémem. Shopify a WooCommerce nabízejí také přímé integrace.
API klíč a oprávnění
Ve svém účtu PriceZag otevřete Automation > API. Kliknutím na Reveal the current API key zobrazíte aktuální klíč, kliknutím na Change the API key ho změníte. Obě operace vyžadují heslo k účtu. Uživatel musí mít příslušná oprávnění k zobrazení nebo vytvoření API klíče. Pokud je nemá, musí požádat správce účtu.
API klíč uchovávejte v tajnosti. Umožňuje provádět rozsáhlé změny v účtu, včetně mazání dat. Nevkládejte ho do veřejných repozitářů, kódu spouštěného v prohlížeči ani do konverzací s AI. Pokud vám s integrací někdo pomáhá, vytvořte mu uživatelský účet PriceZag s potřebnými oprávněními a podle potřeby API klíč vyměňte.
Přístup přes API závisí na vašem tarifu. S plným přístupem mohou skripty pracovat se všemi produkty. Bez něj API zpřístupní jen prvních 10 produktů seřazených alfanumericky podle referenčního kódu. Máte-li například 1 000 produktů s kódy od SKU0001 až SKU1000, API zpřístupní kódy SKU0001 až SKU0010. Během 14denní bezplatné zkušební verze máte plný přístup k API. Plný přístup lze také aktivovat jako volitelnou součást tarifu.
Protokol aktivity API a poslední požadavek
Stránka Automation > API ve vašem účtu zobrazuje čas posledního požadavku API a tlačítko API Activity Log. Pokud skript nefunguje, můžete zde zjistit, zda požadavky dorazily do PriceZag, a prozkoumat chyby nebo neočekávané změny.
Změny provedené přes API se navíc zobrazují v History of Edits v celém účtu, a to pod uživatelským jménem API. Například v historii produktu se může objevit Price edited by API namísto Price edited by JOHN. PriceZag podporuje více uživatelů v jednom účtu, takže lze rozlišit automatické změny od zásahů jednotlivých členů týmu.
URL a metody požadavků
Všechny požadavky API používají stejnou adresu HTTPS. Odesílejte na ni požadavky POST a nahraďte MYAPIKEY svým klíčem:
https://pricezag.com/api/v3/MYAPIKEY
Požadované operace ("actions") a jejich parametry patří do těla požadavku JSON, nikoli do URL.
Do těla požadavku POST vložte objekt JSON obsahující jednu či více akcí. Adresa URL se nemění bez ohledu na to, zda načítáte produkt, aktualizujete ceny, nebo stahujete tabulku.
Nemůžete použít POST?
V krajním případě můžete odeslat požadavek GET s tělem JSON zakódovaným pomocí Base64 v parametru URL ?data=. Adresy URL mají omezenou délku, proto výrazně doporučujeme POST.
Jak fungují akce
Naše API i uživatelské rozhraní (UI) používají stejné funkce na backendu, takže téměř vše, co můžete provést v rozhraní, lze provést také přes API.
Při požadavku API musí data JSON obsahovat pole všech akcí, které chcete provést, od 1 až do maximálně 1 000 na požadavek. V jediném požadavku tedy můžete například přejmenovat 3 produkty a vytvořit kategorii, celkem čtyřmi akcemi. Také lze najednou načíst 1 000 produktů pomocí 1 000 akcí "productGet".
Akce se provádějí v pořadí uvedeném v poli. Chcete-li nejprve vytvořit pravidlo přeceňování a následně k němu přiřadit produkty, musí být akce v tomto pořadí, aby pravidlo existovalo při úpravě produktů.
Níže najdete seznam všech dostupných akcí.
Objekt požadavku JSON
Pro skripty a kód generovaný AI: Referenční příklady níže obsahují // komentáře a ... zástupné hodnoty vysvětlující jednotlivá pole. Jde pouze o ukázky, které nelze beze změn odeslat jako platný JSON. Před odesláním odstraňte komentáře a nahraďte zástupné hodnoty. Oba výše uvedené příklady curl obsahují platná těla JSON.
{
"stopOnFailure" : 1, // (volitelné) Ve výchozím stavu backend pokračuje další akcí i po selhání. Nastavením na 1 se při chybě zastaví.
// Pole všech akcí:
"actions" : [
// Akce 1:
{
"a" : "someActionName", // Název akce se vždy uvádí v poli "a" každého objektu akce.
"xx" : "some parameter this action needs" // Vše kromě "a" tvoří parametry požadované danou akcí.
},
// Akce 2:
{
"a" : "anotherActionName",
"abc" : "some parameter this action needs",
"xyz" : {"x":"some object this action needs", "y":5, "z":6}
},
// Akce 3:
{
"a" : "aThirdAction",
"xyz" : ["some array this action needs", "..."]
}
]
}
Odpověď serveru a kódy HTTP
Pokud je požadavek správný, server běžně vrací objekt JSON jako odpověď, s výjimkou několika výslovně označených akcí (například stažení tabulky). Poznáte to podle hlavičky odpovědi Content-Type: application/json.
Kódy odpovědí HTTP jsou:
► 200 pokud všechny akce uspěly (neutrální výsledek ok=0 se také považuje za úspěch)
► 406 pokud některé akce uspěly a jiné selhaly.
► 422 pokud všechny akce selhaly, ale z jiných důvodů než níže uvedených.
► 400 pokud přijatý objekt JSON nebylo možné dekódovat.
► 403 pokud selhalo ověření totožnosti (obvykle kvůli nesprávnému API klíči).
Pro jednodušší skript můžete spoléhat na tyto kódy odpovědi. Podrobnější informace najdete ve vráceném objektu JSON:
{
"ok" : 15, // Počet úspěšně provedených akcí (výsledek akce ok>0)
"errors" : 0, // Počet akcí s chybou (výsledek akce ok<0)
"actionsCount" : 20, // Celkový počet původně požadovaných akcí (délka pole "actions")
// POZNÁMKA: Z toho plyne, že 5 akcí vrátilo ok=0 (bez chyby, ale také beze změny).
// Pole všech původně požadovaných akcí (ve stejném pořadí):
"actions" : [
...
// Objekt odpovědi jednotlivé akce:
{
"a" : "someActionName",
"ok" : 4, // Výsledek: >0 = úspěch, 0 = beze změny, <0 = chyba
// Například 0, pokud nastavíte cenu produktu na její stávající hodnotu.
// -1 například v případě, že produkt neexistuje.
// Význam >0 závisí na akci. Často jde o počet skutečně upravených polí či položek.
"error" : "...", // Chybová zpráva, pokud ok < 0
// Naše chybové zprávy bývají velmi podrobné. Ukládejte je do protokolu,
// protože vám pomohou zjistit, co se pokazilo.
... // Další údaje specifické pro danou akci
},
...
]
}
Příklady?
Limity požadavků a plánování
Aby se to nestávalo vašim oprávněným požadavkům:
► Nikdy nepoužívejte nesprávný API klíč. Brána firewall má pro chybné klíče nízkou toleranci (stejně jako pro chybná přihlašovací hesla).
► Sdružujte více akcí do jednoho objektu JSON a jediného požadavku (maximálně 1 000). Pro vytvoření 1 000 produktů odešlete jeden požadavek, ne tisíc.
► Pokud opravdu potřebujete mnoho požadavků, udělejte mezi nimi pauzu 500 ms a opakovaně používejte stejné HTTPS připojení. Otevírat nové připojení pro každý požadavek je častá chyba. Mnoho požadavků dává smysl jen při hromadné aktualizaci stovek tisíc produktů; do každého požadavku vložte 1 000 akcí.
Nemáme pevně stanovený limit počtu požadavků. Naše brána firewall rozhoduje podle desítek parametrů. Nejlepší je přiměřené tempo požadavků.
Plánované požadavky:
Pokud odesíláte požadavky pravidelně, přidejte náhodnou prodlevu, aby se nespouštěly vždy přesně v nulté sekundě minuty. Mnoho zákazníků odesílá požadavky zároveň. Rozložení v čase zrychlí jejich zpracování a sníží riziko vypršení časového limitu při přetížení serveru.
Všechny dostupné akce API
U každé akce níže najdete parametry i příklady požadavků a odpovědí. Levá navigace odkazuje přímo na jednotlivé akce.
Produkty
| Akce | Účel |
|---|---|
| productCreate | Vytvořit nový produkt |
| productEdit | Upravit existující produkt |
| productCompetitors | Upravit konkurenční URL u produktu (bez přepsání všech položek) |
| productCategories | Upravit kategorie jednoho či více produktů (bez přepsání všech položek) |
| productRepricing | Přiřadit více produktů k pravidlu přeceňování |
| productDelete | Smazat jeden nebo více produktů |
| productGet | Načíst produkt (včetně údajů o konkurenci) |
| productGetAll | Načíst všechny produkty (včetně jejich konkurenčních údajů) |
Kategorie
| Akce | Účel |
|---|---|
| categoryCreate | Vytvořit novou kategorii |
| categoryEdit | Upravit existující kategorii |
| categoryDelete | Smazat jednu nebo více kategorií |
| categoryCopy | Kopírovat/přesunout produkty mezi kategoriemi |
| categoryGet | Načíst kategorii |
| categoryGetAll | Načíst všechny kategorie |
Cenová upozornění
| Akce | Účel |
|---|---|
| alertRecipientCreate | Vytvořit nového příjemce upozornění |
| alertRecipientEdit | Upravit příjemce a/nebo jeho pravidla upozornění |
| alertRecipientDelete | Smazat příjemce upozornění |
| alertRuleEdit | Upravit existující pravidlo upozornění příjemce |
| alertRuleCreate ? | Taková akce neexistuje. Použijte alertRecipientEdit s polem "rulesAdd". |
| alertRuleDelete ? | Taková akce neexistuje. Použijte alertRecipientEdit s polem "rulesRemove". |
| alertGetAll | Načíst všechny příjemce upozornění a jejich pravidla |
Pravidla automatického přeceňování
| Akce | Účel |
|---|---|
| repricingCreate | Vytvořit nové pravidlo přeceňování |
| repricingEdit | Upravit existující pravidlo přeceňování |
| repricingDelete | Smazat pravidlo přeceňování |
| repricingGetAll | Načíst všechna pravidla přeceňování |
Tabulkové reporty
| Akce | Účel |
|---|---|
| spreadsheetDownload | Stáhnout tabulkový report |
| spreadsheetPresetEdit | Přejmenovat/smazat předvolbu exportu |
| spreadsheetAutoCreate | Vytvořit automatický export tabulek |
| spreadsheetAutoEdit | Upravit automatický export tabulek |
Konkurence a další
| Akce | Účel |
|---|---|
| competitorDeleteAll | Smazat konkurenta ze všech produktů nebo kategorií |
| mathEdit | Nastavit/upravit přepočty cen pro doménu konkurenta |
Produkty
productCreate - Vytvoření produktu
{ "actions" : [
...
{
"a" : "productCreate",
"code" : "UNIQUE-REF-CODE", // Délka 1 až 80 ([a-z\d][a-z\d_-]{0,78}[a-z\d]); nerozlišuje se velikost písmen (převádí se na velká).
"name" : "The Product Name", // Délka 1 až 200
"price" : 1234.90, // Pozor na čárky a tečky. Bez oddělovače tisíců, desetinná tečka musí být tečka.
"currency" : "USD",
"cost" : 1234.90, // (volitelné)
"costCurrency" : "USD", // Povinné, pokud je uvedeno cost
"repricingRule" : "The Rule Name", // (volitelné) Přiřazené pravidlo přeceňování (prázdné = vypnuto, neexistující = chyba)
"myWebsite" : "https://...", // (volitelné) URL nebo shopify:productId:variantId či woocommerce:productId(:variationId)
"competitors" : ["https://...", "https://..."], // (volitelné)
"categories" : ["The Category 1", "The Category 2"], // (volitelné) Kategorie produktu (neexistující se vytvoří)
"comments" : "Some comments\nAnd another line", // (volitelné) Maximálně 1 000 znaků UTF-8
"custom_someFieldName1" : "Value of custom field", // (volitelné)
"custom_someFieldName2" : "Value of other\nCustom\tField", // (volitelné)
// Vlastní pole jsou určena pro vaše interní využití. Například je můžete zobrazovat jako sloupce v exportované tabulce.
// Na produkt připadá nejvýše 20 vlastních polí. Název má maximálně 40 písmen, číslic nebo podtržítek (rozlišují se velká a malá písmena), bez předpony "custom_" (celkem 47 znaků).
// Hodnota je omezena na 500 bajtů (ne vždy 500 znaků). Vlastní pole můžete nastavit jako číslo (custom_varname:123),
// ale API ji vždy vrátí jako řetězec (custom_varname:"123"); případně ji převeďte na požadovaný typ.
// Vlastní pole odstraníte nastavením hodnoty na "". Jde o operaci productEdit, nikoli productCreate.
},
...
] }
ODPOVĚĎ:{
...
"actions" : [
...
{
"a" : "productCreate",
"ok" : 1,
"code" : "REF-CODE", // Konečný kód uložený v databázi (můžeme například upravit speciální znaky).
},
...
]
}
productEdit - Úprava existujícího produktu
{ "actions" : [
...
{
"a" : "productEdit",
"code" : "REF-CODE",
... // Používá stejné parametry jako productCreate, všechny jsou volitelné.
"newCode" : "REF-CODE-RENAMED", // (volitelné)
"competitors" : ["https://...", "https://..."], // Pokud je uvedeno, PŘEPÍŠE všechny existující konkurenční URL.
// Chcete-li URL pouze přidávat nebo odebírat, použijte akci productCompetitors.
"categories" : ["The Category 1", "The Category 2"], // Pokud je uvedeno, PŘEPÍŠE stávající kategorie. Použijte raději productCategories nebo categoryEdit.
"custom_someFieldName" : "New value or empty to delete that custom field",
// Pamatujte na limit 20 vlastních polí na produkt. Před přidáním dalších možná budete muset odstranit stará nastavením hodnoty na "".
},
...
] }
ODPOVĚĎ:{
...
"actions" : [
...
{
"a" : "productEdit",
"ok" : 3, // Počet provedených změn (např. moje cena + 2 konkurenční URL = 3)
"code" : "REF-CODE", // Konečný (nový) kód uložený v databázi (např. po úpravě speciálních znaků).
},
...
]
}
productCompetitors - Úprava konkurenčních URL produktu
{ "actions" : [
...
{
"a" : "productCompetitors",
"code" : "REF-CODE",
"competitorsAdd" : ["https://...", "https://..."], // (volitelné) Přidat tyto konkurenční URL ke stávajícím
"competitorsRemove" : ["https://...", "example.com/a0ff80...5f00", "example.net"], // (volitelné) Odebrat tyto konkurenty. Každou položkou může být:
// > URL (včetně případného modifikátoru za #). Štítky jsou volitelné.
// > Hodnota "ref" konkurenta (vrácená jinými akcemi; kořenová doména a 32znakový hash MD5)
// > Kořenová doména nebo celý hostname; odstraní se všechny konkurenční URL z této domény.
// POZNÁMKA: "competitorsAdd" a "competitorsRemove" mohou být i řetězce místo jednoprvkových polí.
// Odebírání proběhne před přidáváním, takže lze odstranit celou doménu a pak přidat jednu URL z této domény.
},
...
] }
ODPOVĚĎ:{
...
"actions" : [
...
{
"a" : "productCompetitors",
"ok" : 3, // Počet upravených konkurenčních URL
"competitorsAdded" : 2, // Počet konkurenčních URL přidaných k produktu
"competitorsRemoved" : 1, // Počet konkurenčních URL odebraných z produktu
// CHYBY:
// > Přidání již existující URL chybu NEVYVOLÁ (ok = 0)
// > Odebrání neexistující celé URL nebo hodnoty "ref" chybu VYVOLÁ (ok = -1)
// > Odebrání všech URL neexistující domény chybu NEVYVOLÁ (ok = 0)
},
...
]
}
productCategories - Úprava kategorií produktů
Jde o stejnou funkci, kterou rozhraní používá, když otevřete All Products, vyberete jeden nebo více produktů a kliknete na Selected Products > Edit Categories. Podrobnosti o této funkci najdete přímo tam.
Podívejte se také na akci categoryEdit a zvolte tu, která vám více vyhovuje.
{ "actions" : [
...
{
"a" : "productCategories",
"code" : "REF-CODE", // Nerozlišují se velká a malá písmena (řetězec), NEBO:
"code" : ["REF-CODE-1", "REF-CODE-2"], // Může to být i pole více produktů (limit 100 000)
"categoriesRemove" : ["The Category 1", "The Category 2"], // (volitelné) Nejprve odebrat z těchto kategorií.
"categoriesRemoveAll" : 1, // (volitelné) Nejprve odebrat ze všech kategorií (jako productEdit)
"deleteEmptyCategories" : 1, // Tímto se každá kategorie, která zůstane prázdná
// po odebrání produktů, smaže.
"categoriesAdd" : ["The Category 1", "The Category 2"], // (volitelné) Pak přidat do těchto kategorií (neexistující se vytvoří)
"categoriesAddClear" : 1, // (volitelné) Nejprve vyprázdnit tyto kategorie, do kterých produkty přidáváme
},
...
] }
ODPOVĚĎ:{
...
"actions" : [
...
{
"a" : "productCategories",
"ok" : 3, // Počet upravených produktů
},
...
]
}
productRepricing - Hromadné přiřazení produktů k pravidlu přeceňování
Jde o stejnou operaci jako u akce productEdit, ale protože je jeden požadavek omezen na 1 000 akcí, při přiřazení 50 000 produktů byste potřebovali 50 požadavků a operace by trvala déle.
Pokud měníte jen několik produktů, použijte raději akci productEdit.
{ "actions" : [
...
{
"a" : "productRepricing",
"repricingRule" : "The Rule Name", // Nerozlišuje velikost písmen; "" (existující prázdný řetězec) znamená žádné pravidlo (vypnutí přeceňování)
"products" : ["REF-CODE-1", "REF-CODE-2"], // Nerozlišují se velká a malá písmena (limit 100 000)
},
...
] }
ODPOVĚĎ:{
...
"actions" : [
...
{
"a" : "productRepricing",
"ok" : 10, // Počet upravených produktů
// Pokud už byly všechny produkty přiřazeny k danému pravidlu, vrátí se ok=0.
},
...
]
}
productDelete - Smazání jednoho nebo více produktů
Jde o stejnou funkci, kterou rozhraní používá, když otevřete All Products, vyberete jeden nebo více produktů a kliknete na Selected Products > Delete.
{ "actions" : [
...
{
"a" : "productDelete",
"code" : "REF-CODE", // Nerozlišují se velká a malá písmena (řetězec), NEBO:
"code" : ["REF-CODE-1", "REF-CODE-2"], // Může být i pole více produktů k odstranění (limit 100 000)
"deleteEmptyCategories" : 1, // Tímto se každá kategorie, která zůstane prázdná
// následkem smazání těchto produktů se rovněž odstraní.
},
...
] }
ODPOVĚĎ:{
...
"actions" : [
...
{
"a" : "productDelete",
"ok" : 2, // Počet úspěšně smazaných produktů
},
...
]
}
productGet - Načtení produktu
{ "actions" : [
...
{
"a" : "productGet",
"code" : "REF-CODE", // Nerozlišují se velká a malá písmena
"currency" : "EUR", // (volitelné) Převést všechny částky do této měny namísto měny ceny produktu
"withStats" : 1, // (volitelné) Vrátit objekt statistik
"noCompetitors" : 1, // (volitelné) Nevracet pole konkurentů (kvůli menšímu objemu dat)
"noComments" : 1, // (volitelné) Nevracet komentáře (...)
"withScreenshots" : 1, // (volitelné) Vrátit URL nejnovějšího snímku obrazovky pro každého konkurenta
"sickMax" : 2, // (volitelné, výchozí 1) 0–3: vrátit jen konkurenční URL s úrovní problému nejvýše N
},
...
] }
Vrací všechny informace o produktu včetně aktuálních cen a skladové dostupnosti konkurence.ODPOVĚĎ:
{
...
"actions" : [
...
{
"a" : "productGet",
"ok" : 1,
"code" : "REF-CODE",
"name" : "The Product Name",
"price" : 1234.90, // Vaše cena, vždy v původní měně
"currency" : "USD", // Původní měna pole "price"
"convCurrency" : "EUR", // Měna přepočtených částek (buď zadané "currency", nebo měna ceny produktu)
"priceConv" : 1234.90, // Vaše cena přepočtená pomocí "convCurrency" nebo stejná jako "price"
"cost" : 1234.90,
"costCurrency" : "USD",
"costPriceConv" : 1234.90, // Vaše náklady přepočtené do měny pole "currency"
"costConv" : 1234.90, // Vaše náklady přepočtené do "convCurrency"
"margin" : 10.5, // Procento (může být záporné)
"repricingRule" : "The Rule Name", // Tyto 3 proměnné přeceňování CHYBĚJÍ, pokud není nastaveno přeceňování.
"reprice" : 1234.90, // Aktuální přeceněná částka vypočtená podle repricingRule
"repriceCurrency" : "USD", // Stejné jako "convCurrency", uvedeno pro přehlednost
"myWebsite" : "https://...",
"created" : 1234567890, // Čas vytvoření produktu (Unix epoch)
"createdBy" : "SOMEUSER", // Uživatelské jméno nebo "API"
"edited" : 1234567890, // Čas poslední úpravy (pokud nastala; Unix epoch)
"editedBy" : "SOMEUSER", // Uživatelské jméno nebo "API"
"comments" : "Some comments\nAnd another line",
"commentsLast" : 1234567890, // Čas poslední úpravy komentářů (pokud nastala; Unix epoch)
"commentsLastBy" : "SOMEUSER", // Uživatelské jméno nebo "API"
"categories" : ["The Category 1", "The Category 2"],
"stats" : {
// Ve statistikách se počítají jen konkurenční URL s úrovní problému 0 nebo 1, bez ohledu na "sickMax".
// Všechny částky jsou v "convCurrency", tedy v měně "currency" z požadavku nebo v původní měně produktu.
// VAROVÁNÍ: Pokud částka není dostupná (např. compIn* bez skladových konkurentů), hodnota je 0.
"rank" : 1.23, // Vaše pořadí podle ceny (1 = nikdo není levnější)
"rankIn" : 1.23, // Vaše pořadí mezi konkurenty se skladem
"compCount" : 3, // Počet konkurentů s platnou cenou
"compInCount" : 3, // Počet konkurentů se skladem ...
"compOutCount" : 3, // Počet konkurentů bez skladu ...
"compAvg" : 123.56, // Průměr všech konkurentů
"compAvgVsMe" : 123.56, // Rozdíl (v convCurrency) mezi vaší cenou a průměrem konkurence (záporná = jste levnější)
"compInAvg" : 123.56, // Průměr konkurentů se skladem
"compInAvgVsMe" : 123.56, // Jako "compAvgVsMe", ale pouze konkurenti se skladem
"compLowest" : 123.56, // Nejnižší cena konkurenta
"compLowestVsMe" : 123.56, // Jako "compAvgVsMe", ale nejnižší cena místo průměru
"compInLowest" : 123.56, // Nejnižší cena konkurenta se skladem
"compInLowestVsMe" : 123.56, // Jako "compInAvgVsMe", ale ...
"compHighest" : 123.56, // Nejvyšší cena konkurenta
"compHighestVsMe" : 123.56, // Jako "compAvgVsMe", ale ...
"compInHighest" : 123.56, // Nejvyšší cena konkurenta se skladem
"compInHighestVsMe" : 123.56, // Jako "compInAvgVsMe", ale ...
},
"competitors" : [
// Pole konkurentů (od nejlevnějšího), každý je samostatný objekt:
...
{
"url" : "https://...", // Včetně případného modifikátoru za #
"ref" : "example.com/123abc...def",
// Reference URL (kořenová doména a 32znakový hash MD5). Takto URL identifikujeme interně.
"domain" : "example.com", // Kořenová doména konkurenta
"price" : 1234.90, // Poslední cena nalezená na webu (po případných matematických úpravách dle nastavení)
"currency" : "USD", // Měna nalezená na webu
"priceConv" : 1234.90, // Cena přepočtená do "convCurrency"
"stock" : "5", // Skladová dostupnost (řetězec): "A" = dostupné, "2" = 2 kusy skladem, "0" = není skladem, "" = nevíme.
"salesWk" : 123, // Odhadovaný prodej za týden (pokud je dostupný; viz vysvětlení u otazníku na stránce produktu)
"screenshotURL" : "https://pricezag.com/.../screenshot.png",
// Je-li "withScreenshots", URL nejnovějšího snímku (bez přihlášení, dostupné veřejně přes tuto dlouhou URL)
"confidence" : 98,
// Procento jistoty, že jsme vybrali správnou cenu (viz otazník (?) na stránce produktu)
// Pod 70 % (lze nastavit) se cena označuje za "nespolehlivou" otazníkem u ceny.
// Nezávisí to na úrovni problému URL. URL může být problematická, ale cena byla správná,
// nebo může být dostupná, ale nejsme si jistí, zda jsme na stránce vybrali správnou cenu.
"sick" : 0, // Úroveň problému URL od 0 do 3
// 0: Poslední načtení uspělo (stránku jsme navštívili a našli cenu).
// 1: Poslední načtení selhalo, ale nedávno se povedlo (běžná situace, není důvod k obavám).
// 2: Platnou cenu se nepodařilo získat už několik dní.
// 3: Platnou cenu se nepodařilo získat už několik týdnů.
// POZNÁMKA: Pole "price" a "priceConv" jsou přítomna pouze pro URL s úrovní problému nejvýše 1. Při úrovni 2 a 3 cena chybí.
},
...
],
"custom" : {
// Toto jsou vaše vlastní pole. Pokud nevíte, jak fungují, otevřete
// stránku produktu v rozhraní a klikněte na ikonu (?) u bloku CUSTOM FIELDS.
// Pokud žádná nejsou, celý objekt "custom" chybí.
"variable_1" : "value 1", // Hodnoty jsou vždy řetězce, i když představují čísla.
"variable_2" : "value 2", // Prázdná hodnota neexistuje, protože by danou proměnnou smazala.
...
}
},
...
]
}
productGetAll - Načtení všech produktů
{ "actions" : [
...
{
"a" : "productGetAll",
"currency" : "EUR", // (volitelné) Převést všechny částky do této měny namísto měny ceny každého produktu
"withStats" : 1, // (volitelné) Vrátit objekt statistik
"noCompetitors" : 1, // (volitelné) Nevracet pole konkurentů (kvůli menšímu objemu dat)
"noComments" : 1, // (volitelné) Nevracet komentáře (...)
"withScreenshots" : 1, // (volitelné) Vrátit URL nejnovějšího snímku obrazovky pro každého konkurenta
"sickMax" : 2, // (volitelné, výchozí 1) 0–3: vrátit jen konkurenční URL s úrovní problému nejvýše N
},
...
] }
ODPOVĚĎ:{
...
"actions" : [
...
{
"a" : "productGetAll",
"ok" : 10, // Celkový počet produktů
"products" : [ // Pole produktů (abecedně podle referenčního kódu), každý jako objekt:
...
{ ... }, // Objekt produktu stejný jako odpověď akce productGet (výše)
...
],
},
...
]
}
Může se vám hodit také akce categoryGet.Kategorie
categoryCreate - Vytvoření nové kategorie
Na rozdíl od flexibilnějších akcí (např. productCreate přijímá existující i nové kategorie) tato akce selže, pokud kategorie už existuje.
{ "actions" : [
...
{
"a" : "categoryCreate",
"name" : "The New Category Name",
"name" : ["New Category 1", "New Category 2"], // Může být i pole
"products" : ["REF-CODE-1", "REF-CODE-2"], // (volitelné) Při vytvoření vložit tyto produkty do těchto kategorií
"comments" : "Some comments\nAnd another line", // (volitelné) Maximálně 1 000 znaků UTF-8
},
...
] }
categoryEdit - Úprava existující kategorie
{ "actions" : [
...
{
"a" : "categoryEdit",
"name" : "The Category Name", // Nerozlišují se velká a malá písmena
"newName" : "The Category Renamed", // (volitelné)
"products" : ["REF-CODE-1", "REF-CODE-2"], // (volitelné) Přepsat seznam produktů
"productsAdd" : ["REF-CODE-1", "REF-CODE-2"], // (volitelné) Přidat tyto produkty do kategorie
"productsRemove" : ["REF-CODE-3", "REF-CODE-4"], // (volitelné) Odebrat tyto produkty z kategorie (NEsmaže je)
"comments" : "To overwrite the comments.", // (volitelné) Maximálně 1 000 znaků UTF-8
},
...
] }
Pole "products", "productsAdd" a "productsRemove" dělají v zásadě totéž: upravují produkty přiřazené ke kategorii, ale různými způsoby. Pro odebrání všech produktů z kategorie použijte "products" : []ODPOVĚĎ:
{
...
"actions" : [
...
{
"a" : "categoryEdit",
"ok" : 5, // Počet provedených úprav
// (přejmenování i změna komentáře se počítají po jedné; stejně tak přidání/odebrání každého produktu)
"name" : "The Category Name", // Nový název po přejmenování, jinak původní název
"productsCount" : 30, // Nový počet produktů v kategorii (ať se změnil, či nikoli)
"productsAdded" : 2, // Počet produktů přidaných do kategorie
"productsRemoved" : 2, // Počet produktů odebraných z kategorie
},
...
]
}
categoryDelete - Smazání jedné nebo více kategorií
{ "actions" : [
...
{
"a" : "categoryDelete",
"name" : "The Category Name", // Nerozlišují se velká a malá písmena (řetězec), NEBO:
"name" : ["Category 1", "Category 2"], // Může být také pole více kategorií k odstranění (maximálně 1 000)
"deleteProducts" : 1,
// Ve výchozím stavu se smaže kategorie a produkty z ní jen vypadnou,
// ale při deleteProducts se všechny produkty v kategorii smažou bez potvrzení,
// a s nimi i konkurenční URL, bez možnosti jejich obnovení!
},
...
] }
ODPOVĚĎ:{
...
"actions" : [
...
{
"a" : "categoryDelete",
"ok" : 2, // Počet smazaných kategorií
"productsCount" : 123, // Počet produktů v dotčených kategoriích
"productsDeleted" : 123, // Počet produktů smazaných díky volbě "deleteProducts"
// POZNÁMKA: Produkt v několika zadaných kategoriích se počítá jen jednou.
},
...
]
}
categoryCopy - Kopírování/přesouvání produktů mezi kategoriemi
Tato akce nemaže žádné produkty, pouze mění jejich zařazení do kategorií.
Jde o stejnou funkci, kterou rozhraní používá, když otevřete Categories, vyberete jednu či více kategorií a kliknete na Selected Categories > Copy & More. Podrobnosti o této funkci najdete přímo tam.
{ "actions" : [
...
{
"a" : "categoryCopy",
"categoriesFrom" : ["Category 1", "Category 2"], // Vybrat produkty z těchto zdrojových kategorií
"removeMode" : "cat", // (volitelné) Odebrat odpovídající produkty ze zadaných "categoriesFrom"
"removeMode" : "all", // (volitelné) Odebrat odpovídající produkty ze všech kategorií, do kterých patří
// Bez removeMode produkty zůstanou v "categoriesFrom" a zároveň se přidají do "categoriesTo" (kopírování místo přesunu).
"deleteMode" : "cat", // (volitelné) Po zkopírování produktů smazat zadané "categoriesFrom"
"deleteMode" : "all", // (volitelné) Smazat všechny kategorie, do kterých tyto produkty patří
// Bez deleteMode budou "categoriesFrom" existovat i po odebrání produktů pomocí "removeMode".
"categoriesTo" : ["Another Category 1", "Another Category 2"],
// Vložit všechny vyhovující produkty do cílových kategorií (neexistující se vytvoří)
"categoriesToClear" : 1, // (volitelné) Nejprve vyprázdnit tyto kategorie, do kterých produkty přidáváme
},
...
] }
ODPOVĚĎ:{
...
"actions" : [
...
{
"a" : "categoryCopy",
"ok" : 3, // Počet změněných kategorií (zdrojových i cílových)
// "ok" je součet categoriesModified + categoriesCreated + categoriesDeleted
"categoriesModified" : 2, // Počet upravených existujících kategorií (zdrojových i cílových)
"categoriesCreated" : 1, // Počet nově vytvořených kategorií
"categoriesDeleted" : 0, // Počet kategorií smazaných prostřednictvím "deleteMode"
"productsCount" : 123, // Počet produktů odpovídajících zadaným "categoriesFrom"
// POZNÁMKA: Produkt v několika zadaných "categoriesFrom" se počítá jen jednou.
},
...
]
}
categoryGet - Načtení kategorie
{ "actions" : [
...
{
"a" : "categoryGet",
"name" : "The Category Name", // Nerozlišují se velká a malá písmena
"currency" : "EUR", // (POVINNÉ při withStats nebo withProducts) Měna statistik
"withStats" : 1, // Vrátit také statistiky (pomalejší)
"withProducts" : 1, // Vrátit také produkty této kategorie (může znamenat velký objem dat)
"noCompetitors" : 1, // Při withProducts nevracet pole konkurentů (kvůli menšímu objemu dat)
"noComments" : 1, // Při withProducts nevracet komentáře produktů (komentáře kategorie se vrátí)
},
...
] }
ODPOVĚĎ:{
...
"actions" : [
...
{
"a" : "categoryGet",
"ok" : 1,
"name" : "The Category Name",
"created" : 1234567890, // Čas Unix epoch
"createdBy" : "SOMEUSER", // Uživatelské jméno nebo "API"
"comments" : "Comments of this category",
"commentsLast" : 1234567890, // Čas poslední úpravy komentářů (pokud nastala; Unix epoch)
"commentsLastBy" : "SOMEUSER", // Uživatelské jméno nebo "API"
"productsCount" : 10, // Počet produktů v této kategorii
"stats" : {
// Tyto statistiky jsou stejné jako na stránce kategorie v rozhraní a ve sloupcích seznamu kategorií.
// Podrobnosti najdete po přidání daného sloupce do seznamu a kliknutí na (?).
// Všechny částky jsou v měně "currency" uvedené v požadavku.
// VAROVÁNÍ: Pokud částka není dostupná (např. compIn* bez skladových konkurentů), hodnota je 0.
"priceAvg" : 123.45, // Vaše průměrná cena
"costAvg" : 123.45, // Do tohoto průměru se počítají jen produkty s uvedenými náklady
"marginAvg" : 10.5, // Procento (může být záporné, počítají se jen produkty s náklady)
"rankAvg" : 1.23, // Vaše průměrné pořadí podle ceny (1 = nikdo není levnější)
"rankInAvg" : 1.23, // Vaše průměrné pořadí mezi konkurenty se skladem
"productsCountComp" : 9, // Počet produktů s konkurentem/konkurenty
"productsCountCompIn" : 7, // Počet produktů s konkurenty se skladem
"compAvg" : 123.56, // Průměr z průměrů všech konkurentů
"compAvgVsMe" : 123.56, // Průměrný rozdíl (v měně) mezi vaší cenou a konkurencí (záporný = jste levnější)
"compInAvg" : 123.56, // Jako "compAvg", ale jen konkurenti se skladem
"compInAvgVsMe" : 123.56, // Jako "compAvgVsMe", ale pouze konkurenti se skladem
"compLowest" : 123.56, // Jako "compAvg", ale průměr nejnižší ceny konkurenta u každého produktu
"compLowestVsMe" : 123.56, // Jako "compAvgVsMe", ale ...
"compInLowest" : 123.56, // Jako "compInAvg", ale ...
"compInLowestVsMe" : 123.56, // Jako "compInAvgVsMe", ale ...
"compHighest" : 123.56, // Jako "compAvg", ale průměr nejvyšší ceny konkurenta u každého produktu
"compHighestVsMe" : 123.56, // Jako "compAvgVsMe", ale ...
"compInHighest" : 123.56, // Jako "compInAvg", ale ...
"compInHighestVsMe" : 123.56, // Jako "compInAvgVsMe", ale ...
},
"products" : [ // Pole produktů (abecedně podle referenčního kódu), každý jako objekt:
...
{ ... }, // Objekt produktu jako v odpovědi na akci productGet
...
],
},
...
]
}
categoryGetAll - Načtení všech kategorií
{ "actions" : [
...
{
"a" : "categoryGetAll",
"withStats" : 1, // Vrátit také statistiky (pomalejší)
"noComments" : 1, // Nevracet komentáře (kvůli menšímu objemu dat)
"noProducts" : 1, // Nevracet pole produktů (...)
},
...
] }
ODPOVĚĎ:{
...
"actions" : [
...
{
"a" : "categoryGetAll",
"ok" : 10, // Celkový počet kategorií (délka pole "categories")
"categories" : [ // Pole kategorií (abecedně), každá jako objekt:
...
{
"name" : "The Category Name",
"created" : 1234567890, // Čas Unix epoch
"createdBy" : "SOMEUSER", // Uživatelské jméno nebo "API"
"comments" : "Comments of this category",
"commentsLast" : 1234567890, // Čas poslední úpravy komentářů (pokud nastala; Unix epoch)
"commentsLastBy" : "SOMEUSER", // Uživatelské jméno nebo "API"
"productsCount" : 2, // Počet produktů v této kategorii
"products" : ["REF-CODE-1", "REF-CODE-2"], // Referenční kódy jejích produktů (abecedně), pokud noProducts=1, chybějí
"stats" : {
// Při "withStats" stejný objekt statistik jako u categoryGet (výše)
...
},
}
...
],
},
...
]
}
Cenová upozornění
alertRecipientCreate - Vytvoření nového příjemce upozornění
Podrobnosti o polích zjistíte kliknutím na zelené ikony otazníku ve svém účtu.
{ "actions" : [
...
{
"a" : "alertRecipientCreate",
"email" : "john@example.net", // Může být také telefonní číslo pro SMS upozornění; viz nápověda v rozhraní
"name" : "john", // Jednoduché zobrazované jméno (obvykle křestní jméno; nerozlišuje velikost písmen)
"maxFrequency" : 1800, // (volitelné, výchozí 7200) Viz nápověda v rozhraní
"simplify" : 0, // (volitelné, výchozí 1) Zapnout zjednodušení (viz nápověda v rozhraní)
"sleepEnabled" : 1, // (volitelné) Zapnout období klidu
"sleepFrom" : "18:30", // (jen pokud sleepEnabled) 24hodinový formát
"sleepTo" : "07:00", // (jen pokud sleepEnabled) 24hodinový formát
"timezone" : "America/Los_Angeles", // (jen pokud sleepEnabled) Formát odpovídá souborové cestě Linuxu /usr/share/zoneinfo
// Mezery se převedou na podtržítka.
// Správné časové pásmo si ověřte ve formuláři [New Recipient] v rozhraní.
"status" : "hold", // (volitelné) Nastavit režim "hold" nebo "disable". Jakákoli jiná hodnota (včetně "") je aktivní.
"rules" : [...], // (volitelné) Výchozí pravidla upozornění (pole objektů pravidel), jako "rulesAdd" u alertRecipientEdit níže
},
...
] }
ODPOVĚĎ:{
...
"actions" : [
...
{
"a" : "alertRecipientCreate",
"ok" : 1,
},
...
]
}
alertRecipientEdit - Úprava příjemce upozornění a jeho pravidel
Podrobnosti o polích zjistíte kliknutím na zelené ikony otazníku ve svém účtu.
Stránka "email" určuje, který příjemce se upraví. Všechna ostatní pole mění jeho nastavení.
{ "actions" : [
...
{
"a" : "alertRecipientEdit",
"email" : "john@example.net", // Aktuální e-mail nebo telefonní číslo (přesně ve formátu vráceném akcí alertGetAll)
"newEmail" : "john2@example.net", // (volitelné) Nový e-mail nebo číslo telefonu; viz nápověda v rozhraní
"name" : "john2", // (volitelné) Nové jméno
"maxFrequency" : 1800, // (volitelné) Viz nápověda v rozhraní
"simplify" : 1, // (volitelné) Zapnout zjednodušení (viz nápověda v rozhraní)
"sleepEnabled" : 1, // (volitelné) Zapnout období klidu
"sleepFrom" : "18:30", // (jen pokud sleepEnabled) 24hodinový formát
"sleepTo" : "07:00", // (jen pokud sleepEnabled) 24hodinový formát
"timezone" : "America/Los_Angeles", // (jen pokud sleepEnabled) Viz akce alertRecipientCreate výše
"status" : "hold", // (volitelné) Nastavit režim "hold" nebo "disable". Jiná hodnota (např. "") zapne režim "active".
"rules" : [{ruleObject}, {ruleObject}], // (volitelné) Přepsat všechna existující pravidla (prázdné pole je odstraní všechna)
// Pokud chcete zachovat stávající pravidla, neuvádějte pole "rules".
"rulesAdd" : [ // (volitelné) Přidat tato pravidla ke stávajícím
...
{ // TOTO JE FORMÁT OBJEKTU PRAVIDLA:
"name" : "me_cross_avg", // Na stránce Alerts otevřete [Rules] > [+ New Rule] a vyberte pravidlo, čímž zobrazíte jeho název v API.
"disabled" : 1, // (volitelné) Vytvářet vypnuté pravidlo nedává moc smysl, ale níže uvedená akce alertRuleEdit to může využít
"var_n" : 123.00, // Proměnná "X" se zapíše jako "var_x",
"var_c" : "USD", // ... takže zde uveďte parametry, které pravidlo potřebuje,
"var_h" : 24, // ... (některá pravidla žádné proměnné nemají).
"direction" : "both", // Případně "drop" nebo "rise", pokud má pravidlo směr
"categories" : ["The Category 1", "The Category 2"], // (volitelné) Prázdná nebo neuvedená hodnota znamená VŠECHNY PRODUKTY
"ignoreOos" : 1, // (volitelné) Ignorovat konkurenty bez skladu (viz rozhraní)
"urlInclude" : "", // (volitelné, nerozlišuje velikost písmen)
"urlExclude" : "amazon", // (volitelné, nerozlišuje velikost písmen)
// Každé pravidlo identifikuje "ruleNumber" (např. při pozdější úpravě či smazání).
// Najdete ho ve vrácených objektech pravidel, ale nelze ho sami nastavit.
}
...
],
"rulesRemove" : [1,4,7], // (volitelné) "ruleNumber" pravidel k odstranění
// Toto "ruleNumber" získáte z akce alertGetAll níže.
// POZNÁMKA: Pro smazání všech pravidel raději použijte "rules" = [].
},
...
] }
ODPOVĚĎ:{
...
"actions" : [
...
{
"a" : "alertRecipientEdit",
"ok" : 3, // Počet změn (proměnné + počet přidaných/smazaných pravidel)
},
...
]
}
alertRecipientDelete - Smazání příjemce upozornění
{ "actions" : [
...
{
"a" : "alertRecipientDelete",
"email" : "john@example.net", // Aktuální e-mail nebo telefonní číslo (přesně ve formátu vráceném akcí alertGetAll)
},
...
] }
ODPOVĚĎ:{
...
"actions" : [
...
{
"a" : "alertRecipientDelete",
"ok" : 1,
},
...
]
}
alertRuleEdit - Úprava existujícího pravidla upozornění
Pro odstranění pravidla použijte pole "rulesRemove" u akce alertRecipientEdit ; pro přidání nového pravidla použijte tamtéž pole "rulesAdd".
{ "actions" : [
...
{
"a" : "alertRuleEdit",
"email" : "john@example.net", // E-mail nebo telefonní číslo příjemce (přesně ve formátu vráceném akcí alertGetAll)
"ruleNumber" : 1, // Referenční číslo pravidla k úpravě, vrácené akcí alertGetAll níže
"rule" : {
// Proměnné pravidla, které chcete přepsat. Formát objektu pravidla viz "rulesAdd" u alertRecipientEdit výše.
"disabled" : 1, // Například pro zapnutí/vypnutí pravidla
"var_n" : 5, // Nebo jiná proměnná, například N podle typu pravidla
...
},
},
...
] }
ODPOVĚĎ:{
...
"actions" : [
...
{
"a" : "alertRuleEdit",
"ok" : 1, // Počet změněných proměnných
},
...
]
}
alertGetAll - Načtení příjemců upozornění a jejich pravidel
{ "actions" : [
...
{
"a" : "alertGetAll",
// Tato akce nemá žádné parametry.
},
...
] }
ODPOVĚĎ:{
...
"actions" : [
...
{
"a" : "alertGetAll",
"ok" : 3, // Počet příjemců (délka pole "recipients")
"recipients" : [ // Pole všech příjemců; každý objekt má podobu jako u alertRecipientCreate výše
...
{
"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" : [ // Pole pravidel; každý objekt má podobu popsanou u alertRecipientEdit výše
...
{
"ruleNumber" : 4, // Referenční číslo pro úpravu tohoto pravidla pomocí alertRuleEdit výše
"name" : "me_cross_avg",
"disabled" : 0,
"var_n" : "123.00", // POZNÁMKA: Všechny proměnné vracíme jako řetězce, i když jde o čísla.
"var_c" : "USD",
"var_h" : "24",
"direction" : "both",
"categories" : [], // Prázdná hodnota znamená všechny produkty
"ignoreOos" : 0,
"urlInclude" : "",
"urlExclude" : "amazon",
}
...
],
}
...
],
},
...
]
}
Pravidla automatického přeceňování
repricingCreate - Vytvoření nového pravidla přeceňování
Podrobnosti o polích zjistíte kliknutím na zelené ikony otazníku ve svém účtu.
Jak k pravidlu přiřadíte produkty? Úpravou produktů pomocí akce productEdit nebo productRepricing. Pravidlo samo o sobě žádné produkty „nevlastní“; jednotlivé produkty na něj pouze odkazují.
{ "actions" : [
...
{
"a" : "repricingCreate",
"name" : "The Rule Name", // Maximálně 50 znaků
"init" : { // Objekt výchozího pravidla (první řádek "Set my price to")
"target" : "cheapest_n", // (viz seznam níže)
"var_n" : 3, // Jen pokud cíl potřebuje proměnnou N
"plusAmount" : -2, // Kladná hodnota znamená nad, záporná pod
"plusCurrency" : "%", // Měna (např. "USD") nebo "%"
// Odpovídá nastavení „Nastavit mou cenu o 2 % pod průměr tří nejlevnějších konkurentů“.
// VAROVÁNÍ: Na rozdíl od níže uvedených objektů "never" nemá výchozí pravidlo pole "direction". O směru rozhoduje znaménko "plusAmount".
},
"never" : [ // (volitelné) Objekty podmínek „ale nikdy“, prováděné v pořadí (maximálně 0 až 10)
{
"target" : "cheapest_n_in", // (viz seznam níže)
"var_n" : 1, // Jen pokud cíl potřebuje proměnnou N
"direction" : "below", // Nebo "above"
"plusAmount" : -10, // Kladná hodnota pro přidání, záporná pro odečtení (povinné i při 0)
"plusCurrency" : "USD", // Měna nebo "%" (povinné i když plusAmount=0)
// Odpovídá nastavení „Ale nikdy pod cenu nejlevnějšího konkurenta se skladem minus 10,00 USD“.
},
{
"target" : "cost",
"direction" : "below",
"plusAmount" : 5,
"plusCurrency" : "%",
// Odpovídá nastavení „Ale nikdy pod moje náklady plus 5 %“.
}
],
"ignoreDomains" : "amazon ebay.com MyLabel1", // (volitelné) Domény a/nebo štítky konkurentů, které ignorovat (nerozlišuje velikost písmen; viz rozhraní)
"charm" : "none|zeros|charm", // (volitelné, výchozí "none") Psychologické ceny ("", "none" i vynechání znamenají totéž)
"confidence" : 82, // (volitelné, výchozí 70) Minimální míra spolehlivosti 0–99 % (viz rozhraní)
"disabled" : 1, // (volitelné)
},
...
] }
// ========== Všechny dostupné řetězce "target": ==========
// "average" : Průměr všech konkurentů
// "average_in" : Průměr všech konkurentů se skladem
// "cheapest_n" : Průměr N nejlevnějších konkurentů (nebo „nejlevnější“, pokud N=1)
// "cheapest_n_in" : Průměr N nejlevnějších konkurentů se skladem (nebo ...)
// "highest_n" : Průměr N nejdražších konkurentů (nebo ...)
// "highest_n_in" : Průměr N nejdražších konkurentů se skladem (nebo ...)
// "cost" : Moje náklady
// "me_avg_n" : Průměr mé ceny za posledních N hodin (omezuje rychlost změny ceny)
// "domain:example.com" : Cena na example.com (nejnižší, pokud je z domény více URL)
// "domainIn:example.com" : Cena na example.com pouze při skladové dostupnosti (...)
ODPOVĚĎ:{
...
"actions" : [
...
{
"a" : "repricingCreate",
"ok" : 3, // Počet úspěšně zpracovaných a uložených objektů (např. init + never[0] + never[1] = 3)
"name" : "The Rule Name", // Konečný název v databázi (můžeme upravit speciální znaky)
},
...
]
}
repricingEdit - Úprava existujícího pravidla přeceňování
Podívejte se na repricingCreate výše, kde je vysvětleno použití těchto proměnných.
Mění samotné pravidlo, nikoli produkty, kterým je přiřazeno. Pro přiřazení produktů k pravidlům použijte akci productEdit nebo productRepricing.
{ "actions" : [
...
{
"a" : "repricingEdit",
"name" : "The Rule Name", // Nerozlišují se velká a malá písmena
"newName" : "The Rule Renamed", // (volitelné) Maximálně 50 znaků
"init" : { // (volitelné) Pokud je uvedeno, přepsat vybrané proměnné výchozího pravidla (viz repricingCreate)
"plusAmount" : 1, // Můžete například přepsat jen "plusAmount" a ostatní proměnné ponechat.
// VAROVÁNÍ: Pokud nový "target" vyžaduje proměnnou N, nezapomeňte uvést "var_n".
},
"never" : [...], // (volitelné) Můžete přepsat celé pole "never", ale pravděpodobně je lepší použít never_*.
// "never":[] smaže všechny stávající podmínky. Vynecháním proměnné je zachováte.
"never_0" : { // (volitelné) Přepsat první objekt „ale nikdy“ (index pole 0)
"var_n" : 2, // Můžete například změnit jen "var_n" a ostatní proměnné ponechat.
},
"never_2" : {
"target" : "", // Tím se vypne třetí podmínka „ale nikdy“ (index pole 2).
// Při nastavení "target" na "" se ostatními proměnnými objektu nemusíte zabývat.
// "never_2":{} funguje stejně.
},
"never_6" : {...}, // Může jít o nově přidávanou podmínku „ale nikdy“, která musí obsahovat všechny proměnné jako u repricingCreate.
// "never_9" je maximum, protože pole "never" může obsahovat nejvýše 10 prvků.
"ignoreDomains" : "", // (volitelné) Stejné jako u repricingCreate
"charm" : "zeros", // (volitelné) ...
"confidence" : 82, // (volitelné) ...
"disabled" : 1, // (volitelné) Nastavte 0 pro zapnutí aktuálně vypnutého pravidla
},
...
] }
ODPOVĚĎ:{
...
"actions" : [
...
{
"a" : "repricingEdit",
"ok" : 3, // Počet změn (např. jedna proměnná v objektu never_N + jiná v "init" + "charm")
"name" : "The Rule Name", // Konečný (nový) název v databázi (můžeme upravit speciální znaky)
},
...
]
}
repricingDelete - Smazání pravidla přeceňování
{ "actions" : [
...
{
"a" : "repricingDelete",
"name" : "The Rule Name", // Nerozlišují se velká a malá písmena
"onlyIfUnused" : 1, // (volitelné) Pro jistotu můžete vyvolat chybu, pokud pravidlo používají některé produkty
},
...
] }
ODPOVĚĎ:{
...
"actions" : [
...
{
"a" : "repricingDelete",
"ok" : 1,
"productsCount" : 10, // Počet produktů, které toto pravidlo používaly (a nyní nemají žádné)
},
...
]
}
repricingGetAll - Načtení všech pravidel přeceňování
{ "actions" : [
...
{
"a" : "repricingGetAll",
// Tato akce nemá další parametry
},
...
] }
ODPOVĚĎ:{
...
"actions" : [
...
{
"a" : "repricingGetAll",
"ok" : 10, // Celkový počet pravidel (délka pole "rules")
"rules" : [ // Pole pravidel přeceňování (abecedně), každé pravidlo jako objekt:
...
{
"name" : "Some Repricing Rule",
"created" : 1234567890, // Čas prvního vytvoření pravidla (Unix epoch)
"createdBy" : "SOMEUSER", // Uživatelské jméno nebo "API"
"edited" : 1234567890, // Čas poslední úpravy (pokud nastala, jinak proměnná chybí)
"editedBy" : "SOMEUSER", // Uživatelské jméno nebo "API" (případně chybí)
"disabled" : 1234567890, // Je-li pravidlo vypnuté, čas jeho posledního vypnutí (Unix epoch); jinak chybí.
"disabledBy" : "SOMEUSER", // Uživatelské jméno nebo "API" (případně chybí)
"productsCount" : 10, // Počet produktů, které toto pravidlo aktuálně používají
"ignoreDomains" : "amazon ebay.com MyLabel1", // Domény a/nebo štítky konkurentů, které se ignorují (viz rozhraní)
"charm" : "charm", // Režim psychologických cen (none|zeros|charm)
"confidence" : 82, // Minimální procento spolehlivosti 0–99 (viz rozhraní)
"init" : { // Objekt výchozího pravidla (první řádek "Set my price to")
"target" : "cheapest_n", // (viz seznam u repricingCreate)
"var_n" : 3, // Pokud cíl vyžaduje proměnnou N, jinak chybí
"plusAmount" : -2, // Kladná hodnota znamená nad, záporná pod
"plusCurrency" : "%", // Měna (např. "USD") nebo "%"
// Odpovídá nastavení „Nastavit mou cenu o 2 % pod průměr tří nejlevnějších konkurentů“.
// VAROVÁNÍ: Na rozdíl od níže uvedených objektů "never" nemá výchozí pravidlo pole "direction". O směru rozhoduje znaménko "plusAmount".
},
"never" : [ // Objekty „ale nikdy“, prováděné v pořadí
{
"target" : "cheapest_n_in",
"var_n" : 1,
"direction" : "below", // Nebo "above"
"plusAmount" : -10, // Kladná pro přidání, záporná pro odečtení
"plusCurrency" : "USD", // Měna nebo "%"
// Odpovídá nastavení „Ale nikdy pod cenu nejlevnějšího konkurenta se skladem minus 10,00 USD“.
},
{}, // To znamená, že druhý řádek podmínek „ale nikdy“ zůstal prázdný.
{
"target" : "cost",
"direction" : "below",
"plusAmount" : 5,
"plusCurrency" : "%",
// Odpovídá nastavení „Ale nikdy pod moje náklady plus 5 %“.
}
],
}
...
],
},
...
]
}
Tabulkové reporty
spreadsheetDownload - Stažení tabulkového reportu
Odpovídá tomu, co můžete udělat na stránce Export ve svém účtu.
Zkontrolujte, že máte dostatečně vysokou hodnotu timeout mají dostatečně vysokou hodnotu, protože vytvoření velké tabulky může nějakou dobu trvat.
USNADNĚTE SI PRÁCI: Klikněte na tlačítko Show API equivalent na stránce Export. Vygeneruje kompletní volání JSON (i příkaz curl) odpovídající zvoleným možnostem formuláře.
{ "actions" : [
{
"a" : "spreadsheetDownload",
"preset" : "Some Preset Name", // (volitelné) Místo všech níže uvedených údajů můžete použít svou nebo naši předvolbu
// U vlastní předvolby uveďte celý název bez uživatelského jména na začátku a měny na konci.
// Názvy našich výchozích předvoleb zobrazíte po rozbalení DIRECT DOWNLOAD na stránce Export a najetí myší na jednotlivé položky.
// Například "pricezag_backup" je naše speciální předvolba zálohy (viz "Special BACKUP format to re-import" v nabídce DIRECT DOWNLOAD).
// Můžete uvést také další proměnné, které přepíší parametry předvolby (např. jiná měna, formát nebo kategorie).
"savePreset" : "My New Preset Name", // (volitelné) Uložit níže uvedená nastavení jako novou předvolbu (použitelnou v rozhraní i API)
// VÝJIMKA Z VÝJIMKY: Při savePreset se tabulka nestahuje; místo ní se vrátí běžný objekt JSON.
"savePresetOverwrite" : 1, // (volitelné) Přepsat existující předvolbu uvedenou v "savePreset" (jinak se vrátí chyba)
// VAROVÁNÍ: Přepsání odstraní veškerá původní nastavení předvolby; nepokoušejte se změnit jen jedno pole.
// Pro přejmenování nebo smazání předvolby použijte níže akci spreadsheetPresetEdit.
"downloadURL" : 1, // (volitelné) VÝJIMKA Z VÝJIMKY: Místo souboru tabulky vrátí běžnou odpověď JSON s polem "fileURL",
// které obsahuje veřejnou URL souboru (bez přihlášení a API klíče). Soubor si může kdokoli stáhnout po dobu 15 minut.
// Hodnota "ok" udává počet řádků; "fileSize" uvádí velikost v bajtech.
"format" : "xlsx|xls|csv|csv-tab", // (výchozí csv pro API)
"currency" : "USD", // (POVINNÉ bez předvolby) Měna, do které se převedou VŠECHNY částky
"categories" : ["Category 1", "Category 2"], // Uvést pouze produkty z těchto kategorií (jinak všechny produkty)
"historyPeriod" : "prev_6mo", // (volitelné, výchozí "now")
// Nejdřív si prosím přečtěte nápovědu pod otazníky (?) na stránce Export k historickým obdobím.
// "historyPeriod" určuje, jak daleko do minulosti se čtou data, která pak "historyRow" rozdělí do řádků tabulky pro každý produkt.
// "now": Bez historie, pouze aktuální data (bez "historyRow")
// "all": Celá dostupná historie od registrace (nebo aspoň pro dané produkty). MŮŽE BÝT POMALÉ.
// "1234500000-1237800000": Vlastní časový úsek (časy Unix epoch „od–do“)
// "123h": Posledních 123 hodin; nezaokrouhluje se na celé hodiny, konec je nyní a začátek může ležet uprostřed hodiny.
// "cur_123(d|wk|mo|yr)": Posledních 123 dní/týdnů/měsíců/let včetně aktuálního neukončeného období. "cur_2mo" stažené 10. dne tak obsahuje 40 dní.
// "prev_123(d|wk|mo|yr)": Předchozích 123 dokončených dní/týdnů/měsíců/let. "prev_2mo" stažené 10. února znamená 62 dní prosince a ledna.
// Začátek cur_* i prev_* (a konec prev_*) se vždy zarovnává na předchozí půlnoc, zatímco cur_* končí právě teď;
// takže "cur_2d" stažené v poledne pokrývá posledních 36 hodin, zatímco "prev_2d" pokrývá 48 hodin končících před 12 hodinami.
"historyRow" : "2w", // (povinné, pokud "historyPeriod" není "now")
// "historyRow" určuje dobu reprezentovanou jedním řádkem (průměr za toto období); pro produkt tak vzniká více řádků (kromě "all").
// "historyRow" si můžete představit jako ROZDĚLENÍ "historyPeriod" do jednotlivých řádků tabulky pro každý produkt.
// "all": Zprůměrovat celé historyPeriod do jediného řádku pro každý produkt.
// "123(d|wk|mo|qt|yr)": Interval 123 kalendářních dní/týdnů/měsíců/čtvrtletí/let, zarovnaný na půlnoc. Pro 1 lze číslo vynechat ("wk" místo "1wk").
// Pokud v sobotu stáhnete tabulku s historyRow:"7d", řádky budou průměry období od soboty 00:00 do pátku 23:59.
// Pokud použijete historyRow:"1wk", řádky budou průměry od pondělí 00:00 do neděle 23:59 a poslední řádek bude aktuální neúplný týden pondělí–sobota.
// ▶ LIMIT 500 000 ŘÁDKŮ: Rozhraní i API odmítnou historické parametry, které vytvoří přes 500 tisíc řádků.
// To se může stát například při historyRow:"day" pro dlouhé období historyPeriod, třeba 365 dní × 1 400 produktů.
// Pokud tolik dat potřebujete, stáhněte zvlášť tabulku pro každou kategorii o několika stovkách produktů.
"timezone" : "America/Los_Angeles", // (volitelné, výchozí "UTC") Formát cesty v Linuxu /usr/share/zoneinfo
// Mezery se převedou na podtržítka.
// Časové pásmo je potřeba jen tehdy, když některé možnosti history* používají kalendářní období (pro určení půlnoci).
// Rozhraní používá časové pásmo aktuálního uživatele, ale API takové nastavení nemá, proto ho musíte uvést v požadavku.
// ========== SLOUPCE: ==========
// Pomocí proměnných column* určíte sloupce tabulky (nápovědu ke každému najdete ve formuláři stránky Export).
// Výchozí hodnota všech je 0 (sloupec se nezobrazí), s výjimkou Code.
"columnCode" : 1, // (nelze odstranit, sloupec s REF-CODE produktu je vždy přítomen)
"columnName" : 1, // Název produktu
"columnCategories" : 1, // Kategorie produktu ("Category 1; Category 2" v jedné buňce)
"columnComments" : 1, // Komentáře k produktu
"columnCreated" : 1, // Datum vytvoření produktu YYYY/MM/DD (v našem systému)
"columnCustom" : 1, // Vlastní pole produktů (sloupec pro každou unikátní proměnnou ze všech produktů)
"columnPrice" : 1, // Cena produktu v požadované měně (NE v měně produktu)
"columnCost" : 1, // Náklady produktu (v ...)
"columnMargin" : 1, // Marže produktu v procentech podle ceny a nákladů
"columnRank" : 1, // Moje pořadí
"columnInRank" : 1, // Moje pořadí mezi skladem dostupnými konkurenty
"columnMyWebsite" : 1, // URL mého webu
"columnReprice" : 1, // Vypočtená cena přeceňování (v ...)
"columnRepricingRule" : 1, // Název pravidla přeceňování
"columnRecommended" : 1, // Doporučená cena (viz nápověda na stránce Export)
"columnCompUrls" : 1, // Konkurenční URL (každá ve vlastním sloupci)
"columnCompUrlsJoin" : 1, // Konkurenční URL (oddělené mezerami v jedné buňce)
"columnCompMinMaxAvg" : 1, // Přidá 3 sloupce: minimální, maximální a průměrná cena konkurentů
"columnInCompMinMaxAvg" : 1, // Přidá 3 sloupce: minimum, maximum a průměr cen konkurentů SE SKLADEM
"columnCompPrice" : 1, // Přidá sloupec pro cenu každého konkurenta (v ...)
"columnCompStock" : 1, // Přidá sloupec se skladem každého konkurenta (123|IN|OUT)
"columnCompSales" : 1, // Přidá sloupec s týdenním prodejem každého konkurenta
"columnCompRank" : 1, // Přidá sloupec s pořadím každého konkurenta mezi všemi (včetně vás)
"columnCompInRank" : 1, // Přidá sloupec s pořadím každého konkurenta mezi SKLADEM DOSTUPNÝMI (včetně vás)
// ========== SKRYTÉ POKROČILÉ PARAMETRY: ==========
// Máme i několik neoficiálních, méně dokumentovaných možností, z nichž některé používá například předvolba "pricezag_backup".
"originalCurrencies" : 1, // Namísto převodu částek do požadované měny a číselných buněk budou buňky obsahovat text s původní měnou ("123.90 USD").
"keepUrlLabels" : 1, // Běžně odstraňujeme štítky konkurenčních URL. Tato volba je zachová (užitečné pro zálohy).
"csvSeparator" : ";", // Chcete-li v CSV jiný oddělovač než čárku nebo tabulátor.
"csvNoQuote" : 1, // Zabrání používání uvozovek (") v CSV, což může narušit platnost formátu.
}
] }
// Jednoduchý způsob stažení záložní tabulky CSV je:
// 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 - Přejmenování nebo smazání předvolby exportu
Slouží POUZE k PŘEJMENOVÁNÍ nebo SMAZÁNÍ předvolby. Novou předvolbu vytvoříte nebo existující upravíte pomocí akce spreadsheetDownload výše.
{ "actions" : [
{
"a" : "spreadsheetPresetEdit",
"preset" : "Some Preset Name", // Aktuální název předvolby
"newName" : "The Renamed Preset", // Nový název této předvolby
"delete" : 1, // Smazat tuto předvolbu "preset" z účtu
// POZNÁMKA: Nelze smazat předvolbu používanou pro automatický export (vrátí se chyba).
// Nejdřív musíte smazat související plánované exporty (viz stránka Export).
}
] }
ODPOVĚĎ:{
...
"actions" : [
...
{
"a" : "spreadsheetPresetEdit",
"ok" : 1,
},
...
]
}
spreadsheetAutoCreate - Vytvoření automatického exportu tabulek
{ "actions" : [
{
"a" : "spreadsheetAutoCreate",
"preset" : "The Preset Name",
"email" : "john@example.net",
"currency" : "USD", // (volitelné) Výchozí "preset" znamená použít měnu z dané předvolby
"attach" : "link", // (volitelné, výchozí "attach") "attach" = příloha, "link" = hostovaný přímý odkaz
"everyMonday" : 1, // Odeslat tabulku každé pondělí
"everyTuesday" : 1, // ... (a stejně pro každý den týdne až po "everySunday")
"everyMonthDay1" : 15, // Odeslat každého 15. dne v měsíci
"everyMonthDay2" : 21, // ... a také každého 21. dne
"everyMonthDay3" : "last", // ... a také poslední den v měsíci
// everyMonthDay* může nabývat hodnot 0 až 9, nejvýše 10 dní v měsíci.
"time" : "3:59pm", // Funguje i "15.59", převede se na "3:59pm". Hodnoty "0:9", "0.09", "00:09", "0:09am" jsou rovnocenné.
"timezone" : "America/Los_Angeles", // (volitelné, výchozí "UTC") Formát cesty v Linuxu /usr/share/zoneinfo
// Mezery v názvu města se nahradí podtržítky.
}
] }
ODPOVĚĎ:{
...
"actions" : [
...
{
"a" : "spreadsheetAutoCreate",
"ok" : 1,
"id" : "5gwi6fqa", // Referenční ID tohoto automatického exportu pro případ pozdější úpravy (viz spreadsheetAutoEdit níže)
},
...
]
}
spreadsheetAutoEdit - Úprava automatického exportu tabulek
{ "actions" : [
{
"a" : "spreadsheetAutoEdit",
"id" : "5gwi6fqa", // Referenční ID automatického exportu k úpravě
// Toto ID dostanete v odpovědi na spreadsheetAutoCreate, ale je také vidět v titulku okna po kliknutí na Edit u automatického exportu.
"disabled" : 1, // (volitelné) Nastavte 0 pro zapnutí vypnutého automatického exportu
"delete" : 1, // (volitelné) Úplně smazat tento automatický export
// ===== Všechny následující (volitelné) parametry jsou stejné jako u spreadsheetAutoCreate výše =====
"preset" : "The Preset Name",
"email" : "john@example.net",
"currency" : "USD",
"attach" : "link",
"everyMonday" : 1, // VAROVÁNÍ: Jakmile zadáte alespoň jednu proměnnou every*, všechny původní proměnné every* se smažou,
"everyMonthDay1" : 15, // takže nastavení "everyMonthDay3" odstraní dřívější "everyFriday"=1.
// ... a stejně další (všechny proměnné every* viz spreadsheetAutoCreate)
"time" : "3:59pm",
"timezone" : "America/Los_Angeles",
}
] }
ODPOVĚĎ:{
...
"actions" : [
...
{
"a" : "spreadsheetAutoEdit",
"ok" : 3, // Počet provedených změn
},
...
]
}
Konkurence a další
competitorDeleteAll - Hromadné smazání konkurenta ze všech produktů nebo kategorií
VAROVÁNÍ: Konkurenční URL se okamžitě a nevratně smažou z účtu.
Jde o stejnou funkci jako v rozhraní, když otevřete stránku konkurenta a kliknete na Delete from all Products, nebo otevřete stránku kategorie a kliknete na (X) v seznamu konkurentů.
{ "actions" : [
...
{
"a" : "competitorDeleteAll",
"domain" : "competitordomain.com",
"categories" : ["The Category 1", "The Category 2"], // (volitelné) Pokud neuvedete, musíte použít "allProducts" = 1
"allProducts" : 1, // (volitelné) Odebrat ze všech produktů (NESMÍ být uvedeno "categories")
// Použijte buď "categories", nebo "allProducts"; nikoli obojí ani žádné z nich.
},
...
] }
ODPOVĚĎ:{
...
"actions" : [
...
{
"a" : "competitorDeleteAll",
"ok" : 10, // Počet smazaných URL
},
...
]
}
mathEdit - Nastavení nebo úprava výpočtů cen pro doménu konkurenta
Podrobnosti o polích zjistíte kliknutím na zelené ikony otazníku ve svém účtu.
{ "actions" : [
...
{
"a" : "mathEdit",
"domain" : "competitordomain.com",
"clear" : 1, // (volitelné) Vypnout všechny výpočty pro doménu (smaže veškeré předchozí nastavení)
// Při clear:1 nesmíte zadat nic dalšího níže, jinak nastane chyba.
"math" : [ // Pole matematických bloků, které se mají použít
{ // Toto je objekt matematického bloku; všechna pole jsou volitelná.
"categories" : ["Category 1", "Category 2"], // Jen pro produkty z těchto kategorií
"theirPriceMin" : 1234.90, // Jen když je jejich cena větší nebo rovna N
"theirPriceMinCurrency" : "USD", // Měna (lze použít "original" pro měnu z webu)
"theirPriceMax" : 1234.90, // ... menší nebo rovna
"theirPriceMaxCurrency" : "USD", // Měna (...)
"themMeMin" : -20.00, // Jen když je rozdíl [jejich cena - moje cena] větší nebo roven N (viz rozhraní)
"themMeMinCurrency" : "USD", // Měna nebo "%" z vaší ceny (zde NELZE použít "original")
"themMeMax" : -1.5, // ... menší nebo rovna
"themMeMaxCurrency" : "%", // Měna (...)
"addPre" : -10.00, // Částka k přičtení před násobením (záporná = odečíst)
"addPreCurrency" : "USD", // Měna (lze použít "original" pro měnu z webu)
"multiply" : 1.1, // Vynásobit tímto koeficientem
"divide" : 1.1, // NEBO vydělit (neuvádějte obojí)
"addPost" : 5.00, // Částka k přičtení po násobení (záporná = odečíst)
"addPostCurrency" : "USD", // Měna (...)
// Zdá se toho hodně? Podívejte se na jednoduchý příklad pod odpovědí.
},
... // Celkem nejvýše 10 bloků (výpočty se provedou v pořadí)
],
// POZNÁMKA: Zatím nelze upravit jen jednu proměnnou nebo matematický blok. Zadáním pole math se přepíše celé nastavení.
// POZNÁMKA: Ignoruje se každý blok bez násobení nebo dělení (nenastavené či 1), který zároveň nemá addPre!=0 ani addPost!=0,
// a pokud se ignorují všechny, má to stejný účinek jako smazání výpočtů pomocí clear:1.
// Jinými slovy, výpočet musí skutečně něco měnit, aby se uložil.
// TIP: Chcete-li výpočty domény dočasně vypnout bez odstranění nastavení,
// můžete nastavit categories: ["Some Empty Existing Category"]
},
...
] }
ODPOVĚĎ:{
...
"actions" : [
...
{
"a" : "mathEdit",
"ok" : 3, // Počet změněných matematických bloků (odstranění/vymazání se počítá jako změna)
},
...
]
}
JEDNODUCHÝ PŘÍKLAD - Odstranění 10% daně z cen na amazon.co.uk:{ "actions" : [
{
"a" : "mathEdit",
"domain" : "amazon.co.uk",
"math" : [
{
"divide" : 1.1
}
]
}
] }
Další příklady
▶ PŘÍKLAD 1 - Aktualizace nákladové ceny produktu
POŽADAVEK:
{
"actions" : [
{
"a" : "productEdit",
"code" : "SKU-1234",
"cost" : 140.50,
"costCurrency" : "EUR"
}
]
}
ODPOVĚĎ:{
"ok" : 1, // Vrátí 0, pokud SKU-1234 už měl tuto nákladovou cenu
"errors" : 0, // Vrátí 1, pokud SKU-1234 neexistoval
"actionsCount" : 1,
"actions" : [
{
"a" : "productEdit",
"ok" : 1 // Vrátí 0, pokud SKU-1234 už měl tuto nákladovou cenu, a -1, pokud neexistoval
}
]
}
▶ PŘÍKLAD 2 - Načtení neexistujícího produktu
POŽADAVEK:
{
"actions" : [
{
"a" : "productGet",
"code" : "NON-EXISTING-SKU",
"currency" : "USD"
}
}
ODPOVĚĎ:{
"ok" : 0, // Protože žádná akce nevrátila ok>0
"errors" : 1, // Protože jedna akce vrátila ok<0
"actionsCount" : 1,
"actions" : [
{
"a" : "productGet",
"ok" : -1, // Tak poznáte, že akce selhala
"error" : "Sorry, the product #NON-EXISTING-SKU does not exist. Maybe someone else just removed or renamed it?"
}
]
}
▶ PŘÍKLAD 3 - Vytvoření kategorie, pravidla přeceňování a dvou produktů k nim přiřazených
POŽADAVEK:
{
"actions" : [
{
"a" : "categoryCreate",
"name" : "My New Category"
},
{
"a" : "repricingCreate",
"name" : "My New Repricing Rule",
"init" : {
"target" : "cheapest_n",
"var_n" : 2,
"plusAmount" : 0,
"plusCurrency" : "%"
// Odpovídá nastavení „Nastavit mou cenu na střed mezi dvěma nejlevnějšími konkurenty“.
},
"never" : [
{
"target" : "cost",
"direction" : "below",
"plusAmount" : 5,
"plusCurrency" : "%"
// Odpovídá nastavení „Ale nikdy pod moje náklady plus 5 %“.
}
],
"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", // Stejný název pravidla, které jsme právě vytvořili
"categories" : ["My New Category"], // Stejný název kategorie, kterou jsme právě vytvořili
// ... ačkoli productCreate by neexistující kategorie vytvořil také, takže categoryCreate nebyla nezbytná.
"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://..."]
}
]
}
ODPOVĚĎ:{
"ok" : 4, // Protože všechny 4 akce vrátily ok>0
"errors" : 0, // Protože žádná akce nevrátila ok<0
"actionsCount" : 4,
"actions" : [
{
"a" : "categoryCreate",
"ok" : 1
},
{
"a" : "repricingCreate",
"ok" : 1
},
{
"a" : "productCreate",
"ok" : 1
},
{
"a" : "productCreate",
"ok" : 1
}
]
}
▶ PŘÍKLAD 4 - Sloučení dvou kategorií do jiné a odstranění původních kategorií
POŽADAVEK:
{
"actions" : [
{
"a" : "categoryCopy",
"categoriesFrom" : ["Original Category 1", "Original Category 2"],
"deleteMode" : "cat",
// Poznámka: "removeMode":"cat" není potřeba, protože deleteMode tyto dvě kategorie stejně smaže.
"categoriesTo" : ["A New Category"]
}
}
ODPOVĚĎ:{
"ok" : 1, // Protože jedna akce vrátila ok>0
"errors" : 0, // Protože žádná akce nevrátila ok<0
"actionsCount" : 1,
"actions" : [
{
"a" : "categoryCopy",
"ok" : 3, // Protože byly upraveny 3 kategorie: dvě původní se smazaly a jedna cílová se vytvořila
"categoriesCreated" : 1,
"categoriesDeleted" : 2,
"categoriesModified" : 0,
"productsCount" : 123
}
]
}
▶ PŘÍKLAD 5 - Změna proměnné N a směru pravidla upozornění
POŽADAVEK:
{
"actions" : [
{
"a" : "alertRuleEdit",
"email" : "john@example.net",
"ruleNumber" : 3,
"rule" : {
"var_n" : 1.5,
"direction" : "drop"
}
}
}
ODPOVĚĎ:{
"ok" : 1, // Protože jedna akce vrátila ok>0
"errors" : 0, // Protože žádná akce nevrátila ok<0
"actionsCount" : 1,
"actions" : [
{
"a" : "alertRuleEdit",
"ok" : 2 // Protože byly úspěšně změněny 2 proměnné
}
]
}
