Magacini
Magacin je mesto na kom se drže zalihe. Svaki red zaliha pripada jednom magacinu, a vaši sistemi ga navode po njegovoj šifri. Magacine šaljete u paketu preko PUT /warehouse, ili njima upravljate jednim po jednim preko /warehouses/{id}.
Magacini i prodajne lokacije#
Magacin drži zalihe. Prodajna lokacija je mesto gde kupci kupuju, uživo ili onlajn. Lokacija prodaje iz magacina povezanih sa njom: onog koji je upisan na samoj lokaciji i svih koje sa njom povežete u Admin-u. Jedan magacin može da služi više lokacija.
Svaka aplikacija počinje sa podrazumevanim magacinom, šifre DefaultFor i id vaše aplikacije, i onlajn prodavnicom povezanom sa njim.
Kako se magacini uparuju#
Red u PUT /warehouse navodi magacin po code, po id, ili po oba:
- Sa
codetražimo tu šifru u vašoj aplikaciji. Said, taj id. Sa oba, magacin mora da ima oba. - Kad se magacin upari, red ga menja, ili ga briše kad red ima
delete: true. - Kad se ništa ne upari, red pravi novi magacin.
idkoji se ni sa čim ne upari ne postaje id novog magacina: dajemo mu sledeći.
Uvek pošaljite code ili id. Red bez oba se ne uparuje pouzdano i može da izmeni pogrešan magacin. Red sa delete: true koji se ni sa čim ne upari umesto toga pravi magacin, pa proverite šifru pre brisanja.
Magacin napravljen bez code dobija nasumičnu šifru od šest znakova. Sačuvajte šifru koju vratimo, ili još bolje, pošaljite svoju: nju PUT /int/stocks i usklađivanje šalju kao warehouse_code. Šifre su jedinstvene u vašoj aplikaciji. Nikad ne šaljite prazan code pri izmeni: prazna šifra se zamenjuje novom nasumičnom.
Objekat magacina#
Ono što vraća svaki endpoint za magacine.
| Polje | Opis |
|---|---|
| idinteger | Naš id magacina. |
| codestring | Vaša šifra magacina, jedinstvena u vašoj aplikaciji. Vrednost koju redovi zaliha šalju kao warehouse_code. |
| namestring | Naziv magacina. |
| address_line_1, address_line_2string | Adresa. address_line_2 može biti null. |
| city, postcodestring | Grad i poštanski broj. |
| market_idinteger | Naš id tržišta kom magacin pripada. |
| defaultboolean · podrazumevano false | Podrazumevani magacin aplikacije. Aplikacija ima jedan. Porudžbine poslate preko POST /int/orders uzimaju stavke iz njega. |
| sellableboolean · podrazumevano true | Da li prodavnice povezane sa ovim magacinom prodaju i rezervišu njegove zalihe. Zalihe magacina sa false i dalje ulaze u zbirove GET /stocks/aggregate. |
| ordinalinteger · podrazumevano 0 | Broj za vaš redosled. |
| descriptionstring · može biti null | Slobodan tekst. |
| app_idinteger | Vaša aplikacija. |
| updated_by_user_idinteger · može biti null | Korisnik koji je poslednji menjao magacin, kad ga znamo. |
| inserted_at, updated_atdatetime · ISO 8601, UTC | Kad je magacin napravljen i poslednji put izmenjen. Šalje se bez pomaka. |
Pravljenje, izmena i brisanje magacina#
Šalje vaše magacine u jednom pozivu. Svaki red se uparuje po code ili id, pa se pravi, menja ili briše. Izmena menja samo polja koja pošaljete. Magacini koje izostavite ostaju netaknuti.
Poziv prolazi ceo ili nikako. Ako jedan red ne prođe, nijedan red se ne upisuje, a odgovor navodi prvu grešku.
Parametri tela zahteva
| Parametar | Opis |
|---|---|
| warehousesobaveznoniz objekata | Jedan unos po magacinu. Prazna lista ne radi ništa i vraća prazan data. |
| warehouses[].codejedno odstring | Vaša šifra. Uparuje postojeći magacin, ili postaje šifra novog. |
| warehouses[].idjedno odinteger | Naš id, kad ga imate. |
| warehouses[].namestring | Obavezno za novi magacin. |
| warehouses[].address_line_1string | Obavezno za novi magacin. |
| warehouses[].address_line_2string | Opciono. |
| warehouses[].citystring | Obavezno za novi magacin. |
| warehouses[].postcodestring | Obavezno za novi magacin. |
| warehouses[].market_idinteger | Obavezno za novi magacin. Naš id tržišta. |
| warehouses[].sellableboolean · podrazumevano true | Pogledajte objekat magacina. |
| warehouses[].defaultboolean · podrazumevano false | true čini ovaj magacin podrazumevanim za aplikaciju, a prethodni to prestaje da bude. Da biste promenili podrazumevani, postavite true na novi; samo false to ne radi. |
| warehouses[].ordinalinteger · podrazumevano 0 | Vaš redosled. |
| warehouses[].descriptionstring | Slobodan tekst. |
| warehouses[].deleteboolean | true briše upareni magacin. Magacin koji ima zalihe, kretanja zaliha ili porudžbine ne može da se obriše; umesto toga postavite sellable na false. |
Tekstualna polja šaljite do 255 znakova, a default, sellable i ordinal radije izostavite nego da šaljete null.
Vraća
data: objekte magacina onako kako su upisani, redom kojim ste ih poslali. Obrisani magacin se vraća kakav je bio pre brisanja.
Greške
| Status | Kada |
|---|---|
| 400 | Telo zahteva nema ključ warehouses. |
| 401 | Token nedostaje ili je opozvan. Pogledajte Autentifikaciju. |
| 422 | Red nije ispravan, na primer novi magacin bez naziva. Ništa se ne upisuje. Poruka navodi polje: API.Warehouses.NameCantBeBlank, API.Warehouses.CityCantBeBlank, API.Warehouses.MarketIdDoesNotExist, API.Warehouses.CodeAlreadyExists. |
curl -X PUT "https://api.morffeus.com/api/v2/warehouse" \ -H "Authorization: Bearer $MORFFEUS_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "warehouses": [ { "code": "WH-NS", "name": "Novi Sad", "address_line_1": "Bulevar oslobođenja 10", "city": "Novi Sad", "postcode": "21000", "market_id": 1 }, { "code": "WH-BG", "sellable": false }, { "code": "WH-OLD", "delete": true } ] }'
const res = await fetch('https://api.morffeus.com/api/v2/warehouse', { method: 'PUT', headers: { Authorization: `Bearer ${process.env.MORFFEUS_TOKEN}`, 'Content-Type': 'application/json', }, body: JSON.stringify({ warehouses: [ { code: 'WH-NS', name: 'Novi Sad', address_line_1: 'Bulevar oslobođenja 10', city: 'Novi Sad', postcode: '21000', market_id: 1, }, { code: 'WH-BG', sellable: false }, { code: 'WH-OLD', delete: true }, ], }), }); if (!res.ok) throw new Error(JSON.stringify(await res.json()));
{
"data": [
{
"id": 17,
"code": "WH-NS",
"name": "Novi Sad",
"address_line_1": "Bulevar oslobođenja 10",
"address_line_2": null,
"city": "Novi Sad",
"postcode": "21000",
"market_id": 1,
"default": false,
"sellable": true,
"ordinal": 0,
"description": null,
"app_id": 12,
"updated_by_user_id": null,
"inserted_at": "2026-10-01T08:15:02",
"updated_at": "2026-10-01T08:15:02"
},
{ "id": 18, "code": "WH-BG", "sellable": false, … },
{ "id": 9, "code": "WH-OLD", … }
]
}
{
"errors": {
"Warehouses": ["API.Warehouses.NameCantBeBlank"]
}
}
Lista magacina#
Magacini vaše aplikacije, stranicu po stranicu. Koristite ga da nađete šifre i id-jeve koji su vam potrebni za zalihe.
Parametri upita
| Parametar | Opis |
|---|---|
| searchstring | Deo naziva, šifre, adrese, grada ili poštanskog broja. Velika i mala slova nisu bitna, a % i _ se traže doslovno. |
| orderBystring · podrazumevano naziv | Polje objekta magacina, po želji sa asc ili desc iza njega, na primer orderBy=code desc. Vrednost koju ne možemo da iskoristimo vraća se na podrazumevanu. |
| offsetinteger · podrazumevano 0 | Koliko magacina da se preskoči. |
| limitinteger · podrazumevano 30 | Koliko da se vrati. Pogledajte Paginaciju i filtriranje. |
Vraća
data: listu objekata magacina. Ukupnog broja nema: kad stranica stigne kraća od limit, poslednja je.
curl "https://api.morffeus.com/api/v2/warehouses?orderBy=code&limit=100" \ -H "Authorization: Bearer $MORFFEUS_TOKEN"
{
"data": [
{
"id": 18,
"code": "WH-BG",
"name": "Belgrade",
"sellable": false,
…
},
{
"id": 17,
"code": "WH-NS",
"name": "Novi Sad",
"sellable": true,
…
}
]
}
Jedan po jedan magacin#
Isti magacini, po našem id-ju. Koristite ih kad id već imate; za sinhronizaciju mnogih jednostavniji je PUT /warehouse.
| Poziv | Opis |
|---|---|
| GET /warehouses/{id} | Jedan objekat magacina u data. |
| POST /warehouses | Pravi jedan magacin iz {"warehouse": {…}}, sa poljima iz PUT /warehouse. Vraća 201 i novi magacin. |
| PUT /warehouses/{id}, PATCH /warehouses/{id} | Menja polja koja pošaljete u {"warehouse": {…}}. Oba glagola rade isto. |
| DELETE /warehouses/{id} | Briše magacin i vraća 204 bez tela. Magacin koji ima zalihe, kretanja zaliha ili porudžbine ne može da se obriše. |
Greške
| Status | Kada |
|---|---|
| 400 | Id nije broj, ili telo zahteva nema ključ warehouse. |
| 404 | U vašoj aplikaciji nema magacina sa ovim id-jem. Telo je prazno. |
| 422 | Polje nedostaje ili nije ispravno. Svako polje navodi svoje greške, na primer {"errors": {"city": ["can't be blank"]}}. Zauzeta šifra se prijavljuje pod app_id: API.Warehouses.CodeAlreadyExists. |
curl -X PATCH "https://api.morffeus.com/api/v2/warehouses/18" \ -H "Authorization: Bearer $MORFFEUS_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "warehouse": { "sellable": true } }'
{
"errors": {
"address_line_1": ["can't be blank"],
"city": ["can't be blank"],
"postcode": ["can't be blank"],
"market_id": ["can't be blank"]
}
}
Povezano#
- Zalihe: količine po varijanti po magacinu, navedene preko
warehouse_code. - Lokacije: prodavnice koje prodaju iz vaših magacina.
- Identifikatori i uparivanje: šifre, id-jevi i vaše sopstvene reference kroz ceo API.