Morffeus Docs
ENSR morffeus.com

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:

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.

PoljeOpis
idintegerNaš id magacina.
codestringVaša šifra magacina, jedinstvena u vašoj aplikaciji. Vrednost koju redovi zaliha šalju kao warehouse_code.
namestringNaziv magacina.
address_line_1, address_line_2stringAdresa. address_line_2 može biti null.
city, postcodestringGrad i poštanski broj.
market_idintegerNaš id tržišta kom magacin pripada.
defaultboolean · podrazumevano falsePodrazumevani magacin aplikacije. Aplikacija ima jedan. Porudžbine poslate preko POST /int/orders uzimaju stavke iz njega.
sellableboolean · podrazumevano trueDa 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 0Broj za vaš redosled.
descriptionstring · može biti nullSlobodan tekst.
app_idintegerVaša aplikacija.
updated_by_user_idinteger · može biti nullKorisnik koji je poslednji menjao magacin, kad ga znamo.
inserted_at, updated_atdatetime · ISO 8601, UTCKad je magacin napravljen i poslednji put izmenjen. Šalje se bez pomaka.

Pravljenje, izmena i brisanje magacina#

PUT /api/v2/warehouse

Š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

ParametarOpis
warehousesobaveznoniz objekataJedan unos po magacinu. Prazna lista ne radi ništa i vraća prazan data.
warehouses[].codejedno odstringVaša šifra. Uparuje postojeći magacin, ili postaje šifra novog.
warehouses[].idjedno odintegerNaš id, kad ga imate.
warehouses[].namestringObavezno za novi magacin.
warehouses[].address_line_1stringObavezno za novi magacin.
warehouses[].address_line_2stringOpciono.
warehouses[].citystringObavezno za novi magacin.
warehouses[].postcodestringObavezno za novi magacin.
warehouses[].market_idintegerObavezno za novi magacin. Naš id tržišta.
warehouses[].sellableboolean · podrazumevano truePogledajte objekat magacina.
warehouses[].defaultboolean · podrazumevano falsetrue č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 0Vaš redosled.
warehouses[].descriptionstringSlobodan tekst.
warehouses[].deletebooleantrue 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

StatusKada
400Telo zahteva nema ključ warehouses.
401Token nedostaje ili je opozvan. Pogledajte Autentifikaciju.
422Red 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.
PUT/warehouse
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()));
Odgovor200 OK
{
  "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", … }
  ]
}
Greška422 Unprocessable Entity
{
  "errors": {
    "Warehouses": ["API.Warehouses.NameCantBeBlank"]
  }
}

Lista magacina#

GET /api/v2/warehouses

Magacini vaše aplikacije, stranicu po stranicu. Koristite ga da nađete šifre i id-jeve koji su vam potrebni za zalihe.

Parametri upita

ParametarOpis
searchstringDeo naziva, šifre, adrese, grada ili poštanskog broja. Velika i mala slova nisu bitna, a % i _ se traže doslovno.
orderBystring · podrazumevano nazivPolje 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 0Koliko magacina da se preskoči.
limitinteger · podrazumevano 30Koliko 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.

GET/warehouses
curl "https://api.morffeus.com/api/v2/warehouses?orderBy=code&limit=100" \
  -H "Authorization: Bearer $MORFFEUS_TOKEN"
Odgovor200 OK
{
  "data": [
    {
      "id": 18,
      "code": "WH-BG",
      "name": "Belgrade",
      "sellable": false,
      …
    },
    {
      "id": 17,
      "code": "WH-NS",
      "name": "Novi Sad",
      "sellable": true,
      …
    }
  ]
}

Jedan po jedan magacin#

GET /api/v2/warehouses/{id}

Isti magacini, po našem id-ju. Koristite ih kad id već imate; za sinhronizaciju mnogih jednostavniji je PUT /warehouse.

PozivOpis
GET /warehouses/{id}Jedan objekat magacina u data.
POST /warehousesPravi 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

StatusKada
400Id nije broj, ili telo zahteva nema ključ warehouse.
404U vašoj aplikaciji nema magacina sa ovim id-jem. Telo je prazno.
422Polje 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.
PATCH/warehouses/{id}
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 } }'
Greška422 Unprocessable Entity
{
  "errors": {
    "address_line_1": ["can't be blank"],
    "city": ["can't be blank"],
    "postcode": ["can't be blank"],
    "market_id": ["can't be blank"]
  }
}
Poslednja izmena 1. oktobra 2026. · API v2 Nešto nije u redu na ovoj stranici?