PriceZag API — Yhdistä hintatiedot omiin järjestelmiisi

PriceZagin JSON API:n avulla voit hakea kilpailijoiden hinta- ja varastotietoja, hallita tuotteita ja uudelleenhinnoittelusääntöjä, ladata raportteja ja automatisoida työnkulkujasi.

Nopea curl-esimerkki

Tiedämme, että kehittäjät haluavat nähdä ensin toimivaa koodia. Nämä komennot luovat testituotteen ja hakevat sen tiedot. Korvaa MYAPIKEY omalla API-avaimellasi (katso API-avain).
Luo testituote:
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"}]}'
(jos suoritat komennon toisen kerran, saat virheen, koska tuote on jo olemassa)
Hae nyt luomasi tuotteen tiedot:
curl -X POST 'https://pricezag.com/api/v3/MYAPIKEY' -d '{"actions":[{"a":"productGet","code":"000-SOME-TEST-PRODUCT"}]}' | python -mjson.tool
(poista | python -mjson.tool, jos kyseinen JSON-vastauksen muotoilutyökalu ei ole käytettävissä päätteessäsi)

Yleiskatsaus

Mitä voit tehdä PriceZagin API:lla?

PriceZagin JSON API:n avulla skriptisi ja järjestelmäsi voivat käyttää suoraan seuraamiamme kilpailijoiden hinta- ja varastotietoja. Voit hakea tuotetietoja, hallita tuotteita ja tuoteryhmiä, laskea hintoja uudelleenhinnoittelusääntöjen perusteella, määrittää hälytyksiä ja ladata mukautettuja taulukkoraportteja. API toimii minkä tahansa verkkokauppa-alustan tai ohjelmointikielen kanssa, joka pystyy lähettämään HTTPS-pyyntöjä ja käsittelemään JSON-tietoja.

Voit myös pyytää tekoälyavustajaasi kirjoittamaan skriptit puolestasi. Anna sille tämän dokumentaation osoite (https://pricezag.com/integrations/api), kerro mitä haluat automatisoida ja mitä ohjelmointikieltä tai verkkokauppa-alustaa käytät. Pidä API-avaimesi salassa äläkä liitä sitä tekoälykeskusteluun.

PriceZag huolehtii seurannasta omassa palvelussaan, joten API:n käyttö on vapaaehtoista. Se on hyödyllinen, kun haluat yhdistää omat järjestelmäsi seurantatietoihin. Shopify ja WooCommerce -alustoille on myös suorat integraatiot.

API-avain ja käyttöoikeudet

Avaa PriceZag-tililläsi Automation > API. Näytä nykyinen avain napsauttamalla Reveal the current API key tai vaihda se napsauttamalla Change the API key. Molemmat toiminnot edellyttävät tilin salasanaa. Käyttäjällä on oltava API-avaimen katseluun tai luomiseen tarvittavat käyttöoikeudet. Jos oikeudet puuttuvat, ota yhteyttä tilin ylläpitäjään.

Pidä API-avain salassa. Avaimella voi tehdä laajoja muutoksia tilin tietoihin, myös poistaa niitä. Älä lisää sitä julkisiin koodivarastoihin, selaimessa suoritettavaan koodiin tai tekoälykeskusteluihin. Jos tarvitset apua integraation kehittämisessä, luo avustajalle PriceZag-käyttäjä tarvittavilla oikeuksilla ja vaihda API-avain tarvittaessa.

API:n käyttöoikeudet riippuvat tilauksestasi. Täydellä API-käyttöoikeudella skriptisi voivat käsitellä kaikkia tuotteitasi. Muussa tapauksessa API voi käyttää vain viitekoodin mukaan aakkosnumeerisesti järjestettyä 10 ensimmäistä tuotetta. Jos sinulla on esimerkiksi 1 000 tuotetta, joiden koodit ovat SKU0001 – SKU1000, API voi käyttää vain tuotteita SKU0001 – SKU0010. 14 päivän maksuton kokeilujakso sisältää täyden API-käyttöoikeuden. Voit myös ottaa täyden API-käyttöoikeuden käyttöön tilauksesi lisäominaisuutena.

API-toimintaloki ja viimeisin pyyntö

Tilisi Automation > API -sivulla näkyy viimeisimmän API-pyynnön aika sekä API Activity Log -painike. Tarkista nämä tiedot, jos skripti ei toimi: näet, ovatko pyynnöt saavuttaneet PriceZagin, ja voit selvittää epäonnistuneita kutsuja tai odottamattomia muutoksia.

API:n kautta tehdyt muutokset näkyvät myös tilisi History of Edits -historiassa käyttäjänimellä API. Tuotteen muutoshistoriassa voi näkyä esimerkiksi Price edited by API sen sijaan, että siinä lukisi Price edited by JOHN. PriceZag tukee useita käyttäjiä samalla tilillä, joten automaattiset muutokset voidaan erottaa tiimin jäsenten tekemistä muutoksista.

Pyyntöosoite ja -menetelmät

Kaikki API-pyynnöt käyttävät samaa HTTPS-osoitetta. Lähetä POST -pyyntö tähän osoitteeseen ja korvaa MYAPIKEY omalla avaimellasi:

https://pricezag.com/api/v3/MYAPIKEY

API:n suorittamat toiminnot ("actions") ja niiden parametrit kuuluvat JSON-pyynnön runkoon, eivät URL-osoitteeseen.
Lähetä POST-pyynnön rungossa JSON-olio, joka sisältää yhden tai useamman toiminnon. URL pysyy samana, haetpa tuotteita, päivität hintoja tai lataat taulukon.

Etkö voi lähettää POST-pyyntöä?
Viimeisenä vaihtoehtona voit lähettää GET-pyynnön, jossa JSON-runko on Base64-koodattu ?data= -URL-parametriin. URL-osoitteilla on pituusrajoituksia, joten POST on selvästi suositeltavampi.

Miten toiminnot suoritetaan

Toiminnolla tarkoitetaan yksittäistä toimintoa tililläsi, kuten tuotekentän muokkaamista, uudelleenhinnoittelusäännön muuttamista tai tuotteen kilpailijahintojen hakemista.
API ja käyttöliittymä (UI) käyttävät samoja taustatoimintoja, joten lähes kaikki käyttöliittymässä tehtävät toiminnot voidaan suorittaa myös API:n kautta.
API-pyynnön JSON-tiedot sisältävät taulukon kaikista suoritettavista toiminnoista. Toimintoja on vähintään 1 ja enintään 1 000 pyyntöä kohti. Voit esimerkiksi nimetä uudelleen kolme tuotetta ja luoda yhden tuoteryhmän samalla neljän toiminnon pyynnöllä. Voit myös hakea 1 000 tuotteen tiedot yhdellä pyynnöllä, jossa on 1 000 "productGet"-toimintoa.
Toiminnot suoritetaan taulukon järjestyksessä. Jos luot ensin uudelleenhinnoittelusäännön ja liität siihen sitten tuotteita, määritä toiminnot tässä järjestyksessä, jotta sääntö on olemassa tuotteita muokattaessa.
Vieritä alaspäin nähdäksesi kaikki käytettävissä olevat toiminnot.

JSON-pyyntöolio

Skriptejä ja tekoälyn tuottamaa koodia varten: Alla olevissa esimerkeissä on // kommentteja ja ... paikkamerkkejä kenttien selittämiseen. Ne ovat havainnollistavia esimerkkejä eivätkä sellaisinaan kelvollista JSONia. Poista kommentit ja korvaa paikkamerkit ennen pyynnön lähettämistä. Yllä olevat kaksi curl -esimerkkiä sisältävät kelvolliset JSON-rungot.

Koko POST-pyynnön tietosisällön tulee olla yksi JSON-olio {...}, joka sisältää suoritettavien toimintojen taulukon.
{
	"stopOnFailure"	: 1,  // (valinnainen) Oletusarvoisesti taustajärjestelmä jatkaa seuraavaan toimintoon virheen jälkeen. Arvo 1 pysäyttää suorituksen.

	// Kaikkien toimintojen taulukko:
	"actions" : [
		// Toiminto 1:
		{
			"a"	: "someActionName",  // Toiminnon nimi annetaan aina kunkin toiminto-olion "a"-kentässä.
			"xx"	: "some parameter this action needs"	// Kaikki muu kuin "a" ovat toiminnon tarvitsemia parametreja.
		},
		// Toiminto 2:
		{
			"a"	: "anotherActionName",
			"abc"	: "some parameter this action needs",
			"xyz"	: {"x":"some object this action needs", "y":5, "z":6}
		},
		// Toiminto 3:
		{
			"a"	: "aThirdAction",
			"xyz"	: ["some array this action needs", "..."]
		}
	]
}

Palvelimen vastaus ja HTTP-tilakoodit

Jos pyynnön muoto on virheellinen tai tilisi on esimerkiksi poistettu käytöstä, palvelin palauttaa text/plain-vastauksen, joka sisältää virheilmoituksen.
Jos pyyntö on kelvollinen, saat tavallisesti JSON -olion vastauksena, lukuun ottamatta erikseen merkittyjä poikkeuksia (esimerkiksi taulukon latausta). Tunnistat tämän Content-Type: application/json -vastausotsakkeesta.
Palvelimemme HTTP-tilakoodit:
► 200 kun kaikki toiminnot onnistuivat (myös neutraali tulos ok=0 katsotaan onnistuneeksi).
► 406 kun osa toiminnoista onnistui ja osa epäonnistui.
► 422 kun kaikki toiminnot epäonnistuivat, mutta eivät alla mainituista syistä.
► 400 kun vastaanotettua JSON-oliota ei voitu jäsentää.
► 403 kun tunnistautuminen epäonnistui (yleensä virheellisen API-avaimen vuoksi).
Voit käyttää näitä tilakoodeja suoraan skripteissäsi. Jos tarvitset lisätietoja, palautettu JSON-olio sisältää tarkemmat tulokset:
{
	"ok"		: 15,  // Onnistuneesti suoritettujen toimintojen määrä (toiminnon ok>0).
	"errors"	: 0,  // Virheen palauttaneiden toimintojen määrä (toiminnon ok<0).
	"actionsCount"	: 20,  // Alun perin pyydettyjen toimintojen määrä ("actions"-taulukon pituus).
	// HUOMAUTUS: tästä nähdään, että 5 toimintoa palautti ok=0: ne eivät epäonnistuneet mutta eivät muuttaneet mitään.
	
	// Alun perin pyydettyjen toimintojen taulukko samassa järjestyksessä:
	"actions" : [
		...
		// Kunkin toiminnon vastausolio:
		{
			"a"	: "someActionName",
			"ok"	: 4,		// Tulos: >0 = onnistui, 0 = ei muutosta, <0 = virhe.
						// Arvo 0 voi tulla esimerkiksi silloin, kun asetat tuotteen hinnaksi sen nykyisen hinnan.
						// Arvo -1 voi tulla, jos tuotetta ei ole olemassa.
						// Arvon >0 merkitys riippuu toiminnosta; usein se on muuttuneiden kenttien tai kohteiden määrä.
			"error"	: "...",  // Virheilmoitus, jos ok < 0.
						// Virheilmoituksemme ovat yksityiskohtaisia. Tallenna ne lokiin,
						// sillä niistä saat tarvittavat tiedot ongelman selvittämiseen.
			...	// Muut toiminnon palauttamat tiedot.
		},
		...
	]
}

Esimerkkejä?

Esimerkit selventävät usein asiaa. Sivun lopusta löydät lisää esimerkkejä.

Pyyntötiheys ja ajastus

Palomuurimme suojaa palvelua (ja siten myös tietojasi) hyökkäyksiltä ja suurilta pyyntömääriltä. Jos palomuuri estää palvelimen, sivusto voi vaikuttaa olevan alhaalla (ei yhteyttä, vastausta tai ping-vastausta).
Jotta oikeat API-pyyntösi eivät estyisi:
► Älä käytä väärää API-avainta: palomuuri sietää vain vähän virheellisiä yrityksiä (kuten myös sivuston väärien salasanojen kohdalla).
► Yhdistä monta toimintoa samaan JSON-pyyntöön (enintään 1 000). Jos luot 1 000 tuotetta, lähetä yksi pyyntö, älä tuhatta.
► Jos joudut lähettämään paljon pyyntöjä, pidä niiden välissä 500 ms:n tauko ja käytä samaa HTTPS-yhteyttä uudelleen. Uuden yhteyden avaaminen jokaista pyyntöä varten on yleinen virhe. Suuri pyyntömäärä on yleensä perusteltu vain silloin, kun päivität kerralla satojatuhansia tuotteita, 1 000 toimintoa pyyntöä kohti.
Kiinteää pyyntöjen nopeusrajaa ei ole: palomuuri tekee päätökset kymmenien tekijöiden perusteella. Käytä siis kohtuullista pyyntötahtia.
 
Ajastetut pyynnöt:
Jos suoritat pyyntöjä säännöllisesti, lisää satunnainen viive, jotta ne eivät aina lähde tasaminuutin kohdalla (sekunti 0). Monet asiakkaat lähettävät pyyntöjä samaan aikaan; porrastaminen nopeuttaa vastaamista ja vähentää aikakatkaisujen riskiä ruuhkatilanteissa.

Kaikki käytettävissä olevat API-toiminnot

Alla on jokaisen toiminnon parametrit sekä pyyntö- ja vastausesimerkit. Vasemmanpuoleisesta navigoinnista pääset suoraan haluamaasi toimintoon.

Tuotteet

ToimintoTarkoitus
productCreateLuo uusi tuote
productEditMuokkaa olemassa olevaa tuotetta
productCompetitorsMuokkaa tuotteen kilpailijoiden URL-osoitteita (korvaamatta kaikkia)
productCategoriesMuokkaa yhden tai usean tuotteen tuoteryhmiä (korvaamatta kaikkia)
productRepricingLiitä useita tuotteita uudelleenhinnoittelusääntöön
productDeletePoista yksi tai useampi tuote
productGetHae tuotteen tiedot (mukaan lukien kilpailijoiden tiedot)
productGetAllHae kaikkien tuotteiden tiedot (mukaan lukien kilpailijoiden tiedot)

Tuoteryhmät

ToimintoTarkoitus
categoryCreateLuo uusi tuoteryhmä
categoryEditMuokkaa olemassa olevaa tuoteryhmää
categoryDeletePoista yksi tai useampi tuoteryhmä
categoryCopyKopioi tai siirrä tuotteita tuoteryhmien välillä
categoryGetHae tuoteryhmän tiedot
categoryGetAllHae kaikkien tuoteryhmien tiedot

Hälytykset

ToimintoTarkoitus
alertRecipientCreateLuo uusi hälytysten vastaanottaja
alertRecipientEditMuokkaa vastaanottajaa ja/tai hänen hälytyssääntöjään
alertRecipientDeletePoista hälytysten vastaanottaja
alertRuleEditMuokkaa vastaanottajan olemassa olevaa hälytyssääntöä
alertRuleCreate ?Tällaista toimintoa ei ole. Käytä sen sijaan alertRecipientEdit-toimintoa ja "rulesAdd"-taulukkoa.
alertRuleDelete ?Tällaista toimintoa ei ole. Käytä sen sijaan alertRecipientEdit-toimintoa ja "rulesRemove"-taulukkoa.
alertGetAllHae kaikki hälytysten vastaanottajat ja heidän sääntönsä

Uudelleenhinnoittelusäännöt

ToimintoTarkoitus
repricingCreateLuo uusi uudelleenhinnoittelusääntö
repricingEditMuokkaa olemassa olevaa uudelleenhinnoittelusääntöä
repricingDeletePoista uudelleenhinnoittelusääntö
repricingGetAllHae kaikki uudelleenhinnoittelusäännöt

Taulukot

ToimintoTarkoitus
spreadsheetDownloadLataa taulukko
spreadsheetPresetEditNimeä taulukkoesiasetus uudelleen tai poista se
spreadsheetAutoCreateLuo uusi automaattinen taulukkovienti
spreadsheetAutoEditMuokkaa automaattista taulukkovientiä

Kilpailijat ja muut toiminnot

ToimintoTarkoitus
competitorDeleteAllPoista kilpailija kaikista tuotteista tai tuoteryhmistä
mathEditMääritä tai muokkaa kilpailijaverkkotunnuksen hintalaskentaa

Tuotteet

productCreate – Luo uusi tuote

Tämä on sama toiminto, jota käyttöliittymä käyttää New Product -sivulla.
{ "actions" : [
	...
	{
		"a"		: "productCreate",
		"code"		: "UNIQUE-REF-CODE",  // 1–80 merkkiä ([a-z\d][a-z\d_-]{0,78}[a-z\d]); kirjainkoolla ei ole merkitystä (muutetaan isoiksi kirjaimiksi).
		"name"		: "The Product Name",  // 1–200 merkkiä.
		"price"		: 1234.90,  // Huomioi pilkut ja pisteet: ei tuhaterotinta, desimaalierotin on piste.
		"currency"	: "USD",
		"cost"		: 1234.90,  // (valinnainen)
		"costCurrency"	: "USD",  // Pakollinen, jos cost on annettu.
		"repricingRule"	: "The Rule Name",  // (valinnainen) Liitetty uudelleenhinnoittelusääntö (tyhjä = pois käytöstä, puuttuva sääntö = virhe).
		"myWebsite"	: "https://...",  // (valinnainen) URL tai shopify:productId:variantId tai woocommerce:productId(:variationId).
		"competitors"	: ["https://...", "https://..."],  // (valinnainen)
		"categories"	: ["The Category 1", "The Category 2"],  // (valinnainen) Tuotteen tuoteryhmät (puuttuvat luodaan).
		"comments"	: "Some comments\nAnd another line",  // (valinnainen) Enintään 1 000 UTF-8-merkkiä.
		"custom_someFieldName1"	: "Value of custom field",		// (valinnainen)
		"custom_someFieldName2"	: "Value of other\nCustom\tField",  // (valinnainen)
		// Mukautetut kentät ovat omaan sisäiseen käyttöön. Niitä voi käyttää tilin eri toiminnoissa, esimerkiksi vietyjen taulukoiden sarakkeina.
		// Tuotteella voi olla enintään 20 mukautettua kenttää. Nimen enimmäispituus on 40 kirjainta, numeroa tai alaviivaa (kirjainkoko merkitsee), ilman "custom_"-etuliitettä, jonka kanssa enintään 47 merkkiä.
		// Kentän arvo voi olla enintään 500 tavua (ei välttämättä 500 merkkiä). Voit asettaa numeron, esimerkiksi custom_varname:123,
		// mutta API palauttaa arvon aina merkkijonona (custom_varname:"123"). Muunna tyyppi tarvittaessa.
		// Poista mukautettu kenttä asettamalla sen arvoksi "". Tämä tehdään productEdit-toiminnolla, ei productCreate-toiminnolla.
	},
	...
] }
VASTAUS:
{
	...
	"actions" : [
		...
		{
			"a"	: "productCreate",
			"ok"	: 1,
			"code"	: "REF-CODE",  // Tietokantaan tallennettu lopullinen koodi (esimerkiksi erikoismerkkejä on voitu muuttaa).
		},
		...
	]
}

productEdit – Muokkaa olemassa olevaa tuotetta

Tämä on sama toiminto, jota käyttöliittymä käyttää tuotteen kenttää muokattaessa. Käyttöliittymä lähettää jokaisen kenttämuutoksen erikseen, mutta API:n avulla voit muuttaa esimerkiksi nimen ja hinnan yhdellä kutsulla.
{ "actions" : [
	...
	{
		"a"		: "productEdit",
		"code"		: "REF-CODE",
		...		// Käyttää samoja parametreja kuin productCreate; kaikki ovat valinnaisia.
		"newCode"	: "REF-CODE-RENAMED",  // (valinnainen)
		"competitors"	: ["https://...", "https://..."],  // Jos annetaan, KORVAA kaikki nykyiset kilpailija-URL-osoitteet.
		// Jos haluat vain lisätä tai poistaa kilpailija-URL-osoitteita, käytä sen sijaan productCompetitors-toimintoa.
		"categories"	: ["The Category 1", "The Category 2"],  // Jos annetaan, KORVAA nykyiset tuoteryhmät. Käytä vaihtoehtoisesti productCategories- tai categoryEdit-toimintoa.
		"custom_someFieldName"	: "New value or empty to delete that custom field",
		// Muista, että mukautettuja kenttiä saa olla enintään 20 tuotetta kohti. Jos haluat lisätä uusia, saatat joutua poistamaan vanhoja asettamalla niiden arvoksi "".
	},
	...
] }
VASTAUS:
{
	...
	"actions" : [
		...
		{
			"a"	: "productEdit",
			"ok"	: 3,  // Tehtyjen muutosten määrä (esim. oma hinta + 2 kilpailija-URL-osoitetta = 3).
			"code"	: "REF-CODE",  // Tietokannan lopullinen (uusi) koodi (esimerkiksi erikoismerkkien muuntamisen jälkeen).
		},
		...
	]
}

productCompetitors – Muokkaa tuotteen kilpailija-URL-osoitteita

Muokkaa tuotteen kilpailija-URL-osoitteita korvaamatta niitä kaikkia (toisin kuin productEdit -toiminnolla).
{ "actions" : [
	...
	{
		"a"			: "productCompetitors",
		"code"			: "REF-CODE",
		"competitorsAdd"	: ["https://...", "https://..."],  // (valinnainen) Lisää nämä kilpailija-URL-osoitteet nykyisiin.
		"competitorsRemove"	: ["https://...", "example.com/a0ff80...5f00", "example.net"],  // (valinnainen) Poista nämä kilpailijat. Tunniste voi olla:
		// > URL (mukaan lukien mahdollinen hashtag-muokkain). Tunnisteet ovat valinnaisia.
		// > Kilpailijan "ref" (muiden toimintojen palauttama juuriverkkotunnus ja 32-merkkinen MD5-tunniste).
		// > Juuriverkkotunnus tai koko isäntänimi; tällöin kaikki kyseisen verkkotunnuksen kilpailija-URL-osoitteet poistetaan tuotteesta.
		// HUOMAUTUS: "competitorsAdd" ja "competitorsRemove" voivat olla myös merkkijonoja yksialkioisen taulukon sijasta.
		// Poisto suoritetaan ennen lisäystä, joten voit poistaa kokonaisen verkkotunnuksen ja lisätä sen jälkeen yhden sen URL-osoitteista.
	},
	...
] }
VASTAUS:
{
	...
	"actions" : [
		...
		{
			"a"			: "productCompetitors",
			"ok"			: 3,  // Muokattujen kilpailija-URL-osoitteiden määrä.
			"competitorsAdded"	: 2,  // Tuotteeseen lisättyjen kilpailija-URL-osoitteiden määrä.
			"competitorsRemoved"	: 1,  // Tuotteesta poistettujen kilpailija-URL-osoitteiden määrä.
			// VIRHEET:
			// > Jo olemassa olevan URL-osoitteen lisääminen EI tuota virhettä (ok = 0).
			// > Puuttuvan kokonaisen URL-osoitteen tai "ref"-tunnisteen poistaminen tuottaa virheen (ok = -1).
			// > Puuttuvan verkkotunnuksen kaikkien URL-osoitteiden poistaminen EI tuota virhettä (ok = 0).
		},
		...
	]
}

productCategories – Muokkaa yhden tai usean tuotteen tuoteryhmiä

Muokkaa tuotteiden tuoteryhmiä korvaamatta niitä kaikkia (toisin kuin productEdit-toiminnolla).
Tämä on sama toiminto kuin käyttöliittymän All Products-sivulla: valitse tuotteet ja napsauta Selected Products > Edit Categories. Löydät sieltä myös tarkemmat ohjeet.
Tutustu myös categoryEdit -toimintoon ja valitse tarpeisiisi sopivampi vaihtoehto.
{ "actions" : [
	...
	{
		"a"			: "productCategories",
		"code"			: "REF-CODE",  // Kirjainkoolla ei ole merkitystä (merkkijono), TAI:
		"code"			: ["REF-CODE-1", "REF-CODE-2"],  // Voi olla myös taulukko, jossa on useita tuotteita (enintään 100 000).
		"categoriesRemove"	: ["The Category 1", "The Category 2"],  // (valinnainen) Poista ensin näistä tuoteryhmistä.
		"categoriesRemoveAll"	: 1,  // (valinnainen) Poista ensin kaikista tuoteryhmistä (kuten productEdit).
		"deleteEmptyCategories"	: 1,  // Tämä poistaa jokaisen tuoteryhmän, joka jää tyhjäksi
		// tuotteiden poistamisen seurauksena.
		"categoriesAdd"		: ["The Category 1", "The Category 2"],  // (valinnainen) Lisää sitten näihin tuoteryhmiin (puuttuvat luodaan).
		"categoriesAddClear"	: 1,  // (valinnainen) Tyhjennä ensin kohdetuoteryhmät, joihin tuotteet lisätään.
	},
	...
] }
VASTAUS:
{
	...
	"actions" : [
		...
		{
			"a"	: "productCategories",
			"ok"	: 3,  // Muokattujen tuotteiden määrä.
		},
		...
	]
}

productRepricing – Liitä useita tuotteita uudelleenhinnoittelusääntöön

Voit liittää enintään 100 000 tuotetta yhteen uudelleenhinnoittelusääntöön.
Tämä tekee saman kuin productEdit -toiminto. Koska yhdessä pyynnössä voi olla enintään 1 000 toimintoa, 50 000 tuotteen liittämiseen tarvittaisiin 50 pyyntöä ja suoritus olisi paljon hitaampi.
Jos muokkaat vain muutamaa tuotetta, käytä mieluummin productEdit -toimintoa.
{ "actions" : [
	...
	{
		"a"			: "productRepricing",
		"repricingRule"		: "The Rule Name",  // Kirjainkoolla ei ole merkitystä; "" (olemassa oleva tyhjä merkkijono) tarkoittaa, ettei sääntöä ole (uudelleenhinnoittelu pois käytöstä).
		"products"		: ["REF-CODE-1", "REF-CODE-2"],  // Kirjainkoolla ei ole merkitystä (enintään 100 000).
	},
	...
] }
VASTAUS:
{
	...
	"actions" : [
		...
		{
			"a"		: "productRepricing",
			"ok"		: 10,  // Muokattujen tuotteiden määrä.
			// Jos kaikki tuotteet käyttivät jo tätä sääntöä, tulos on ok=0.
		},
		...
	]
}

productDelete – Poista yksi tai useampi tuote

VAROITUS: tuote ja sen kilpailija-URL-osoitteet poistetaan tililtäsi välittömästi, eikä niitä voi palauttaa.
Voit tehdä saman käyttöliittymän All Products -sivulla: valitse tuotteet ja sitten Selected Products > Delete.
{ "actions" : [
	...
	{
		"a"	: "productDelete",
		"code"	: "REF-CODE",  // Kirjainkoolla ei ole merkitystä (merkkijono), TAI:
		"code"	: ["REF-CODE-1", "REF-CODE-2"],  // Voi olla myös taulukko usean tuotteen poistamiseksi (enintään 100 000).
		"deleteEmptyCategories"	: 1,  // Tämä poistaa jokaisen tuoteryhmän, joka jää tyhjäksi
		// Tällöin poistetaan myös tuoteryhmät, jotka jäävät tyhjiksi näiden tuotteiden poistamisen vuoksi.
	},
	...
] }
VASTAUS:
{
	...
	"actions" : [
		...
		{
			"a"	: "productDelete",
			"ok"	: 2,  // Onnistuneesti poistettujen tuotteiden määrä.
		},
		...
	]
}

productGet – Hae tuotteen tiedot

{ "actions" : [
	...
	{
		"a"			: "productGet",
		"code"			: "REF-CODE",  // Kirjainkoolla ei ole merkitystä.
		"currency"		: "EUR",  // (valinnainen) Muunna kaikki summat tähän valuuttaan tuotteen hintavaluutan sijasta.
		"withStats"		: 1,  // (valinnainen) Palauta tilasto-olio.
		"noCompetitors"		: 1,  // (valinnainen) Älä palauta kilpailijataulukkoa (pienempi tietomäärä).
		"noComments"		: 1,  // (valinnainen) Älä palauta kommentteja (...).
		"withScreenshots"	: 1,  // (valinnainen) Palauta kunkin kilpailijan uusimman kuvakaappauksen URL.
		"sickMax"		: 2,  // (valinnainen, oletus 1) 0–3; palauta vain kilpailija-URL-osoitteet, joiden "sickness"-taso on enintään N.
	},
	...
] }
Palauttaa kaikki tuotteen tiedot, myös kilpailijoiden tämänhetkiset hinnat ja varastotilanteen.
VASTAUS:
{
	...
	"actions" : [
		...
		{
			"a"			: "productGet",
			"ok"			: 1,
			"code"			: "REF-CODE",
			"name"			: "The Product Name",
			"price"			: 1234.90,  // Oma hintasi, aina alkuperäisessä valuutassa.
			"currency"		: "USD",  // "price"-kentän alkuperäinen valuutta.
			"convCurrency"		: "EUR",  // Valuutta, jossa muunnetut summat näytetään (annettu "currency" tai tuotteen hintavaluutta).
			"priceConv"		: 1234.90,  // Oma hintasi "convCurrency"-valuuttaan muunnettuna tai sama kuin "price".
			"cost"			: 1234.90,
			"costCurrency"		: "USD",
			"costPriceConv"		: 1234.90,  // Oma hankintahintasi muunnettuna "currency"-valuuttaan.
			"costConv"		: 1234.90,  // Oma hankintahintasi "convCurrency"-valuuttaan muunnettuna.
			"margin"		: 10.5,  // Prosenttiosuus (voi olla negatiivinen).
			"repricingRule"		: "The Rule Name",  // Nämä 3 uudelleenhinnoittelumuuttujaa PUUTTUVAT, jos uudelleenhinnoittelu ei ole käytössä.
			"reprice"		: 1234.90,  // Nykyinen uudelleenhinnoittelun summa, joka on laskettu repricingRule-säännön perusteella.
			"repriceCurrency"	: "USD",  // Sama kuin "convCurrency", mukana selkeyden vuoksi.
			"myWebsite"		: "https://...",
			"created"		: 1234567890,  // Tuotteen luontiaika epoch-muodossa.
			"createdBy"		: "SOMEUSER",  // Käyttäjänimi tai "API".
			"edited"		: 1234567890,  // Viimeisimmän muokkauksen epoch-aika (jos muokattu).
			"editedBy"		: "SOMEUSER",  // Käyttäjänimi tai "API".
			"comments"		: "Some comments\nAnd another line",
			"commentsLast"		: 1234567890,  // Kommenttien viimeisimmän muokkauksen epoch-aika (jos muokattu).
			"commentsLastBy"	: "SOMEUSER",  // Käyttäjänimi tai "API".
			"categories"		: ["The Category 1", "The Category 2"],
			"stats"		: {
				// Tilastoihin lasketaan vain kilpailija-URL-osoitteet, joiden sickness-taso on 0 tai 1, riippumatta "sickMax"-arvosta.
				// Kaikki summat ovat "convCurrency"-valuutassa, eli antamassasi "currency"-valuutassa tai tuotteen alkuperäisessä "currency"-valuutassa.
				// VAROITUS: jos summaa ei ole saatavilla (esim. compIn*, mutta kenelläkään ei ole varastoa), arvo on 0.
				"rank"			: 1.23,  // Hintasijoituksesi (1 = kukaan ei ole sinua halvempi).
				"rankIn"		: 1.23,  // Sijoituksesi niiden kilpailijoiden joukossa, joilla tuotetta on varastossa.
				"compCount"		: 3,  // Kelvollisen hinnan omaavien kilpailijoiden määrä.
				"compInCount"		: 3,  // Varastossa olevien kilpailijoiden määrä.
				"compOutCount"		: 3,  // Niiden kilpailijoiden määrä, joilta tuote on loppunut.
				"compAvg"		: 123.56,  // Kaikkien kilpailijoiden hintojen keskiarvo.
				"compAvgVsMe"		: 123.56,  // Oman hintasi ja kilpailijoiden keskihinnan erotus ("convCurrency"-valuutassa; negatiivinen = olet halvempi).
				"compInAvg"		: 123.56,  // Varastossa olevien kilpailijoiden keskihinta.
				"compInAvgVsMe"		: 123.56,  // Sama kuin "compAvgVsMe", mutta vain varastossa oleville kilpailijoille.
				"compLowest"		: 123.56,  // Alhaisin kilpailijahinta.
				"compLowestVsMe"	: 123.56,  // Sama kuin "compAvgVsMe", mutta keskiarvon sijaan alhaisimmalle hinnalle.
				"compInLowest"		: 123.56,  // Halvin kilpailija, jolla tuotetta on varastossa.
				"compInLowestVsMe"	: 123.56,  // Sama kuin "compInAvgVsMe", mutta ...
				"compHighest"		: 123.56,  // Korkein kilpailijahinta.
				"compHighestVsMe"	: 123.56,  // Sama kuin "compAvgVsMe", mutta ...
				"compInHighest"		: 123.56,  // Kallein kilpailija, jolla tuotetta on varastossa.
				"compInHighestVsMe"	: 123.56,  // Sama kuin "compInAvgVsMe", mutta ...
			},
			"competitors"	: [
				// Kilpailijoiden taulukko halvimmasta alkaen; jokainen kilpailija on olio:
				...
				{
					"url"		: "https://...",  // Sisältää myös mahdollisesti lisäämäsi hashtag-muokkaimen.
					"ref"		: "example.com/123abc...def",
					// URL-viitetunnus (juuriverkkotunnus ja 32-merkkinen MD5). Näin tunnistamme URL-osoitteet järjestelmässämme.
					"domain"	: "example.com",  // Kilpailijan juuriverkkotunnus.
					"price"		: 1234.90,  // Verkkosivulta viimeksi löydetty summa (asetustesi mukaisten laskutoimitusten jälkeen).
					"currency"	: "USD",  // Verkkosivulta löytynyt valuutta.
					"priceConv"	: 1234.90,  // "convCurrency"-valuuttaan muunnettu hinta.
					"stock"		: "5",  // Varastotieto (merkkijono): "A" = saatavilla, "2" = 2 kpl varastossa, "0" = loppu, "" = ei tiedossa.
					"salesWk"	: 123,  // Arvioitu viikoittainen myynti (jos saatavilla; selitys tuotesivun kysymysmerkki-ikonissa).
					"screenshotURL"	: "https://pricezag.com/.../screenshot.png",
					// Jos "withScreenshots" on käytössä, uusimman kuvakaappauksen URL (ei kirjautumista; pitkä URL on julkisesti käytettävissä).
					"confidence"	: 98,
					// Arvio siitä, kuinka varmasti valitsimme oikean hinnan prosentteina (katso tuotesivun (?) -kuvakkeen selitys).
					// Alle 70 %:n arvo (muokattavissa) merkitään palvelussa epäluotettavaksi kysymysmerkillä hinnan vieressä.
					// Tämä on riippumaton sickness-tilasta. URL voi olla ongelmallinen, vaikka löysimme oikean hinnan viimeisimmällä käynnillä,
					// tai sivustolla käyminen voi onnistua, vaikka emme ole varmoja poimitun hinnan oikeellisuudesta.
					"sick"		: 0,  // URL-osoitteen sickness-taso 0–3.
					// 0: Viimeisin sivun haku onnistui (sivu avautui ja hinta löytyi).
					// 1: Viimeisin haku epäonnistui, mutta aiempi onnistui äskettäin (tavallista, ei huolta).
					// 2: Kelvollista hintaa ei ole saatu moneen päivään.
					// 3: Kelvollista hintaa ei ole saatu moneen viikkoon.
					// HUOMAUTUS: "price" ja "priceConv" ovat mukana vain URL-osoitteilla, joiden sickness-taso on enintään 1. Tasoilla 2 ja 3 ei ole hintaa.
				},
				...
			],
			"custom"	: {
				// Nämä ovat mukautettuja kenttiäsi. Jos et tunne niiden toimintaa, avaa
				// tuotesivu käyttöliittymässä ja napsauta CUSTOM FIELDS -ruudun vieressä olevaa (?) -kuvaketta.
				// Jos mukautettuja kenttiä ei ole, koko "custom"-olio puuttuu.
				"variable_1"	: "value 1",  // Arvot palautetaan aina merkkijonoina, vaikka ne olisivat numeroita.
				"variable_2"	: "value 2",  // Tyhjää arvoa ei ole: se poistaisi muuttujan.
				...
			}
		},
		...
	]
}

productGetAll – Hae kaikkien tuotteiden tiedot

Varmista, että timeout -aikakatkaisuasetus on riittävän suuri, sillä palvelimellamme voi kulua aikaa tuotteiden ja kilpailijoiden määrän mukaan.
{ "actions" : [
	...
	{
		"a"			: "productGetAll",
		"currency"		: "EUR",  // (valinnainen) Muunna kaikki summat tähän valuuttaan kunkin tuotteen oman hintavaluutan sijasta.
		"withStats"		: 1,  // (valinnainen) Palauta tilasto-olio.
		"noCompetitors"		: 1,  // (valinnainen) Älä palauta kilpailijataulukkoa (pienempi tietomäärä).
		"noComments"		: 1,  // (valinnainen) Älä palauta kommentteja (...).
		"withScreenshots"	: 1,  // (valinnainen) Palauta kunkin kilpailijan uusimman kuvakaappauksen URL.
		"sickMax"		: 2,  // (valinnainen, oletus 1) 0–3; palauta vain kilpailija-URL-osoitteet, joiden "sickness"-taso on enintään N.
	},
	...
] }
VASTAUS:
{
	...
	"actions" : [
		...
		{
			"a"		: "productGetAll",
			"ok"		: 10,  // Tuotteiden kokonaismäärä.
			"products"	: [ // Tuoteolioiden taulukko viitekoodin mukaisessa aakkosnumeerisessa järjestyksessä:
				...
				{ ... },  // Tuoteolio kuten yllä olevassa productGet-vastauksessa.
				...
			],
		},
		...
	]
}
Myös categoryGet -toiminto voi olla hyödyllinen.

Tuoteryhmät

categoryCreate – Luo uusi tuoteryhmä

Tämä vastaa käyttöliittymän Categories -sivun New Category -painiketta. API:n kautta voit lisäksi liittää tuotteita tuoteryhmään jo luontivaiheessa.
Toisin kuin muut toiminnot, jotka hyväksyvät sekä olemassa olevat että uudet tuoteryhmät (esimerkiksi productCreate), tämä toiminto epäonnistuu, jos tuoteryhmä on jo olemassa.
{ "actions" : [
	...
	{
		"a"		: "categoryCreate",
		"name"		: "The New Category Name",
		"name"		: ["New Category 1", "New Category 2"],  // Voi olla myös taulukko.
		"products"	: ["REF-CODE-1", "REF-CODE-2"],  // (valinnainen) Lisää nämä tuotteet tuoteryhmiin niitä luotaessa.
		"comments"	: "Some comments\nAnd another line",  // (valinnainen) Enintään 1 000 UTF-8-merkkiä.
	},
	...
] }

categoryEdit – Muokkaa olemassa olevaa tuoteryhmää

Tutustu myös productCategories-toimintoon ja valitse tarpeisiisi sopivampi vaihtoehto.
{ "actions" : [
	...
	{
		"a"			: "categoryEdit",
		"name"			: "The Category Name",		// Kirjainkoolla ei ole merkitystä.
		"newName"		: "The Category Renamed",  // (valinnainen)
		"products"		: ["REF-CODE-1", "REF-CODE-2"],  // (valinnainen) Korvaa tuoteluettelo.
		"productsAdd"		: ["REF-CODE-1", "REF-CODE-2"],  // (valinnainen) Lisää nämä tuotteet tuoteryhmään.
		"productsRemove"	: ["REF-CODE-3", "REF-CODE-4"],  // (valinnainen) Poista nämä tuotteet tuoteryhmästä (EI poista tuotteita).
		"comments"		: "To overwrite the comments.",  // (valinnainen) Enintään 1 000 UTF-8-merkkiä.
	},
	...
] }
"products", "productsAdd" ja "productsRemove" muuttavat kaikki sitä, mitkä tuotteet kuuluvat tuoteryhmään, mutta eri tavoilla. Poista kaikki tuotteet tuoteryhmästä käyttämällä arvoa "products" : [].
VASTAUS:
{
	...
	"actions" : [
		...
		{
			"a"			: "categoryEdit",
			"ok"			: 5,  // Tehtyjen muutosten määrä.
			// (Nimen ja kommenttien muokkaus lasketaan kumpikin yhdeksi muutokseksi, samoin jokainen lisätty tai poistettu tuote.)
			"name"			: "The Category Name",  // Uusi nimi, jos muutettu; muuten aiempi nimi.
			"productsCount"		: 30,  // Tuoteryhmän uusi tuotemäärä (vaikka ei olisi muuttunut).
			"productsAdded"		: 2,  // Tuoteryhmään lisättyjen tuotteiden määrä.
			"productsRemoved"	: 2,  // Tuoteryhmästä poistettujen tuotteiden määrä.
		},
		...
	]
}

categoryDelete – Poista yksi tai useampi tuoteryhmä

Voit tehdä saman käyttöliittymän Categories -sivulla: valitse tuoteryhmät ja sitten Selected Categories > Delete.
{ "actions" : [
	...
	{
		"a"			: "categoryDelete",
		"name"			: "The Category Name",  // Kirjainkoolla ei ole merkitystä (merkkijono), TAI:
		"name"			: ["Category 1", "Category 2"],  // Voi olla myös taulukko useiden tuoteryhmien poistamiseen (enintään 1 000).
		"deleteProducts"	: 1,
		// Oletusarvoisesti tuoteryhmä poistetaan, mutta tuotteet säilyvät,
		// mutta deleteProducts poistaa kaikki tuoteryhmän tuotteet ilman vahvistusta,
		// ja samalla niiden kilpailija-URL-osoitteet poistuvat pysyvästi ilman palautusmahdollisuutta!
	},
	...
] }
VASTAUS:
{
	...
	"actions" : [
		...
		{
			"a"			: "categoryDelete",
			"ok"			: 2,  // Poistettujen tuoteryhmien määrä.
			"productsCount"		: 123,  // Näihin tuoteryhmiin kuuluvien tuotteiden määrä.
			"productsDeleted"	: 123,  // "deleteProducts"-asetuksen seurauksena poistettujen tuotteiden määrä.
			// HUOMAUTUS: useampaan annettuun tuoteryhmään kuuluva tuote lasketaan vain kerran.
		},
		...
	]
}

categoryCopy – Kopioi tai siirrä tuotteita tuoteryhmien välillä

Kopioi tai siirrä tuotteita valituista lähdetuoteryhmistä uusiin tai olemassa oleviin kohdetuoteryhmiin. Voit myös YHDISTÄÄ tuoteryhmiä (katso esimerkit sivun lopussa).
Tämä toiminto ei poista tuotteita, vaan muuttaa vain niiden tuoteryhmäjäsenyyksiä.
Voit tehdä saman käyttöliittymän Categories -sivulla: valitse tuoteryhmät ja sitten Selected Categories > Copy & More. Sieltä löydät tarkemmat ohjeet.
{ "actions" : [
	...
	{
		"a"			: "categoryCopy",
		"categoriesFrom"	: ["Category 1", "Category 2"],  // Valitse näiden lähdetuoteryhmien tuotteet.
		"removeMode"		: "cat",  // (valinnainen) Poista vastaavat tuotteet annetuista "categoriesFrom"-tuoteryhmistä.
		"removeMode"		: "all",  // (valinnainen) Poista vastaavat tuotteet kaikista tuoteryhmistään.
		// Jos removeMode puuttuu, tuotteet säilyvät "categoriesFrom"-tuoteryhmissä ja ne lisätään "categoriesTo"-tuoteryhmiin (kopiointi, ei siirto).
		"deleteMode"		: "cat",  // (valinnainen) Poista annetut "categoriesFrom"-tuoteryhmät kopioinnin jälkeen.
		"deleteMode"		: "all",  // (valinnainen) Poista kaikki tuoteryhmät, joihin nämä tuotteet kuuluvat.
		// Jos deleteMode puuttuu, "categoriesFrom"-tuoteryhmät jäävät olemaan, vaikka tuotteet olisi poistettu niistä removeMode-asetuksella.
		"categoriesTo"		: ["Another Category 1", "Another Category 2"],
		// Lisää valitut tuotteet näihin kohdetuoteryhmiin (puuttuvat luodaan).
		"categoriesToClear"	: 1,  // (valinnainen) Tyhjennä ensin kohdetuoteryhmät, joihin tuotteet lisätään.
	},
	...
] }
VASTAUS:
{
	...
	"actions" : [
		...
		{
			"a"			: "categoryCopy",
			"ok"			: 3,  // Muutettujen tuoteryhmien määrä (sekä lähde- että kohdetuoteryhmät).
			// "ok" on categoriesModified + categoriesCreated + categoriesDeleted.
			"categoriesModified"	: 2,  // Muokattujen olemassa olevien tuoteryhmien määrä (lähde- ja kohderyhmät).
			"categoriesCreated"	: 1,  // Luotujen uusien tuoteryhmien määrä.
			"categoriesDeleted"	: 0,  // "deleteMode"-asetuksen seurauksena poistettujen tuoteryhmien määrä.
			"productsCount"		: 123,  // Annettuihin "categoriesFrom"-tuoteryhmiin kuuluvien tuotteiden määrä.
			// HUOMAUTUS: useampaan "categoriesFrom"-tuoteryhmään kuuluva tuote lasketaan vain kerran.
		},
		...
	]
}

categoryGet – Hae tuoteryhmän tiedot

{ "actions" : [
	...
	{
		"a"		: "categoryGet",
		"name"		: "The Category Name",  // Kirjainkoolla ei ole merkitystä.
		"currency"	: "EUR",  // (PAKOLLINEN, jos withStats tai withProducts) Tilastojen valuutta.
		"withStats"	: 1,  // Palauta myös tilastot (hitaampaa).
		"withProducts"	: 1,  // Palauta myös tuoteryhmän tuotteet (tietomäärä voi olla suuri).
		"noCompetitors"	: 1,  // Jos withProducts, älä palauta kilpailijataulukkoa (pienempi tietomäärä).
		"noComments"	: 1,  // Jos withProducts, älä palauta tuotteiden kommentteja (tuoteryhmän kommentit palautetaan silti).
	},
	...
] }
VASTAUS:
{
	...
	"actions" : [
		...
		{
			"a"			: "categoryGet",
			"ok"			: 1,
			"name"			: "The Category Name",
			"created"		: 1234567890,  // Epoch-aika.
			"createdBy"		: "SOMEUSER",  // Käyttäjänimi tai "API".
			"comments"		: "Comments of this category",
			"commentsLast"		: 1234567890,  // Kommenttien viimeisimmän muokkauksen epoch-aika (jos muokattu).
			"commentsLastBy"	: "SOMEUSER",  // Käyttäjänimi tai "API".
			"productsCount"		: 10,  // Tuoteryhmän tuotteiden määrä.
			"stats"		: {
				// Nämä tilastot näkyvät käyttöliittymässä tuoteryhmäsivulla ja tuoteryhmäluettelon sarakkeissa.
				// Saat lisätietoja lisäämällä tilastot luettelon sarakkeiksi ja napsauttamalla (?) -kuvaketta.
				// Kaikki summat ovat pyynnössä annetussa "currency"-valuutassa.
				// VAROITUS: jos summaa ei ole saatavilla (esim. compIn*, mutta kenelläkään ei ole varastoa), arvo on 0.
				"priceAvg"		: 123.45,  // Oman hintasi keskiarvo.
				"costAvg"		: 123.45,  // Keskiarvoon lasketaan vain tuotteet, joilla on hankintahinta.
				"marginAvg"		: 10.5,  // Prosenttiosuus (voi olla negatiivinen; vain tuotteet, joilla on hankintahinta, lasketaan).
				"rankAvg"		: 1.23,  // Keskimääräinen hintasijoituksesi (1 = kukaan ei ole sinua halvempi).
				"rankInAvg"		: 1.23,  // Keskimääräinen sijoituksesi varastossa olevien kilpailijoiden joukossa.
				"productsCountComp"	: 9,  // Niiden tuotteiden määrä, joilla on kilpailijoita.
				"productsCountCompIn"	: 7,  // Niiden tuotteiden määrä, joilla on varastossa olevia kilpailijoita.
				"compAvg"		: 123.56,  // Kaikkien kilpailijakeskihintojen keskiarvo.
				"compAvgVsMe"		: 123.56,  // Oman hinnan ja kilpailijoiden hintojen keskimääräinen erotus (negatiivinen = olet halvempi).
				"compInAvg"		: 123.56,  // Sama kuin "compAvg", mutta vain varastossa oleville kilpailijoille.
				"compInAvgVsMe"		: 123.56,  // Sama kuin "compAvgVsMe", mutta vain varastossa oleville kilpailijoille.
				"compLowest"		: 123.56,  // Sama kuin "compAvg", mutta kunkin tuotteen halvimman kilpailijan keskiarvo.
				"compLowestVsMe"	: 123.56,  // Sama kuin "compAvgVsMe", mutta ...
				"compInLowest"		: 123.56,  // Sama kuin "compInAvg", mutta ...
				"compInLowestVsMe"	: 123.56,  // Sama kuin "compInAvgVsMe", mutta ...
				"compHighest"		: 123.56,  // Sama kuin "compAvg", mutta kunkin tuotteen kalleimman kilpailijan keskiarvo.
				"compHighestVsMe"	: 123.56,  // Sama kuin "compAvgVsMe", mutta ...
				"compInHighest"		: 123.56,  // Sama kuin "compInAvg", mutta ...
				"compInHighestVsMe"	: 123.56,  // Sama kuin "compInAvgVsMe", mutta ...
			},
			"products"	: [ // Tuoteolioiden taulukko viitekoodin mukaisessa aakkosnumeerisessa järjestyksessä:
				...
				{ ... },  // Tuoteolio kuten productGet-vastauksessa.
				...
			],
		},
		...
	]
}

categoryGetAll – Hae kaikkien tuoteryhmien tiedot

Toisin kuin categoryGet, categoryGetAll -toiminto ei palauta jokaisen tuotteen tietoja. Sama tuote voi kuulua useisiin tuoteryhmiin, jolloin tiedoista tulisi hyvin suuria ja päällekkäisiä. Jos tarvitset tuotteiden tiedot, käytä mieluummin categoryGet -toimintoa erikseen kullekin tuoteryhmälle tai productGetAll -toimintoa ja järjestä tuotteet niiden tuoteryhmien mukaan.
{ "actions" : [
	...
	{
		"a"		: "categoryGetAll",
		"withStats"	: 1,  // Palauta myös tilastot (hitaampaa).
		"noComments"	: 1,  // Älä palauta kommentteja (pienempi tietomäärä).
		"noProducts"	: 1,  // Älä palauta tuotetaulukkoa (...).
	},
	...
] }
VASTAUS:
{
	...
	"actions" : [
		...
		{
			"a"		: "categoryGetAll",
			"ok"		: 10,  // Tuoteryhmien kokonaismäärä ("categories"-taulukon pituus).
			"categories"	: [ // Tuoteryhmäolioiden taulukko aakkosjärjestyksessä:
				...
				{
					"name"			: "The Category Name",
					"created"		: 1234567890,  // Epoch-aika.
					"createdBy"		: "SOMEUSER",  // Käyttäjänimi tai "API".
					"comments"		: "Comments of this category",
					"commentsLast"		: 1234567890,  // Kommenttien viimeisimmän muokkauksen epoch-aika (jos muokattu).
					"commentsLastBy"	: "SOMEUSER",  // Käyttäjänimi tai "API".
					"productsCount"		: 2,  // Tuoteryhmän tuotteiden määrä.
					"products"	: ["REF-CODE-1", "REF-CODE-2"],  // Tuotteiden viitekoodit aakkosnumeerisessa järjestyksessä, ellei noProducts=1.
					"stats"		: {
						// Jos "withStats", sama tilasto-olio kuin yllä olevassa categoryGet-toiminnossa.
						...
					},
				}
				...
			],
		},
		...
	]
}

Hälytykset

alertRecipientCreate – Luo uusi hälytysten vastaanottaja

Tämä vastaa käyttöliittymän Alerts -sivun New Recipient -painiketta.
Saat lisätietoja jokaisesta kentästä napsauttamalla tililläsi olevia vihreitä kysymysmerkki-ikoneita.
{ "actions" : [
	...
	{
		"a"		: "alertRecipientCreate",
		"email"		: "john@example.net",  // Voi olla myös tekstiviestihälytysten puhelinnumero (katso käyttöliittymän ohje).
		"name"		: "john",  // Yksinkertainen näyttönimi (yleensä etunimi; kirjainkoolla ei ole merkitystä).
		"maxFrequency"	: 1800,  // (valinnainen, oletus 7200) Katso käyttöliittymän ohje.
		"simplify"	: 0,  // (valinnainen, oletus 1) Ota yksinkertaistus käyttöön (katso käyttöliittymän ohje).
		"sleepEnabled"	: 1,  // (valinnainen) Ota hiljainen ajanjakso käyttöön.
		"sleepFrom"	: "18:30",  // (vain jos sleepEnabled) 24 tunnin aikamuoto.
		"sleepTo"	: "07:00",  // (vain jos sleepEnabled) 24 tunnin aikamuoto.
		"timezone"	: "America/Los_Angeles",  // (vain jos sleepEnabled) Linuxin /usr/share/zoneinfo-hakemiston mukainen aikavyöhykepolku.
				// Välilyönnit muunnetaan alaviivoiksi.
				// Etsi aikavyöhykkeesi käyttöliittymän [New Recipient] -lomakkeelta varmistaaksesi tarkan arvon.
		"status"	: "hold",  // (valinnainen) "hold"- tai "disable"-tila. Mikä tahansa muu arvo (esim. "") tarkoittaa aktiivista.
		"rules"		: [...],  // (valinnainen) Alkuperäiset hälytyssäännöt (sääntöolioiden taulukko), kuten alla olevassa alertRecipientEdit-toiminnon "rulesAdd"-kentässä.
	},
	...
] }
VASTAUS:
{
	...
	"actions" : [
		...
		{
			"a"	: "alertRecipientCreate",
			"ok"	: 1,
		},
		...
	]
}

alertRecipientEdit – Muokkaa vastaanottajaa ja/tai hänen hälytyssääntöjään

Voit tehdä saman käyttöliittymän Alerts -sivulla napsauttamalla vastaanottajan Settings- tai Rules-painiketta.
Saat lisätietoja jokaisesta kentästä napsauttamalla tililläsi olevia vihreitä kysymysmerkki-ikoneita.
"email"-kenttä määrittää muokattavan vastaanottajan. Muut kentät muuttavat tämän vastaanottajan asetuksia.
{ "actions" : [
	...
	{
		"a"		: "alertRecipientEdit",
		"email"		: "john@example.net",  // Nykyinen sähköpostiosoite tai puhelinnumero (täsmälleen alertGetAll-toiminnon palauttamassa muodossa).
		"newEmail"	: "john2@example.net",  // (valinnainen) Uusi sähköpostiosoite tai puhelinnumero; katso käyttöliittymän ohje.
		"name"		: "john2",  // (valinnainen) Uusi nimi.
		"maxFrequency"	: 1800,  // (valinnainen) Katso käyttöliittymän ohje.
		"simplify"	: 1,  // (valinnainen) Ota yksinkertaistus käyttöön (katso käyttöliittymän ohje).
		"sleepEnabled"	: 1,  // (valinnainen) Ota hiljainen ajanjakso käyttöön.
		"sleepFrom"	: "18:30",  // (vain jos sleepEnabled) 24 tunnin aikamuoto.
		"sleepTo"	: "07:00",  // (vain jos sleepEnabled) 24 tunnin aikamuoto.
		"timezone"	: "America/Los_Angeles",  // (vain jos sleepEnabled) Katso yllä oleva alertRecipientCreate-toiminto.
		"status"	: "hold",  // (valinnainen) "hold"- tai "disable"-tila. Muu arvo (esim. "") tarkoittaa "active".
		"rules"		: [{ruleObject}, {ruleObject}],  // (valinnainen) Korvaa kaikki nykyiset säännöt (tyhjä taulukko poistaa kaikki).
				  // Älä anna "rules"-taulukkoa, jos haluat säilyttää nykyiset säännöt.
		"rulesAdd"	: [ // (valinnainen) Lisää nämä säännöt nykyisten lisäksi.
			...
			{  // TÄMÄ ON SÄÄNTÖOLION RAKENNE:
				"name"		: "me_cross_avg",  // Säännön API-nimen löydät käyttöliittymästä: Alerts > [Rules] > [+ New Rule], valitse sitten sääntö.
				"disabled"	: 1,  // (valinnainen) Poistetun käytöstä -tilaisen säännön luominen olisi erikoista, mutta alla oleva alertRuleEdit voi käyttää tätä.
				"var_n"		: 123.00,  // "X"-muuttujasta tulee "var_x",
				"var_c"		: "USD",  // ... joten nämä ovat säännön tarvitsemia kenttiä,
				"var_h"		: 24,  // ... eikä kaikissa säännöissä ole muuttujia.
				"direction"	: "both",  // Tai "drop" tai "rise", jos säännöllä on suunta.
				"categories"	: ["The Category 1", "The Category 2"],  // (valinnainen) Tyhjä tai puuttuva = KAIKKI TUOTTEET.
				"ignoreOos"	: 1,  // (valinnainen) Ohita kilpailijat, joilta tuote on loppunut (katso käyttöliittymä).
				"urlInclude"	: "",  // (valinnainen, kirjainkoolla ei ole merkitystä).
				"urlExclude"	: "amazon",  // (valinnainen, kirjainkoolla ei ole merkitystä).
				// "ruleNumber" yksilöi jokaisen säännön (esim. myöhempää muokkausta tai poistoa varten).
				// Se näkyy haettujen sääntöolioiden tiedoissa, mutta sitä ei voi itse asettaa.
			}
			...
		],
		"rulesRemove"	: [1,4,7],  // (valinnainen) Poistettavien sääntöjen "ruleNumber"-arvot.
					// Saat "ruleNumber"-arvon alla olevasta alertGetAll-toiminnosta.
					// HUOMAUTUS: poista kaikki säännöt käyttämällä "rules" = [].
	},
	...
] }
VASTAUS:
{
	...
	"actions" : [
		...
		{
			"a"	: "alertRecipientEdit",
			"ok"	: 3,  // Muutosten määrä (muuttujat + lisättyjen/poistettujen sääntöjen määrä).
		},
		...
	]
}

alertRecipientDelete – Poista hälytysten vastaanottaja

Poistaminen on pysyvää. Kaikki vastaanottajan hälytyssäännöt ja niiden historia poistetaan heti, eikä niitä voi palauttaa.
{ "actions" : [
	...
	{
		"a"		: "alertRecipientDelete",
		"email"		: "john@example.net",  // Nykyinen sähköpostiosoite tai puhelinnumero (täsmälleen alertGetAll-toiminnon palauttamassa muodossa).
	},
	...
] }
VASTAUS:
{
	...
	"actions" : [
		...
		{
			"a"	: "alertRecipientDelete",
			"ok"	: 1,
		},
		...
	]
}

alertRuleEdit – Muokkaa olemassa olevaa hälytyssääntöä

Tällä voit muokata yksittäistä olemassa olevaa hälytyssääntöä sen sijaan, että korvaisit tai lisäisit sääntöjä. Tyypillisiä käyttötapoja ovat esimerkiksi N-muuttujan muuttaminen ja säännön käyttöönotto tai poistaminen käytöstä.
Poista sääntö käyttämällä alertRecipientEdit -toiminnon "rulesRemove"-taulukkoa ja lisää uusi sääntö saman toiminnon "rulesAdd"-taulukolla.
{ "actions" : [
	...
	{
		"a"		: "alertRuleEdit",
		"email"		: "john@example.net",  // Vastaanottajan sähköpostiosoite tai puhelinnumero (sama muoto kuin alertGetAll-vastauksessa).
		"ruleNumber"	: 1,  // Muokattavan säännön viitenumero, jonka alla oleva alertGetAll palauttaa.
		"rule"		: {
			// Korvattavat säännön muuttujat. Katso SÄÄNTÖOLION RAKENNE yllä olevasta alertRecipientEdit-toiminnon "rulesAdd"-kohdasta.
			"disabled"	: 1,  // Esimerkiksi säännön käyttöönottoon tai poistamiseen käytöstä.
			"var_n"		: 5,  // Tai muuhun muuttujaan, esimerkiksi N:ään, säännön tyypistä riippuen.
			...
		},
	},
	...
] }
VASTAUS:
{
	...
	"actions" : [
		...
		{
			"a"	: "alertRuleEdit",
			"ok"	: 1,  // Muokattujen muuttujien määrä.
		},
		...
	]
}

alertGetAll – Hae kaikki hälytysten vastaanottajat ja heidän sääntönsä

{ "actions" : [
	...
	{
		"a"	: "alertGetAll",
		// Tämä toiminto ei ota parametreja.
	},
	...
] }
VASTAUS:
{
	...
	"actions" : [
		...
		{
			"a"		: "alertGetAll",
			"ok"		: 3,  // Vastaanottajien määrä (eli "recipients"-taulukon pituus).
			"recipients"	: [ // Kaikkien vastaanottajien taulukko; kukin on yllä olevan alertRecipientCreate-toiminnon kaltainen olio.
				...
				{
					"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"		: [ // Sääntöjen taulukko; kukin on yllä olevassa alertRecipientEdit-toiminnossa kuvattu olio.
						...
						{
							"ruleNumber"	: 4,  // Säännön viitenumero yllä olevalla alertRuleEdit-toiminnolla muokkaamista varten.
							"name"		: "me_cross_avg",
							"disabled"	: 0,
							"var_n"		: "123.00",  // HUOMAUTUS: kaikki muuttujat palautetaan merkkijonoina, vaikka ne olisivat numeroita.
							"var_c"		: "USD",
							"var_h"		: "24",
							"direction"	: "both",
							"categories"	: [],  // Tyhjä = kaikki tuotteet.
							"ignoreOos"	: 0,
							"urlInclude"	: "",
							"urlExclude"	: "amazon",
						}
						...
					],
				}
				...
			],
		},
		...
	]
}

Uudelleenhinnoittelusäännöt

repricingCreate – Luo uusi uudelleenhinnoittelusääntö

Tämä vastaa käyttöliittymän Repricing -sivun New Repricing Rule -painiketta.
Saat lisätietoja jokaisesta kentästä napsauttamalla tililläsi olevia vihreitä kysymysmerkki-ikoneita.
Miten tuotteet liitetään sääntöön? Muokkaa tuotteita productEdit- tai productRepricing-toiminnolla. Sääntö ei varsinaisesti sisällä tuotteita, vaan kukin tuote viittaa omaan sääntöönsä.
{ "actions" : [
	...
	{
		"a"	: "repricingCreate",
		"name"	: "The Rule Name",  // Enintään 50 merkkiä.
		"init"	: { // Alustusvaihtoehdon olio (ensimmäinen rivi nimeltään "Set my price to").
			"target"	: "cheapest_n",  // (Katso alla oleva luettelo.)
			"var_n"		: 3,  // Vain jos kohde vaatii N-muuttujan.
			"plusAmount"	: -2,  // Positiivinen = yli, negatiivinen = alle.
			"plusCurrency"	: "%",  // Valuutta (esim. "USD") tai "%".
			// Tämä tarkoittaa: ”Aseta oma hintani 2 % kolmen halvimman kilpailijan keskihinnan alapuolelle.”
			// VAROITUS: toisin kuin alla olevissa "never"-olioissa, alustusvaihtoehdolla ei ole "direction"-kenttää. "plusAmount"-arvon etumerkki määrittää, asetetaanko hinta alle vai yli.
		},
		"never"	: [ // (valinnainen) "Mutta ei koskaan" -ehto-oliot suoritusjärjestyksessä (enintään 10).
			{
				"target"	: "cheapest_n_in",  // (Katso alla oleva luettelo.)
				"var_n"		: 1,  // Vain jos kohde vaatii N-muuttujan.
				"direction"	: "below",  // Tai "above".
				"plusAmount"	: -10,  // Positiivinen = lisäys, negatiivinen = vähennys (pakollinen myös arvolla 0).
				"plusCurrency"	: "USD",  // Valuutta tai "%" (pakollinen myös, jos plusAmount=0).
				// Tämä tarkoittaa: ”Mutta ei koskaan halvimman varastossa olevan kilpailijan hintaa miinus 10,00 USD alemmaksi.”
			},
			{
				"target"	: "cost",
				"direction"	: "below",
				"plusAmount"	: 5,
				"plusCurrency"	: "%",
				// Tämä tarkoittaa: ”Mutta ei koskaan omaa hankintahintaani plus 5 % alemmaksi.”
			}
		],
		"ignoreDomains"	: "amazon ebay.com MyLabel1",  // (valinnainen) Ohitettavat kilpailijoiden verkkotunnukset ja/tai tunnisteet (kirjainkoolla ei ole merkitystä; katso käyttöliittymä).
		"charm"		: "none|zeros|charm",  // (valinnainen, oletus "none") Psykologinen hinnoittelu; "", "none" ja puuttuva arvo tarkoittavat samaa.
		"confidence"	: 82,  // (valinnainen, oletus 70) Vähimmäisluottamusprosentti 0–99 (katso käyttöliittymä).
		"disabled"	: 1,  // (valinnainen)
	},
	...
] }
// ========== Käytettävissä olevat "target"-arvot: ==========
// "average": Kaikkien kilpailijoiden keskihinta.
// "average_in": Varastossa olevien kilpailijoiden keskihinta.
// "cheapest_n": N halvimman kilpailijan keskihinta (tai halvin, jos N=1).
// "cheapest_n_in": N halvimman varastossa olevan kilpailijan keskihinta (tai ...).
// "highest_n": N kalleimman kilpailijan keskihinta (tai ...).
// "highest_n_in": N kalleimman varastossa olevan kilpailijan keskihinta (tai ...).
// "cost": Oma hankintahintani.
// "me_avg_n": Oman hintani keskiarvo viimeisten N tunnin ajalta (hintamuutosten nopeuden rajoittamiseen).
// "domain:example.com": example.com-sivuston hinta (halvin, jos useita).
// "domainIn:example.com": example.com-sivuston hinta vain, jos tuotetta on varastossa (...).
VASTAUS:
{
	...
	"actions" : [
		...
		{
			"a"	: "repricingCreate",
			"ok"	: 3,  // Onnistuneesti jäsennettyjen ja tallennettujen olioiden määrä (esim. init + never[0] + never[1] = 3).
			"name"	: "The Rule Name",  // Tietokantaan tallennettu lopullinen nimi (esimerkiksi erikoismerkkejä on voitu muuttaa).
		},
		...
	]
}

repricingEdit – Muokkaa olemassa olevaa uudelleenhinnoittelusääntöä

Muokkaa olemassa olevaa uudelleenhinnoittelusääntöä.
Katso yllä oleva repricingCreate -osio ymmärtääksesi muuttujat.
Tämä muokkaa itse sääntöä, ei siihen liitettyjä tuotteita. Liitä tuotteet sääntöihin käyttämällä productEdit - tai productRepricing -toimintoa.
{ "actions" : [
	...
	{
		"a"		: "repricingEdit",
		"name"		: "The Rule Name",  // Kirjainkoolla ei ole merkitystä.
		"newName"	: "The Rule Renamed",  // (valinnainen) Enintään 50 merkkiä.
		"init"		: { // (valinnainen) Jos annetaan, korvaa alustusvaihtoehdon muuttujia (katso repricingCreate).
			"plusAmount"	: 1,  // Voit esimerkiksi korvata vain "plusAmount"-kentän ja jättää muut ennalleen.
			// VAROITUS: jos uusi "target" vaatii N-muuttujan, sinun on annettava myös "var_n".
		},
		"never"		: [...], // (valinnainen) Voit korvata koko "never"-taulukon, mutta yleensä kannattaa käyttää never_*-kenttiä.
		// "never":[] poistaa kaikki nykyiset ehdot. Säilytä ne jättämällä kenttä pois.
		"never_0"	: { // (valinnainen) Korvaa ensimmäinen "Mutta ei koskaan" -ehto (taulukon indeksi 0).
			"var_n"		: 2,  // Voit esimerkiksi muuttaa vain "var_n"-arvoa ja jättää muut ennalleen.
		},
		"never_2"	: {
			"target"	: "",  // Tämä poistaa kolmannen "Mutta ei koskaan" -ehdon käytöstä (indeksi 2).
			// Jos "target" on "", olion muista muuttujista ei tarvitse huolehtia.
			// "never_2":{} tekee saman.
		},
		"never_6"	: {...}, // Tämä voi olla myös uusi "Mutta ei koskaan" -ehto, jolloin kaikki muuttujat vaaditaan kuten repricingCreate-toiminnossa.
		// "never_9" on suurin indeksi, koska "never"-taulukossa voi olla enintään 10 alkiota.
		"ignoreDomains"	: "",  // (valinnainen) Sama kuin repricingCreate-toiminnossa.
		"charm"		: "zeros",  // (valinnainen) ...
		"confidence"	: 82,  // (valinnainen) ...
		"disabled"	: 1,  // (valinnainen) 0 ottaa tällä hetkellä käytöstä poistetun säännön käyttöön.
	},
	...
] }
VASTAUS:
{
	...
	"actions" : [
		...
		{
			"a"	: "repricingEdit",
			"ok"	: 3,  // Muutosten määrä (esim. yksi never_N-olion muuttuja + yksi init-olion muuttuja + "charm").
			"name"	: "The Rule Name",  // Tietokantaan tallennettu lopullinen (uusi) nimi (esimerkiksi erikoismerkkejä on voitu muuttaa).
		},
		...
	]
}

repricingDelete – Poista uudelleenhinnoittelusääntö

Poistaminen on pysyvää. Sääntö poistetaan tililtäsi välittömästi, eikä sitä voi palauttaa. Sääntöä käyttäneillä tuotteilla ei sen jälkeen ole sääntöä, joten niiden uudelleenhinnoittelu epäonnistuu.
{ "actions" : [
	...
	{
		"a"		: "repricingDelete",
		"name"		: "The Rule Name",  // Kirjainkoolla ei ole merkitystä.
		"onlyIfUnused"	: 1,  // (valinnainen) Turvatarkistus: aiheuttaa virheen, jos jotkin tuotteet käyttävät sääntöä.
	},
	...
] }
VASTAUS:
{
	...
	"actions" : [
		...
		{
			"a"		: "repricingDelete",
			"ok"		: 1,
			"productsCount"	: 10,  // Niiden tuotteiden määrä, jotka käyttivät sääntöä ja joilla ei nyt ole sääntöä.
		},
		...
	]
}

repricingGetAll – Hae kaikki uudelleenhinnoittelusäännöt

Tutustu ensin yllä olevaan repricingCreate -osioon, sillä tämän toiminnon palauttamien tietojen rakenne muistuttaa repricingCreate-pyynnön tietoja.
{ "actions" : [
	...
	{
		"a"	: "repricingGetAll",
		// Tämä toiminto ei ota muita parametreja.
	},
	...
] }
VASTAUS:
{
	...
	"actions" : [
		...
		{
			"a"	: "repricingGetAll",
			"ok"	: 10,  // Sääntöjen kokonaismäärä ("rules"-taulukon pituus).
			"rules"	: [ // Uudelleenhinnoittelusääntöjen taulukko aakkosjärjestyksessä; jokainen sääntö on olio:
				...
				{
					"name"		: "Some Repricing Rule",
					"created"	: 1234567890,  // Säännön alkuperäinen luontiaika epoch-muodossa.
					"createdBy"	: "SOMEUSER",  // Käyttäjänimi tai "API".
					"edited"	: 1234567890,  // Viimeisin muokkausaika (jos muokattu; muuten kenttä puuttuu).
					"editedBy"	: "SOMEUSER",  // Käyttäjänimi tai "API" (tai puuttuu).
					"disabled"	: 1234567890,  // Jos sääntö on nyt pois käytöstä, viimeisimmän käytöstäpoiston epoch-aika; muuten puuttuu.
					"disabledBy"	: "SOMEUSER",  // Käyttäjänimi tai "API" (tai puuttuu).
					"productsCount"	: 10,  // Sääntöä tällä hetkellä käyttävien tuotteiden määrä.
					"ignoreDomains"	: "amazon ebay.com MyLabel1",  // Ohitettavat kilpailijoiden verkkotunnukset ja/tai tunnisteet (katso käyttöliittymä).
					"charm"		: "charm",  // Psykologisen hinnoittelun tila (none|zeros|charm).
					"confidence"	: 82,  // Luottamuksen vähimmäisprosentti 0–99 (katso käyttöliittymä).
					"init"	: { // Alustusvaihtoehdon olio (ensimmäinen rivi nimeltään "Set my price to").
						"target"	: "cheapest_n",  // (Katso repricingCreate-toiminnon luettelo.)
						"var_n"		: 3,  // Jos kohde vaatii N-muuttujan; muuten puuttuu.
						"plusAmount"	: -2,  // Positiivinen = yli, negatiivinen = alle.
						"plusCurrency"	: "%",  // Valuutta (esim. "USD") tai "%".
						// Tämä tarkoittaa: ”Aseta oma hintani 2 % kolmen halvimman kilpailijan keskihinnan alapuolelle.”
						// VAROITUS: toisin kuin alla olevissa "never"-olioissa, alustusvaihtoehdolla ei ole "direction"-kenttää. "plusAmount"-arvon etumerkki määrittää, asetetaanko hinta alle vai yli.
					},
					"never"	: [ // "Mutta ei koskaan" -ehto-oliot suoritusjärjestyksessä.
						{
							"target"	: "cheapest_n_in",
							"var_n"		: 1,
							"direction"	: "below",  // Tai "above".
							"plusAmount"	: -10,  // Positiivinen = lisäys, negatiivinen = vähennys.
							"plusCurrency"	: "USD",  // Valuutta tai "%".
							// Tämä tarkoittaa: ”Mutta ei koskaan halvimman varastossa olevan kilpailijan hintaa miinus 10,00 USD alemmaksi.”
						},
						{},  // Tämä tarkoittaa, että jätit "Mutta ei koskaan" -ehtojen toisen rivin tyhjäksi.
						{
							"target"	: "cost",
							"direction"	: "below",
							"plusAmount"	: 5,
							"plusCurrency"	: "%",
							// Tämä tarkoittaa: ”Mutta ei koskaan omaa hankintahintaani plus 5 % alemmaksi.”
						}
					],
				}
				...
			],
		},
		...
	]
}

Taulukot

spreadsheetDownload – Lataa taulukko

Tämä toiminto on POIKKEUS: sitä ei voi yhdistää muihin toimintoihin, ja se palauttaa JSON-vastauksen sijaan taulukkotiedoston (paitsi jos käytät alla olevaa "savePreset"- tai "downloadURL"-asetusta).
Se vastaa tilisi Export -sivun toimintoja.
Aseta timeout-aikakatkaisu riittävän suureksi, sillä suurten taulukoiden luominen voi kestää palvelimella jonkin aikaa.
HELPPO TAPA: Napsauta Export-sivulla Show API equivalent -painiketta: se muodostaa valitsemiasi lomakeasetuksia vastaavan koko JSON-kutsun ja curl-komennon.
{ "actions" : [
	{
		"a"		: "spreadsheetDownload",
		"preset"	: "Some Preset Name",  // (valinnainen) Alla olevien kenttien sijasta voit käyttää omia tai tarjoamiamme esiasetuksia.
			// Oman esiasetuksen kohdalla anna sen koko nimi ilman alun käyttäjänimeä ja lopun valuuttaa.
			// Oletusesiasetustemme nimet löydät Export-sivun DIRECT DOWNLOAD -pudotusvalikosta viemällä hiiren osoittimen niiden päälle.
			// Esimerkiksi "pricezag_backup" on erityinen varmuuskopioesiasetuksemme (katso DIRECT DOWNLOAD -valikon "Special BACKUP format to re-import").
			// Voit antaa alla myös muuttujia, jotka korvaavat esiasetuksen oletusarvot (esim. eri valuutta, muoto tai tuoteryhmät).
		"savePreset"	: "My New Preset Name",  // (valinnainen) Tallenna kaikki alla antamasi asetukset uutena esiasetuksena, jota voit käyttää sekä käyttöliittymässä että API:ssa.
			// POIKKEUKSEN POIKKEUS: savePreset ei lataa taulukkoa, vaan palauttaa tavallisen JSON-olion.
		"savePresetOverwrite"	: 1,  // (valinnainen) Korvaa "savePreset"-kentässä annettu nykyinen esiasetus (muuten palautetaan virhe).
			// VAROITUS: korvaaminen poistaa kaikki aiemmat asetukset. Älä käytä sitä vain yhden kentän muuttamiseen.
			// Nimeä esiasetus uudelleen tai poista se alla olevalla spreadsheetPresetEdit-toiminnolla.
		"downloadURL"	: 1,  // (valinnainen) POIKKEUKSEN POIKKEUS: taulukkotiedoston sijaan palautetaan tavallinen JSON-vastaus, jonka olio sisältää "fileURL"-kentän.
			// Se on tiedoston julkinen URL (ei tunnistautumista eikä API-avainta). Kuka tahansa voi ladata tiedoston 15 minuutin ajan mistä tahansa.
			// "ok" on rivien määrä, ja "fileSize" sisältää koon tavuina.
		"format"	: "xlsx|xls|csv|csv-tab",  // (API:n oletus: csv).
		"currency"	: "USD",  // (PAKOLLINEN ilman esiasetusta) Valuutta, jossa KAIKKI summat esitetään.
		"categories"	: ["Category 1", "Category 2"],  // Sisällytä vain näiden tuoteryhmien tuotteet (muuten kaikki tuotteet).
		"historyPeriod"	: "prev_6mo",  // (valinnainen, oletus "now").
			// KATSO ENSIN Export-sivun historiajaksojen (?) -ohjeita, sillä ne selittävät asetukset tarkasti.
			// "historyPeriod" määrittää, kuinka kaukaa historiasta summat haetaan ennen kuin tiedot jaetaan tuotekohtaisiksi riveiksi "historyRow"-asetuksen perusteella.
			// "now": ei historiatietoja, vain nykyiset tiedot (ei "historyRow"-asetusta).
			// "all": koko saatavilla oleva aikaväli liittymisestäsi alkaen (tai ainakin valituille tuotteille). VOI OLLA HIDAS.
			// "1234500000-1237800000": mukautettu aikaväli epoch-aikaleimoilla (alku–loppu).
			// "123h": viimeiset 123 tuntia. Ei aikarajoihin pyöristystä: loppu on nykyhetki, alku voi olla kesken kellotuntia.
			// "cur_123(d|wk|mo|yr)": viimeiset 123 päivää/viikkoa/kuukautta/vuotta mukaan lukien nykyinen keskeneräinen jakso. Esim. "cur_2mo" kuukauden 10. päivänä kattaa 40 päivää.
			// "prev_123(d|wk|mo|yr)": edelliset 123 päättynyttä päivää/viikkoa/kuukautta/vuotta. Esim. "prev_2mo" helmikuun 10. päivänä kattaa joulukuun ja tammikuun 62 päivää.
			// cur_*- ja prev_*-jaksojen alku (ja prev_*-jaksojen loppu) sijoitetaan edelliseen keskiyöhön, mutta cur_*-jakson loppu on nykyhetki.
			// Siksi keskipäivällä ladattu "cur_2d" kattaa viimeiset 36 tuntia ja "prev_2d" edeltävät 48 tuntia, jotka päättyivät 12 tuntia sitten.
		"historyRow"	: "2w",  // (pakollinen, jos "historyPeriod" ei ole "now").
			// "historyRow" määrittää yhden rivin edustaman aikajakson (jakson keskiarvon), joten tuotetta kohti syntyy useita rivejä (paitsi "all").
			// Voit ajatella "historyRow"-asetusta "historyPeriod"-jakson JAKAMISENA erillisiksi taulukkoriveiksi kullekin tuotteelle.
			// "all": koko historyPeriod-jakson keskiarvo yhdellä rivillä tuotetta kohti.
			// "123(d|wk|mo|qt|yr)": kalenterin mukaisten 123 päivän/viikon/kuukauden/neljänneksen/vuoden jaksot keskiyöhön rajattuina. Jos arvo on 1, numeron voi jättää pois ("wk" käy "1wk":n sijasta).
			// Jos lataat lauantaina käyttäen historyRow:"7d", kukin rivi sisältää lauantain 00.00 ja perjantain 23.59 välisen jakson keskiarvon.
			// Mutta historyRow:"1wk" tuottaa maanantain 00.00 ja sunnuntain 23.59 väliset viikkokeskiarvot; viimeisin rivi kattaa keskeneräisen viikon maanantaista lauantaihin.
			// ▶ 500 000 RIVIN RAJA: käyttöliittymä ja API hylkäävät historiaparametrit, jotka tuottaisivat yli 500 000 riviä.
			// Näin voi käydä helposti historyRow:"day"-asetuksella, jos historyPeriod kattaa paljon päiviä, esimerkiksi 365 päivää × 1 400 tuotetta.
			// Jos tarvitset tämän määrän tietoja, lataa erillinen taulukko kullekin muutaman sadan tuotteen tuoteryhmälle.
		"timezone"	: "America/Los_Angeles",  // (valinnainen, oletus "UTC") Linuxin /usr/share/zoneinfo-hakemiston mukainen aikavyöhykepolku.
			// Välilyönnit muunnetaan alaviivoiksi.
			// Aikavyöhykettä tarvitaan vain, jos history*-asetukset käyttävät kalenterijaksoja (keskiyön määrittämiseksi).
			// Käyttöliittymä käyttää nykyisen käyttäjän asetusten aikavyöhykettä, mutta API:ssa ei ole tätä asetusta, joten se on annettava pyynnössä.
		// ========== SARAKKEET: ==========
		// column*-muuttujilla määrität taulukon sarakkeet (katso Export-sivun lomakkeen ohjeet).
		// Kaikkien muiden kuin Code-sarakkeen oletus on 0 (sarake jätetään pois).
		"columnCode"		: 1,  // (Tätä ei voi poistaa: jokaisen tuotteen REF-CODE on aina omassa sarakkeessaan.)
		"columnName"		: 1,  // Tuotteen nimi.
		"columnCategories"	: 1,  // Tuotteen nykyiset tuoteryhmät ("Category 1; Category 2" samassa solussa).
		"columnComments"	: 1,  // Tuotteen kommentit.
		"columnCreated"		: 1,  // Tuotteen luontipäivä YYYY/MM/DD (järjestelmässämme).
		"columnCustom"		: 1,  // Tuotteiden mukautetut kentät (oma sarake jokaiselle eri muuttujalle).
		"columnPrice"		: 1,  // Tuotteen hinta pyydetyssä valuutassa (EI tuotteen alkuperäisessä valuutassa).
		"columnCost"		: 1,  // Tuotteen hankintahinta (...).
		"columnMargin"		: 1,  // Tuotteen kateprosentti hinnan ja hankintahinnan perusteella.
		"columnRank"		: 1,  // Oma hintasijoitus.
		"columnInRank"		: 1,  // Oma sijoitus varastossa olevien kilpailijoiden joukossa.
		"columnMyWebsite"	: 1,  // Oman verkkosivustoni URL-osoite.
		"columnReprice"		: 1,  // Uudelleenhinnoittelulla laskettu summa (valuutassa ...).
		"columnRepricingRule"	: 1,  // Uudelleenhinnoittelusäännön nimi.
		"columnRecommended"	: 1,  // Suositushinta (katso Export-sivun ohje).
		"columnCompUrls"	: 1,  // Kilpailija-URL-osoitteet (yksi saraketta kohti).
		"columnCompUrlsJoin"	: 1,  // Kilpailija-URL-osoitteet (välilyönneillä erotettuina yhdessä solussa).
		"columnCompMinMaxAvg"	: 1,  // Lisää 3 saraketta: kilpailijoiden minimi-/maksimi-/keskihinta.
		"columnInCompMinMaxAvg"	: 1,  // Lisää 3 saraketta: VARASTOSSA olevien kilpailijoiden minimi-/maksimi-/keskihinta.
		"columnCompPrice"	: 1,  // Lisää yhden sarakkeen kilpailijaa kohti, joka sisältää hinnan (...).
		"columnCompStock"	: 1,  // Lisää yhden sarakkeen kilpailijaa kohti varastotiedolle (123|IN|OUT).
		"columnCompSales"	: 1,  // Lisää yhden sarakkeen kilpailijaa kohti viikkomyynnille.
		"columnCompRank"	: 1,  // Lisää yhden sarakkeen kilpailijaa kohti sen sijoitukselle kaikkien joukossa (sinut mukaan lukien).
		"columnCompInRank"	: 1,  // Lisää yhden sarakkeen kilpailijaa kohti sen sijoitukselle VARASTOSSA olevien kilpailijoiden joukossa (sinut mukaan lukien).
		// ========== EPÄVIRALLISET LISÄPARAMETRIT: ==========
		// Meillä on myös muutamia epävirallisia, tarkemmin dokumentoimattomia asetuksia, joita esimerkiksi "pricezag_backup"-esiasetus käyttää.
		"originalCurrencies"	: 1,  // Sen sijaan, että summat muunnettaisiin pyytämääsi valuuttaan numeroiksi, solut ovat alkuperäisen valuutan sisältäviä merkkijonoja ("123.90 USD").
		"keepUrlLabels"		: 1,  // Tavallisesti poistamme kilpailija-URL-osoitteiden tunnisteet. Tällä ne säilytetään (hyödyllistä varmuuskopioissa).
		"csvSeparator"		: ";",  // Jos haluat CSV-muotoon muun erottimen kuin pilkun tai sarkaimen.
		"csvNoQuote"		: 1,  // Estää CSV:tä käyttämästä lainausmerkkejä ("). Tämä voi rikkoa tiedostomuodon kelvollisuuden.
	}
] }
// Yksinkertainen tapa ladata CSV-varmuuskopio:
// 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 – Nimeä taulukkoesiasetus uudelleen tai poista se

Tämä vastaa tilisi Export -sivun Edit Presets -painiketta.
Toiminnolla voi vain NIMETÄ esiasetuksen UUDELLEEN tai POISTAA sen. Luo uusi esiasetus tai muokkaa vanhaa käyttämällä yllä olevaa spreadsheetDownload-toimintoa.
{ "actions" : [
	{
		"a"		: "spreadsheetPresetEdit",
		"preset"	: "Some Preset Name",  // Esiasetuksen nykyinen nimi.
		"newName"	: "The Renamed Preset",  // Nimeä esiasetus uudelleen.
		"delete"	: 1,  // Tämä poistaa "preset"-esiasetuksen tililtäsi.
		// HUOMAUTUS: automaattisessa viennissä käytettyä esiasetusta ei voi poistaa (palautetaan virhe).
		// Poista ensin nämä ajastetut automaattiset viennit (katso Export-sivu).
	}
] }
VASTAUS:
{
	...
	"actions" : [
		...
		{
			"a"	: "spreadsheetPresetEdit",
			"ok"	: 1,
		},
		...
	]
}

spreadsheetAutoCreate – Luo uusi automaattinen taulukkovienti

Tämä vastaa tilisi Export -sivun toimintoa, jossa napsautat Add a new Auto-Export -painiketta.
{ "actions" : [
	{
		"a"			: "spreadsheetAutoCreate",
		"preset"		: "The Preset Name",
		"email"			: "john@example.net",
		"currency"		: "USD",  // (valinnainen) Oletus on "preset", jolloin käytetään esiasetuksen valuuttaa.
		"attach"		: "link",  // (valinnainen, oletus "attach") "attach" = liitetiedosto, "link" = palvelimella oleva suora linkki.
		"everyMonday"		: 1,  // Lähetä taulukko joka maanantai.
		"everyTuesday"		: 1,  // ... (samoin viikon kaikille päiville "everySunday"-kenttään asti).
		"everyMonthDay1"	: 15,  // Lähetä joka kuun 15. päivänä.
		"everyMonthDay2"	: 21,  // ... ja myös 21. päivänä.
		"everyMonthDay3"	: "last",  // ... ja myös kuukauden viimeisenä päivänä.
			// everyMonthDay*-indeksi voi olla 0–9 eli kuukaudesta voi valita enintään 10 päivää.
		"time"			: "3:59pm",  // Myös "15.59" kelpaa ja muunnetaan muotoon "3:59pm". "0:9", "0.09", "00:09" ja "0:09am" toimivat samoin.
		"timezone"		: "America/Los_Angeles",  // (valinnainen, oletus "UTC") Linuxin /usr/share/zoneinfo-hakemiston mukainen aikavyöhykepolku.
			// Kaupungin nimen välilyönnit muunnetaan alaviivoiksi.
	}
] }
VASTAUS:
{
	...
	"actions" : [
		...
		{
			"a"	: "spreadsheetAutoCreate",
			"ok"	: 1,
			"id"	: "5gwi6fqa",  // Automaattisen viennin viitetunnus myöhempiä muutoksia varten (katso alla spreadsheetAutoEdit).
		},
		...
	]
}

spreadsheetAutoEdit – Muokkaa automaattista taulukkovientiä

Tämä vastaa tilisi Export -sivun AUTO-EXPORT TO EMAIL -luettelossa olevan automaattisen viennin Edit-painiketta.
{ "actions" : [
	{
		"a"			: "spreadsheetAutoEdit",
		"id"			: "5gwi6fqa",  // Muokattavan automaattisen viennin viitetunnus.
			// Tunnus palautetaan spreadsheetAutoCreate-vastauksessa, mutta se näkyy myös käyttöliittymän ponnahdusikkunan otsikossa, kun napsautat automaattisen viennin Edit-painiketta.
		"disabled"		: 1,  // (valinnainen) 0 ottaa tällä hetkellä pois käytöstä olevan automaattisen viennin käyttöön.
		"delete"		: 1,  // (valinnainen) Poista tämä automaattinen vienti kokonaan.
		// ===== Alla olevat kentät (kaikki valinnaisia) ovat samat kuin yllä olevassa spreadsheetAutoCreate-toiminnossa. =====
		"preset"		: "The Preset Name",
		"email"			: "john@example.net",
		"currency"		: "USD",
		"attach"		: "link",
		"everyMonday"		: 1,  // VAROITUS: jos annat yhdenkin every*-muuttujan, kaikki nykyiset every*-muuttujat tyhjennetään.
		"everyMonthDay1"	: 15,  // Jos "everyFriday"=1 oli aiemmin käytössä, "everyMonthDay3"-kentän antaminen poistaa "everyFriday"-asetuksen.
		// ... ja niin edelleen (kaikki every*-kentät on kuvattu spreadsheetAutoCreate-toiminnossa).
		"time"			: "3:59pm",
		"timezone"		: "America/Los_Angeles",
	}
] }
VASTAUS:
{
	...
	"actions" : [
		...
		{
			"a"	: "spreadsheetAutoEdit",
			"ok"	: 3,  // Tehtyjen muutosten määrä.
		},
		...
	]
}

Kilpailijat ja muut toiminnot

competitorDeleteAll – Poista kilpailija kaikista tuotteista tai tuoteryhmistä

Tämä poistaa kilpailijan URL-osoitteet kerralla kaikista tuotteista tai valittujen tuoteryhmien tuotteista.
VAROITUS: kilpailijoiden URL-osoitteet poistetaan tililtäsi välittömästi, eikä niitä voi palauttaa.
Tämä vastaa käyttöliittymässä tehtävää toimintoa, jossa avaat kilpailijan sivun ja napsautat Delete from all Products-painiketta tai avaat tuoteryhmän sivun ja napsautat (X) -kuvaketta kilpailijaluettelossa.
{ "actions" : [
	...
	{
		"a"		: "competitorDeleteAll",
		"domain"	: "competitordomain.com",
		"categories"	: ["The Category 1", "The Category 2"],  // (valinnainen) Jos puuttuu, "allProducts" = 1 on pakollinen.
		"allProducts"	: 1,  // (valinnainen) Poista kaikista tuotteista ("categories"-kenttää EI saa antaa).
		// Anna joko "categories" tai "allProducts", ei molempia eikä kumpaakaan pois.
	},
	...
] }
VASTAUS:
{
	...
	"actions" : [
		...
		{
			"a"	: "competitorDeleteAll",
			"ok"	: 10,  // Poistettujen URL-osoitteiden määrä.
		},
		...
	]
}

mathEdit – Määritä tai muokkaa kilpailijaverkkotunnuksen hintalaskentaa

Voit tehdä saman käyttöliittymän Domains -sivulla: napsauta luettelosta kilpailijan verkkotunnusta ja sitten Mathematically alter the price. Voit määrittää kaikki lomakkeen asetukset myös API:n mathEdit-toiminnolla.
Saat lisätietoja jokaisesta kentästä napsauttamalla tililläsi olevia vihreitä kysymysmerkki-ikoneita.
{ "actions" : [
	...
	{
		"a"		: "mathEdit",
		"domain"	: "competitordomain.com",
		"clear"		: 1,  // (valinnainen) Poista käytöstä kaikki verkkotunnuksen hintalaskenta (kaikki aiemmat asetukset poistetaan).
		// Jos asetat clear:1, älä anna mitään alla olevista kentistä tai saat virheen.
		"math"	: [  // Käytettävien laskentalohkojen taulukko.
			{  // Tämä on laskentalohko-olio; kaikki kentät ovat valinnaisia.
				"categories"		: ["Category 1", "Category 2"],  // Vain näiden tuoteryhmien tuotteille.
				"theirPriceMin"		: 1234.90,  // Vain jos niiden hinta on vähintään N.
				"theirPriceMinCurrency"	: "USD",  // Valuutta ("original" = sama kuin verkkosivun valuutta).
				"theirPriceMax"		: 1234.90,  // ... enintään N.
				"theirPriceMaxCurrency"	: "USD",  // Valuutta (...).
				"themMeMin"		: -20.00,  // Vain jos [kilpailijan hinta – oma hinta] on vähintään N (katso käyttöliittymä).
				"themMeMinCurrency"	: "USD",  // Valuutta tai "%" omasta hinnastasi ("original" EI käy tässä).
				"themMeMax"		: -1.5,  // ... enintään N.
				"themMeMaxCurrency"	: "%",  // Valuutta (...).
				"addPre"		: -10.00,  // Ennen kertomista lisättävä summa (negatiivisena vähennetään).
				"addPreCurrency"	: "USD",  // Valuutta ("original" = sama kuin verkkosivun valuutta).
				"multiply"		: 1.1,  // Kerro tällä kertoimella.
				"divide"		: 1.1,  // TAI jaa (älä anna molempia).
				"addPost"		: 5.00,  // Kertomisen jälkeen lisättävä summa (negatiivisena vähennetään).
				"addPostCurrency"	: "USD",  // Valuutta (...).
				// Tuntuuko monimutkaiselta? Katso yksinkertainen esimerkki vastauksen alta.
			},
			... // Yhteensä enintään 10 lohkoa (suoritetaan järjestyksessä).
		],
		// HUOMAUTUS: tällä hetkellä ei voi muuttaa vain yhtä muuttujaa tai laskentalohkoa. Jos annat math-taulukon, se korvaa kaikki nykyiset asetukset.
		// HUOMAUTUS: lohko ohitetaan, jos se ei kerro eikä jaa (kenttä puuttuu tai arvo on 1) eikä siinä ole addPre!=0 tai addPost!=0.
		// Jos kaikki lohkot ohitetaan, vaikutus on sama kuin kaiken laskennan poistamisella clear:1-asetuksella.
		// Toisin sanoen laskennan on todella tehtävä jotakin, jotta se tallennetaan.
		// VINKKI: jos haluat poistaa verkkotunnuksen hintalaskennan tilapäisesti käytöstä poistamatta asetuksia,
		// voit antaa categories : ["Some Empty Existing Category"].
	},
	...
] }
VASTAUS:
{
	...
	"actions" : [
		...
		{
			"a"	: "mathEdit",
			"ok"	: 3,  // Muuttuneiden laskentalohkojen määrä (poistaminen/tyhjentäminen lasketaan muutokseksi).
		},
		...
	]
}
YKSINKERTAINEN ESIMERKKI — Poista 10 %:n vero amazon.co.uk-sivuston hinnoista:
{ "actions" : [
	{
		"a"		: "mathEdit",
		"domain"	: "amazon.co.uk",
		"math"		: [
			{
				"divide"	: 1.1
			}
		]
	}
] }

Lisää esimerkkejä

Nämä pyynnöt lähetetään POST osoitteeseen seuraavina tietoina: https://pricezag.com/api/v3/MYAPIKEY
▶ ESIMERKKI 1 — Päivitä tuotteen hankintahinta
PYYNTÖ:
{
	"actions" : [
		{
			"a"		: "productEdit",
			"code"		: "SKU-1234",
			"cost"		: 140.50,
			"costCurrency"	: "EUR"
		}
	]
}
VASTAUS:
{
	"ok"		: 1,  // 0, jos SKU-1234-tuotteen hankintahinta oli jo tämä.
	"errors"	: 0,  // 1, jos SKU-1234-tuotetta ei ollut olemassa.
	"actionsCount"	: 1,
	"actions" : [
		{
			"a"	: "productEdit",
			"ok"	: 1  // 0, jos SKU-1234:n hankintahinta oli jo tämä, ja -1, jos tuotetta ei ollut olemassa.
		}
	]
}

▶ ESIMERKKI 2 — Hae tuote, jota ei ole olemassa
PYYNTÖ:
{
	"actions" : [
		{
			"a"		: "productGet",
			"code"		: "NON-EXISTING-SKU",
			"currency"	: "USD"
		}
}
VASTAUS:
{
	"ok"		: 0,  // Koska yksikään toiminto ei palauttanut ok>0.
	"errors"	: 1,  // Koska yksi toiminto palautti ok<0.
	"actionsCount"	: 1,
	"actions" : [
		{
			"a"	: "productGet",
			"ok"	: -1,  // Tästä näet, että toiminto epäonnistui.
			"error"	: "Sorry, the product #NON-EXISTING-SKU does not exist. Maybe someone else just removed or renamed it?"
		}
	]
}

▶ ESIMERKKI 3 — Luo tuoteryhmä ja uudelleenhinnoittelusääntö sekä kaksi niihin liitettyä tuotetta
PYYNTÖ:
{
	"actions" : [
		{
			"a"		: "categoryCreate",
			"name"		: "My New Category"
		},
		{
			"a"		: "repricingCreate",
			"name"		: "My New Repricing Rule",
			"init"	: {
				"target"	: "cheapest_n",
				"var_n"		: 2,
				"plusAmount"	: 0,
				"plusCurrency"	: "%"
				// Tämä tarkoittaa: ”Aseta oma hintani kahden halvimman kilpailijan hintojen puoliväliin.”
			},
			"never"	: [
				{
					"target"	: "cost",
					"direction"	: "below",
					"plusAmount"	: 5,
					"plusCurrency"	: "%"
					// Tämä tarkoittaa: ”Mutta ei koskaan omaa hankintahintaani + 5 % alemmaksi.”
				}
			],
			"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",  // Juuri luomamme säännön nimi.
			"categories"	: ["My New Category"],	// Juuri luomamme tuoteryhmän nimi.
			// ... vaikka productCreate luo puuttuvat tuoteryhmät muutenkin, joten categoryCreate-toiminto oli tässä tarpeeton.
			"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://..."]
		}
	]
}
VASTAUS:
{
	"ok"		: 4,  // Koska kaikki 4 toimintoa palauttivat ok>0.
	"errors"	: 0,  // Koska yksikään toiminto ei palauttanut ok<0.
	"actionsCount"	: 4,
	"actions" : [
		{
			"a"	: "categoryCreate",
			"ok"	: 1
		},
		{
			"a"	: "repricingCreate",
			"ok"	: 1
		},
		{
			"a"	: "productCreate",
			"ok"	: 1
		},
		{
			"a"	: "productCreate",
			"ok"	: 1
		}
	]
}

▶ ESIMERKKI 4 — Yhdistä kaksi tuoteryhmää uuteen ja poista alkuperäiset
PYYNTÖ:
{
	"actions" : [
		{
			"a"			: "categoryCopy",
			"categoriesFrom"	: ["Original Category 1", "Original Category 2"],
			"deleteMode"		: "cat",
			// "removeMode":"cat" on tarpeeton, koska deleteMode poistaa nämä kaksi tuoteryhmää joka tapauksessa.
			"categoriesTo"		: ["A New Category"]
		}
}
VASTAUS:
{
	"ok"		: 1,  // Koska yksi toiminto palautti ok>0.
	"errors"	: 0,  // Koska yksikään toiminto ei palauttanut ok<0.
	"actionsCount"	: 1,
	"actions" : [
		{
			"a"			: "categoryCopy",
			"ok"			: 3,  // Koska 3 tuoteryhmää muuttui: kaksi alkuperäistä poistettiin ja yksi uusi kohdetuoteryhmä luotiin.
			"categoriesCreated"	: 1,
			"categoriesDeleted"	: 2,
			"categoriesModified"	: 0,
			"productsCount"		: 123
		}
	]
}

▶ ESIMERKKI 5 — Muuta hälytyssäännön N-muuttujaa ja suuntaa
PYYNTÖ:
{
	"actions" : [
		{
			"a"		: "alertRuleEdit",
			"email"		: "john@example.net",
			"ruleNumber"	: 3,
			"rule"		: {
				"var_n"		: 1.5,
				"direction"	: "drop"
			}
		}
}
VASTAUS:
{
	"ok"		: 1,  // Koska yksi toiminto palautti ok>0.
	"errors"	: 0,  // Koska yksikään toiminto ei palauttanut ok<0.
	"actionsCount"	: 1,
	"actions" : [
		{
			"a"	: "alertRuleEdit",
			"ok"	: 2  // Koska 2 muuttujaa muutettiin onnistuneesti.
		}
	]
}