Towary

Struktura danych JSON
Obiekt Item
  • id(readonly) ID w bazie danych
  • created – (readonly) data utworzenia towaru
  • createdUserId – (readonly) ID usera który utworzył towar
  • lastChanged(readonly) data ostatniej zmiany w towarze
  • lastChangedPhotos(readonly) data ostatniej zmiany zdjęć w towarze
  • lastChangedUserId(readonly) ID usera który dokonał ostatniej zmiany
  • code – kod wewnętrzny towaru
  • gtin – numer GTIN (lub null gdy brak)
  • name – nazwa towaru
  • price – cena brutto towaru
  • vat – stawka VAT %
  • countWare – ilość w magazynie
  • countOffer – ilość w ofercie (lub null gdy brak odrębnego stanu ofertowego)
  • itemStatus – obiekt statusu towaru
  • externalData – obiekt JSON z danymi zewnętrznymi (lub null gdy dane zewnętrzne nie występują)
    • code – kod zewnętrzny
    • url – link do towaru zewnętrznego (może się zdarzyć że ma wartość null)
    • price – cena towaru zewnętrznego (może się zdarzyć że ma wartość null)
    • customMargin – własna marża % (lub null gdy brak)
  • deliveryPriceList – obiekt cennika dostaw
  • itemGroup – obiekt grupy towarów
  • category – obiekt kategorii
  • place – obiekt miejsca w magazynie
  • description – opis
  • photos – tablica zdjęć (zawiera nazwy plików ze zdjęciami)
  • additionalDescs – tablica opisów dodatkowych (zawiera obiekty opisów dodatkowych)
  • params – tablica parametrów – zawiera obiekty JSON ItemParameter
Obiekt ItemParameter
  • paramId – ID parametru
  • paramName(readonly) nazwa parametru
  • values – tablica wartości (wszystkie wartości zapisywane są jako String)
Ścieżki do zdjęć można uzyskać na dwa sposoby:
  1. https://app.salebasis.eu/api/image?p=PREFIX_ORGANIZACJI&name=NAZWA_PLIKU_ZE_ZDJECIEM
  2. https://app.salebasis.eu/api/image/PREFIX_ORGANIZACJI/NAZWA_PLIKU_ZE_ZDJECIEM

Wyszukiwanie towarów

GET

/items

Parametry w ścieżce zapytania (wszystkie są opcjonalne)
  • perPage – ilość na stronę. Domyślnie 100, max 1000
  • page – strona. Domyślnie 1
  • catId – ID kategorii (wyszukane zostaną też towary w podkategoriach)
  • placeId – ID miejsca w magazynie (zostaną też wyszukane w miejscach podrzędnych do podanego)
  • statusId – ID statusu towaru
  • groupId – ID grupy towarów
  • name – nazwa towaru
  • code – początek kodu wewnętrznego
  • extCode – początek kodu zewnętrznego
  • gtin – początek GTIN
  • priceFrom – cena od
  • priceTo – cena do
  • sort – sortowanie, enum: CODE, NAME, PRICE_A, PRICE_D, COUNT_A, COUNT_D. Domyślnie CODE
Odpowiedź JSON - zawiera tablicę obiektów zawierających prawie takie same dane jak obiekt Item (niżej opisane różnice)
{
    "items": [        //tablica towarów
        ...
    ],
"perPage": 100, //ilość towarów na stronę
"count": 2345 //ilość wszystkich znalezionych towarów }

W tym wypadku pola: description, photos, additionalDescs, params nie są przekazywane w odpowiedzi!

Dostępne są następujące dodatkowe dane:
  • itemSummary – obiekt JSON z danymi:
    • countPhotos – ilość zdjęć
    • countAdditionalDescs – ilość opisów dodatkowych
    • countParams – ilość parametrów

Pobieranie towaru

GET

/items

Parametry w ścieżce zapytania
  • id – ID towaru
  • lub: fullgtin – pełny GTIN
  • lub: fullcode – pełny kod wewnętrzny towaru
  • lub: scanbarcode – zeskanowany kod – może to być kod GTIN, kod wewnętrzny albo wydrukowany kod typu IT_kodwewnetrzny
/items?id=3
Odpowiedź JSON
{
"id":3,
"created":"2022-02-22T09:34:07Z",
"createdUserId":1,
"lastChanged":"2022-07-08T14:33:27Z",
"lastChangedPhotos":"2022-05-10T14:25:23Z",
"lastChangedUserId":1,
"code":"C101",
"gtin":"2000509133658",
"name":"Kondensator 100nF SMD 100szt",
"price":97.5,
"vat":23,
"countWare":14,
"countOffer":null,
"itemStatus":{
"id":1,
"name":"OK",
"color":"4e9a06"
},
"externalData":{
"code":"KOD ZEWN",
"url":"https://...",
"price":88,
"customMargin":null
},
"deliveryPriceList":{
"id":1,
"name":"Standard elektronika"
},
"itemGroup":{
"id":1,
"name":"Elektronika magazyn"
},
"category":{
"id":4,
"parentId":2,
"number":"1120",
"name":"Kondensatory",
"fullNumber":"1000-1100-1120",
"fullName":"Elektronika->Elementy bierne->Kondensatory"
},
"place":{
"id":11,
"parentId":6,
"number":"2",
"name":"C-SMD",
"fullNumber":"B-2-2",
"fullName":"Pomieszczenie 2->Regał kondensatory->C-SMD"
},
"description":"100szt SMD",
"photos":[
"1652192711638_e68b209e-dfa5-4430-a9e1-5ac9e0cb24a7.jpg",
"1652192711639_dbfe8db4-1c32-4788-9b32-f324e7c8cc6d.jpg",
"1652192694351_60ca3851-c51b-463a-830a-d383e799c7d7.jpg"
],
"additionalDescs":[
{
"id":1,
"name":"Opis1",
"description":"abec"
},
{
"id":2,
"name":"Opis z kodem zewn",
"description":"Kod towaru: {{code}}"
}
],
"params":[
{
"paramId":1,
"paramName":"Montaż",
"values":[
"SMD"
]
},
{
"paramId":3,
"paramName":"Generowany EAN",
"values":[
"2000952405555"
]
}
]
}

Dodawanie towaru

POST

/items

Dane JSON w zapytaniu (body)

Należy przekazać obiekt Item. Pola readonly są pomijane, nie trzeba ich przekazywać.

W polach z referencjami do obiektów zewnętrznych (na przykład status towaru) nie trzeba przekazywać wszystkich danych – wystarczy przekazanie samego ID.
{
    .....
    "itemStatus":{
        "id":1,
    },
    .....
}
Dane odpowiedzi JSON

W odpowiedzi zwrócony zostanie nowo utworzony obiekt Item zawierający ID.

Edycja towaru

PUT

/items

Dane JSON w zapytaniu (body)

Należy przekazać obiekt Item do edycji. Pole ID należy przekazać, reszta pól readonly jest ignorowana.

W polach z referencjami do obiektów zewnętrznych (na przykład status towaru) nie trzeba przekazywać wszystkich danych – wystarczy przekazanie samego ID.
{
    .....
    "itemStatus":{
        "id":1,
    },
    .....
}
Dane które można pominąć (nie przekazywać tych pól w obiekcie JSON):
  • photos – pominięcie spowoduje brak edycji zdjęć
  • additionalDescs – pominięcie spowoduje brak edycji opisów dodatkowych
  • params – pominięcie spowoduje brak edycji parametrów
Dane odpowiedzi JSON

W odpowiedzi zwrócony zostanie obiekt Item.

Usuwanie towaru

DELETE

/items

Parametry w ścieżce zapytania
  • id – ID towaru do usunięcia
/items?id=1
Odpowiedź - 204 No Content

Upload zdjęć

POST

/upload_image

W zapytaniu należy przesłać obrazek jako zwykłe dane binarne.

Wgrane zdjęcie, które przez 12 godzin nie zostanie dodane do jakiegoś towaru zostanie usunięte z serwera.

Odpowiedź JSON:
{
"prefix": "xxxxx", //prefix organizacji
"filename": "nazwapliku.jpg" //nazwa pliku (tą nazwę można wstawić do towarów)
}