Shopamine

ERP API v0.4.0

Uvod

Ta dokument opisuje API za prenos podatkov o naročilih in artiklih med trgovino Shopamine in ERP sistemom uporabnika trgovine oz. prodajalca. Vsaka od spodaj navedenih funkcij mora imeti svoj URL, do katerega bo dostopal strežnik Shopamine, razen tega pa ni posebnih omejitev glede načina implementacije na strani ERP. Funkcije so med seboj pretežno neodvisne, zato ni nujno, da na strani ERP obstajajo vse. Čeprav običajno URL-ji ustrezajo imenom funkcij, to ni nujno.

Ta API je zasnovan z naslednjim potekom dela v mislih:

Kazalo funkcij

getItemsInfo

Input

Funkcija getItemsInfo ima dva parametra, od katerih sta oba neobvezna. http://.../getItemsInfo?ids=1,2,3&lastModified=2009-07-17T21:45:10.411Z
ids Vsebuje seznam IDjev artiklov, ločenih z vejicami; učinkuje tako, da omeji rezultat na navedene IDje.
lastModified Vsebuje datum v obliki "YYYY-MM-DDThh:mm:ss[.mil]Z" (ISO-8601) in UTC timezoneu; učinkuje tako, da omeji rezultat na artikle, ki so se spremenili po navedenem trenutku.

Output

Rezultat klica je XML dokument. V primeru napake zgleda takole: <?xml version="1.0" encoding="UTF-8"?> <error code="123" shouldRetry="true"> There was an error ... </error>
element <error> Ta top-level element označuje, da je prišlo do napake. Vsebina elementa je opis napake.
atribut code="VZ002" Ta (neobvezen) atribut vsebuje kodo napake. Če je prisoten, naj bo seveda vedno enak za isti tip napake, in različen za različne tipe napak.
atribut shouldRetry="true|false" Ta (neobvezen) atribut sporoča, ali naj klicoči z operacijo poskusi znova kasneje (npr. ker začasno baza ni dostopna), ali ne (npr. ker je napaka v tem, da se poslani podatki ne skladajo s poslovno logiko sistema).
V primeru, da se klic izvede uspešno, pa rezultat vsebuje opis artiklov v sledeči obliki: <?xml version="1.0" encoding="UTF-8"?> <itemList> <item itemID="123" lastModified="2009-07-15T10:44:13.456Z" active="true"> <name>Logitech miška G9</name> <description format="html">Ta miška je &lt;b&gt;najboljša&lt;/b&gt; na svetu!</description> <stockAmount>50</stockAmount> <availability>12d</availability> <price rel="mpc" currency="EUR" includesTaxes="false">50.50</price> <price rel="dc" currency="EUR" includesTaxes="true">40.22</price> <price rel="dc" currency="EUR" includesTaxes="true" minQuantity="10">39.95</price> <price rel="dc" currency="EUR" includesTaxes="true" minQuantity="50">37.50</price> <discount rel="dc">12.0%</discount> <tax rel="vat">20%</tax> <taxClass taxClassID="tc123" /> <shippingDimensions> <dimension rel="width">123mm</dimension> <dimension rel="height">200mm</dimension> <dimension rel="depth">50mm</dimension> <dimension rel="weight">1.4kg</dimension> </shippingDimensions> <identifiers> <identifier rel="ean">1234567890123</identifier> <identifier rel="sku">ABC-2345</identifier> </identifiers> <classification rel="category"> <classifier clID="1"> <name>Komponente</name> </classifier> <classifier clID="61" showItem="true"> <name>Miške</name> </classifier> <classifier clID="141" showItem="true"> <name>Za igričarje</name> </classifier> </classification> <classification rel="brand"> <classifier clID="51"> <name>Logitech</name> </classifier> </classification> <images> <image> <url>http://www.example.com/images/Logitech_G9_1.jpg</url> </image> <image> <url>http://www.example.com/images/Logitech_G9_2.jpg</url> </image> </images> <warrantyInfo> <duration>24mon</duration> </warrantyInfo> <specifications> <specification specID="123" spType="choice" spName="Konektor"> <value choiceID="21">USB</value> </specification> <specification specID="234" spType="numeric" spName="Ločljivost" spUnit="DPI"> <value>4000</value> </specification> <specification specID="345" spType="boolean" spName="Brezžična"> <value>false</value> </specificiation> <specification specID="456" spType="text" spName="Priloženo"> <value>CD z gonilniki, uteži, torbica</value> <value lang="en">CD w/ drivers, weights, carrying bag</value> </specification> </specifications> </item> <item ...> ... </item> ... </itemList>
element <itemList> Ta top-level element označuje, da je bil klic uspešen in vsebuje podatke o vseh ujemajočih artiklih, vsakega znotraj svojega elementa <item> (razen teh mora biti <itemList> prazen).
element <item> Ta element vsebuje podatke o enem artiklu.
atribut itemID="151" Ta atribut vsebuje (numeričen) identifikator artikla. Za nek artikel se identifikator nikoli ne spremeni in isti identifikator se nikoli ne uporabi za drug artikel, četudi se prvi v celoti umakne.
atribut lastModified="2009-07-15T10:44:13.456Z" Ta atribut vsebuje čas zadnje spremembe podatkov tega artikla (v enaki obliki kot input parameter)
atribut active="true|false" Ta atribut vsebuje podatek o tem, ali naj se artikel prikaže v spletni trgovini ali ne.
element <name> Ta element vsebuje ime artikla (znotraj <item>) ali ime klasifikacije (znotraj <classifier>).
element <description> Ta element vsebuje opis artikla za obiskovalce spletnih strani.
atribut format="html|plaintext" Ta atribut pove, v kateri obliki je vsebina elementa <description>.
element <stockAmount> Ta element vsebuje količino tega izdelka, ki je trenutno na zalogi.
element <availability> Ta element vsebuje podatek o dobavljivosti artikla; trenutno je edina podprta oblika <x>d, ki pomeni x dni.
element <price> Ta element vsebuje eno od cen artikla. Cen je lahko več, ker se lahko razlikujejo po namembnosti (atribut rel) in minimalni količini (attribut minQuantity), za katero veljajo.
atribut rel="dc|mpc" Ta atribut pove namembnost cene. Vrednost je lahko poljubna, v nastavitvah Shopamina pa se nastavi, kako se uporabljajo. Npr. "dc" lahko pomeni B2B ceno za nadaljno prodajo, "mpc" pa B2C ceno za končne kupce.
atribut currency="EUR" Ta atribut pove v kateri valuti je cena navedena. Trenutno je edina podprta valuta Euro ("EUR").
atribut includesTaxes="true|false" Vrednost tega atributa pove, ali so v navedeni ceni davki že vključeni ali ne.
atribut minQuantity="10" Ta atribut pove, kolikšna je minimalna količina, za katero velja navedena cena. Če atribut manjka, je privzeta vrednost 0 (če drugih cen ni, torej taka cena velja za poljubno količino).
element <discount> Ta element vsebuje enega od popustov artikla. Popustov je lahko več.
atribut rel="dc|mpc" Ta atribut pove namembnost popusta. Vrednosti so načeloma lahko poljubne, v nastavitvah Shopamina pa se nastavi, kako se uporabljajo.
element <tax> Ta element vsebuje stopnjo enega davka, ki velja za ta artikel. Izključuje se z elementom <taxClass>.
atribut rel="vat" Ta atribut pove, za kateri davek gre; trenutno je edina podprta vrednost "vat", torej po slovensko DDV.
element <taxClass> Ta element določi davčni razred artikla. Izključuje se z elementom <tax>.
atribut taxClassID="..." Ta atribut pove šifro davčnega razreda artikla. Za uspešen prenos podatkov mora biti ta šifra vnešena v nastavitvah Shopamine-a.
element <shippingDimensions> Ta element vsebuje dimenzije artikla, kot naj se upoštevajo pri računanju poštnine.
element <dimension> Ta element vsebuje eno od dimenzij. Podprte enote za dolžinske mere so mm, cm in m, za težo pa g in kg.
atribut rel="width|height|depth|weight" Ta atribut pove, za katero dimenzijo gre. Veljavne vrednosti so naštete na levi.
element <identifiers> Ta element vsebuje označevalce artikla, npr. bar kodo.
element <identifier> Vsebina elementa poda en označevalec.
atribut rel="ean|sku" Ta atribut pove, za kateri označevalec gre. Prepoznani vrednosti sta navedeni, morebitne druge pa se trenutno ignorirajo.
element <classification> Ta element, ki je lahko prisoten večkrat, določi eno od klasifikacij artikla. Če gre za hierarhično oz. drevesno klasifikacijo, bo znotraj prisotnih več elementov <classifier>, začenši s korenom hierarhije. Če pa je klasifikacija ploščata, pa bo prisoten samo en <classifier>. Če je prisotnih več klasifikacij tipa category, se bo artikel pojavil v vseh navedenih kategorijah.
atribut rel="brand|category" Ta atribut pove, za katero klasifikacijo gre. Poleg naštetih dveh so lahko prisotne tudi druge, vendar bodo zaenkrat ignorirane
element <classifier> Ta element vsebuje podatke o enem nivoju hierarhične klasifikacije oz. vrednost pri ploščati klasifikaciji.
atribut clID="1" Ta atribut vsebuje (numeričen) identifikator vrednosti klasifikacije
atribut showItem="true" Ta atribut pove, ali naj se artikel v tej klasifikaciji prikaže in je zanimiv/upoštevan pri <classifier> elementih, ki niso zadnji znotraj enega <classification> (npr. če je nek televizor klasificiran v "Zabavna elektronika / televizorji / LCD / 100cm ali več", bo v tej kategoriji prikazan vedno; z uporabo showItem pa se ga lahko prikaže tudi v "Zabavna elektronika / televizorji / LCD", "Zabavna elektronika / televizorji" ali celo v vrhnji "Zabavna elektronika")
element <images> Ta element vsebuje seznam slik artikla. Prva slika se prikazuje v raznih seznamih izdelkov, ostale pa so vidne na strani artikla.
element <image> Ta element vsebuje podatke o eni sliki. Dimenzije slike so lahko največ 2560x1600, podprti formati so JPEG, PNG in GIF, največja velikost datoteke pa je 5MB.
element <url> Ta element vsebuje URL, na katerem se slika nahaja. Shopamine bo ob sinhronizaciji sliko skopiral k sebi.
element <warrantyInfo> Ta element vsebuje podatke o garanciji danega artikla. Trenutno je edini podprt podatek trajanje garancije.
element <duration> Ta element vsebuje podatek o trajanju garancije. Edina dovoljena enota je mon (mesec).

getUserInfo

Input

Funkcija getUserInfo ima samo en obvezen parameter: http://.../getUserInfo?user=mslenc@gmail.com
user Vsebuje e-poštni naslov uporabnika

Output

V primeru napake je le-ta vrnjena na enak način kot zgoraj. V primeru, da uporabnik ni prepoznan, se vrne prazen element <user>: <xml version="1.0" encoding="UTF-8"?> <user /> V primeru, da uporabnik je prepoznan, pa se vrne XML dokument naslednje oblike: <xml version="1.0" encoding="UTF-8"?> <user userType="org"> <name>Kupec d.o.o.</name> <identifier rel="si/davcna">SI12345678</identifier> <identifier rel="si/maticna">19515901</identifier> <email>mslenc@gmail.com</email> <address rel="primary"> <street>Celovška c. 179</street> <street>Pisarna 121</street> <postCode>1000</postCode> <city>Ljubljana</city> <country>SI</country> <phoneNumber rel="cell">041 211 677</phoneNumber> </address> <address rel="delivery"> <street>Dunajska 1</street> <postCode>1000</postCode> <city>Ljubljana</city> <country>SI</country> </address> </user>
element <user> Ta element je top-level element odgovora.
atribut userType="org|person|export|exportEU" Ta atribut pove, ali gre za fizično osebo (person), pravno osebo (org), osebo zunaj Slovenije znotraj EU (exportEU) ali osebo zunaj EU (export).
element <name> Ta element vsebuje ime pravne ali fizične osebe, kot naj se npr. izpiše na računu.
element <identifier> Ta element vsebuje identifikator pravne ali fizične osebe.
atribut rel="si/emso|si/davcna|si/maticna" Ta atribut pove, za kateri identifikator gre; trenutno prepoznani so našteti, neprepoznani pa bodo ignorirani.
element <email> Ta element vsebuje e-poštni naslov uporabnika.
element <address> Ta element vsebuje enega od naslovov te pravne ali fizične osebe. Atribut rel pove, za katerega od naslovov gre.
atribut rel="primary|delivery" Ta atribut pove, za katerega od naslovov gre. Vrednost primary označuje sedež podjetja oz. naslov fizične osebe, vrednost "delivery" označuje, da gre za naslov za dostavo (lahko jih je več), naslovi z drugimi vrednostmi pa bodo trenutno ignorirani.
element <street> Ta element vsebuje eno vrstico naslova (npr. ulico in hišno številko).
element <postCode> Ta element vsebuje poštno številko tega naslova.
element <city> Ta element vsebuje kraj tega naslova.
element <country> Ta element vsebuje dvočrkovno ISO kodo države tega naslova.
element <phoneNumber> Ta element vsebuje telefonsko številko, ki velja za ta naslov.
atribut rel="phone|cell|fax" Ta atribut pove, za kakšno telefonsko številko gre.

getUserPrices

Input

Funkcija getUserPrices ima dva parametra, ki sta oba obvezna. http://.../getUserPrices?user=mslenc@gmail.com&items=13:1,51:50
user Vsebuje e-poštni naslov uporabnika
items Vsebuje IDje artiklov (pridobljene prek atributa itemID) skupaj s količinami. Artikli so ločeni z vejicami, med IDjem in količino pa je dvopičje.

Output

V primeru napake je le-ta vrnjena na enak način kot zgoraj. V primeru, da uporabnik ni prepoznan, se lahko vrnejo cene, kot veljajo v splošnem ali pa se vrne prazen element <pricesInfo>. Sicer je pričakovan XML sledeče oblike: <xml version="1.0" encoding="UTF-8"?> <pricesInfo> <user userID="51"></user> <itemList> <item itemID="13"> <price currency="EUR" discountApplied="12%">50.50</price> </item> <item ...> ... </item> ... </itemList> </pricesInfo>
element <pricesInfo> Ta element je zgolj top-level element odgovora.
element <item> Vsebina je načeloma zapisana po istih pravilih, kot zgoraj, le da je precej okleščena - upoštevani bodo samo elementi in atributi navedeni v primeru.
element <price> Ta element vsebuje ceno za dani artikel in uporabnika. Navedena mora biti končna cena z vsemi popusti, a brez davkov.
atribut currency="EUR" Ta atribut pove valuto, v kateri je cena. Trenutno podpiramo samo EUR.
atribut discountApplied="12%" Ta (neobvezen) atribut pove, kolikšen je bil upoštevan popust pri tej ceni. Namenjen je zgolj prikazu.

createOrder

Input

Funkcija createOrder nima URL parametrov, v POST vsebini pa se pošlje XML sledeče oblike: <xml version="1.0" encoding="UTF-8"?> <orderInfo user="mslenc@gmail.com" storeOrderID="xy1251"> <address rel="primary"> <name>Mitja Šlenc</name> <orgName>Firma d.o.o.<orgName> <street>Dunajska 1</street> <postCode>1000</postCode> <city>Ljubljana</city> <country>SI</country> <taxCode>SI12345678</taxCode> </address> <address rel="delivery"> <name>Mitja Šlenc</name> <street>Dunajska 1</street> <postCode>1000</postCode> <city>Ljubljana</city> <country>SI</country> </address> <comment from="user">Prosim, če ...</comment> <comment from="system">Warning: ...</comment> <itemList> <item itemID="50" quantity="14"> <price currency="EUR" includesTaxes="true">50.50</price> </item> <item itemID="22" quantity="14"> <price currency="EUR" includesTaxes="true">199.95</price> </item> <item itemID="60" quantity="14"> <price currency="EUR" includesTaxes="true">0.22</price> </item> </itemList> <paymentInfo paymentTypeID="Z1"></paymentInfo> <shippingInfo shippingTypeID="FEDEX"></shippingInfo> </orderInfo>
element <orderInfo> To je vrhnji element naročila.
atribut user="mslenc@gmail.com" Ta atribut vsebuje e-poštni naslov kupca.
atribut storeOrderID="xy1251" Ta atribute vsebuje identifikator naročila v spletni trgovini. Identifikator bo za vsako naročilo drugačen.
element <address> Naslov je v enaki obliki kot zgoraj. Tisti z rel="primary" je naslov za račun, tisti z rel="delivery" pa naslov za dostavo. Za oba velja, da nista nujno prisotna - naslov za dostavo manjka, kadar je način dostave tak, da ga ne potrebuje (npr. osebni prevzem), naslov za račun pa manjka, kadar je vrednost naročila 0, torej ni potrebno izdati računa.
element <comment> Ta (neobvezen) element vsebuje morebitne opombe ob naročilu. Vsebina opombe je v tekstovni obliki.
atribut from="user|system" Ta (obvezen) atribut določa, kdo/kaj je vir opombe. Vrednost "user" pomeni, da je opombo vpisal kupec, vrednost "system" pa, da gre za opombo spletne trgovine same.
element <itemList> Ta element ima enak pomen kot zgoraj, le da bo vseboval le atribute in elemente, vidne v primeru.
element <paymentInfo> Ta element sporoča, za kateri način plačila se je odločil kupec. Vrednost bo načeloma ena izmed tistih, ki jih vrača klic getPaymentInfo.
atribut paymentTypeID="Z1" Ta atribut vsebuje identifikator načina plačila. Lahko se zgodi, da ni prisoten, kadar prodajalec za nek način plačila ni nastavil ustrezne vrednosti.
element <shippingInfo> Ta element sporoča, za kateri način dostave se je odločil kupec. Vrednost bo načeloma ena izmed tistih, ki jih vrača klic getShippingInfo.
atribut shippingTypeID="FEDEX" Ta atribut vsebuje identifikator načina dostave. Lahko se zgodi, da ni prisoten, kadar prodajalec za nek način dostave ni nastavil ustrezne vrednosti.

Output

V primeru napake je le-ta vrnjena na enak način kot zgoraj. Če se naročilo vnese uspešno, pa se kot rezultat pričakuje ID naročila in datum ob katerem je bilo vnešeno: <xml version="1.0" encoding="UTF-8"?> <orderInfo orderID="09-W60-001451" created="2009-07-17T21:46:22.515Z" />

getOrdersInfo

Input

Funkcija getOrdersInfo ima tri parametre, s katerimi se da omejiti prikaz. Za razliko od funkcije za artikle mora biti prisoten vsaj eden od parametrov: http://.../getOrdersInfo?ids=09-W60-001451,09-W60-001452&lastModified=2009-07-17T21:45:10.411Z&user=mslenc@gmail.com
ids Vsebuje seznam IDjev naročil, ločenih z vejicami; učinkuje tako, da omeji rezultat na navedene IDje.
lastModified Vsebuje datum v obliki "YYYY-MM-DDThh:mm:ss[.mil]Z" (ISO-8601) in UTC timezoneu; učinkuje tako, da omeji rezultat na naročila, ki so se spremenila po navedenem trenutku.
user Vsebuje e-poštni naslov uporabnika; učinkuje tako, da vrne samo naročila, ki pripadajo temu uporabniku.

Output

V primeru napake je le-ta vrnjena na enak način kot zgoraj. Če pa funkcija uspe, pa se vrnejo podatki o naročilih v pretežno enaki obliki, kot je uporabljena pri createOrder, le da ima element <orderInfo> nekaj atributov več: <xml version="1.0" encoding="UTF-8"?> <orderList> <orderInfo orderID="09-W60-001451" orderClosed="false" lastModified="2009-07-17T21:46:22.515Z" orderStatus="Z"> <address rel="delivery"> ... </address> <itemList> ... </itemList> ... </orderInfo> <orderInfo orderID="09-W60-001452" orderClosed="false" lastModified="2009-07-18T11:45:02.516Z"> ... </orderInfo> ... </orderList>
element <orderList> To je vrhnji element odgovora, ki vsebuje ustrezen seznam naročil.
element <orderInfo> To je vrhnji element enega naročila. Če so v njem prisotni elementi <address> ali <itemList> se smatra, da je prišlo do spremembe naročila, spremenjeni podatki pa bodo vidni kupcu v spletni trgovini (opomba: ta funkcionalnost še ne deluje)
atribut orderID="09-W60-211593" Ta atribut vsebuje identifikator naročila, kot ga je določil ERP sistem. Atribut je obvezen.
atribut orderClosed="true|false" Ta (obvezen) atribut pove, ali ERP sistem smatra naročilo za zaključeno ali ne. Ko za dano naročilo ERP sporoči, da je naročilo zaključeno, spletna trgovina po tem naročilu načeloma ne bo več povpraševala.
atribut lastModified="2010-08-31T21:35:94.591Z" Ta (obvezen) atribut pove čas zadnje spremembe naročila v ERP sistemu.
atribut orderStatus="Z" Ta atribut pove, v kakšnem stanju se nahajo naročilo.


getPaymentInfo

Input

Funkcija getPaymentInfo nima parametrov.

Output

Funkcija vrne seznam načinov plačila v naslednji obliki: <xml version="1.0" encoding="UTF-8"?> <paymentList> <paymentInfo paymentTypeID="Z1"> <name>Gotovina</name> </paymentInfo> <paymentInfo paymentTypeID="PO"> <name>Plačilo po povzetju</name> </paymentInfo> ... </paymentList>
element <paymentList> To je vrhnji element odgovora, ki vsebuje seznam načinov plačila.
element <paymentInfo> To je vrhnji element enega načina plačila.
atribut paymentTypeID="Z1" Ta atribut vsebuje identifikator načina plačila, kot je določen v ERP sistemu. Atribut je obvezen.
element <name> Ta element vsebuje ime načina plačila. Služi predvsem temu, da ima prodajalec možnost ustrezno nastaviti konfiguracijo načinov plačil v spletni trgovini.


getShippingInfo

Input

Funkcija getShippingInfo nima parametrov.

Output

Funkcija vrne seznam načinov dostave v naslednji obliki: <xml version="1.0" encoding="UTF-8"?> <shippingList> <shippingInfo shippingTypeID="O"> <name>Osebni prevzem</name> </shippingInfo> <shippingInfo shippingTypeID="FEDEX"> <name>FedEx</name> </shippingInfo> ... </shippingList>
element <shippingList> To je vrhnji element odgovora, ki vsebuje seznam načinov dostave.
element <shippingInfo> To je vrhnji element enega načina dostave.
atribut shippingTypeID="O" Ta atribut vsebuje identifikator načina dostave, kot je določen v ERP sistemu. Atribut je obvezen.
element <name> Ta element vsebuje ime načina dostave. Tudi ta služi predvsem temu, da ima prodajalec možnost ustrezno nastaviti konfiguracijo načinov dostave v spletni trgovini.


getOrderStatuses

Input

Funkcija getOrderStatuses nima parametrov.

Output

Funkcija vrne seznam možnih statusov naročila v naslednji obliki: <xml version="1.0" encoding="UTF-8"?> <orderStatusList> <orderType orderTypeID="5"> <name>V obdelavi</name> <finished>false</finished> </orderType> <orderType orderTypeID="Z"> <name>Zaključeno</name> <finished>true</finished> </orderType> ... </orderStatusList>
element <orderStatusList> To je vrhnji element odgovora, ki vsebuje seznam statusov naročila.
element <orderType> To je vrhnji element enega statusa naročila.
atribut orderTypeID="Z" Ta atribut vsebuje identifikator statusa naročila, kot je določen v ERP sistemu. Atribut je obvezen.
element <name> Ta element vsebuje ime statusa naročila. Tudi ta služi predvsem temu, da ima prodajalec možnost ustrezno nastaviti konfiguracijo statusov naročila v spletni trgovini.
element <finished> Ta element pove, ali dani status naročila pomeni, da je naročilo zaključeno (vsebina true) ali ne (vsebina false).


Zgodovina sprememb