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:
- https://app.salebasis.eu/api/image?p=PREFIX_ORGANIZACJI&name=NAZWA_PLIKU_ZE_ZDJECIEM
- 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)
}