Paginacija i filtriranje
Endpointi za liste vraćaju jednu po jednu stranicu. Stranicu birate sa offset i limit, a do kraja ste stigli kad stranica vrati manje redova nego što ste tražili. Liste ne kažu koliko redova ima ukupno.
Stranice#
limit je koliko redova želite, offset koliko da se preskoči. Druga stranica od po 100 je offset=100&limit=100.
Odgovor je stranica pod data i ništa više: nema ukupnog broja, broja stranica ni linka ka sledećoj. Nastavite da tražite sa većim offset dok stranica ne bude kraća od limit.
Svaka lista ima svoju podrazumevanu veličinu stranice, zato uvek šaljite limit. Idite kroz stranice stalnim redosledom: kad se zapisi menjaju dok čitate, red može da pređe sa jedne stranice na sledeću.
const limit = 100; const orders = []; for (let offset = 0; ; offset += limit) { const url = `https://api.morffeus.com/api/v2/orders` + `?orderBy=id&offset=${offset}&limit=${limit}`; const res = await fetch(url, { headers: { Authorization: `Bearer ${process.env.MORFFEUS_TOKEN}` } }); const { data } = await res.json(); orders.push(...data); if (data.length < limit) break; }
Liste#
| Endpoint | Stranice |
|---|---|
| GET /products | offset i limit, podrazumevano 10. Takođe pageNo i perPage: pageNo=3&perPage=20 je offset=40&limit=20. Proizvodi su u data.products; pogledajte Vaš prvi zahtev. |
| GET /orders | offset i limit, podrazumevano 30, najviše 10.000 po stranici. |
| GET /warehouses | offset i limit, podrazumevano 30. |
| GET /stocks | offset i limit, podrazumevano 30. |
Sortiranje#
| Endpoint | Kako sortirati |
|---|---|
| GET /orders | orderBy sa jednim poljem i, po želji, asc ili desc, na primer orderBy=order_date desc. Polja: id, order_number, order_date, invoice_number, sales, net_sales, discount, vat, paid, debt, customer_name. Samo polje sortira rastuće. Sve drugo se bez greške vraća na podrazumevano, od najnovijih. Redovi sa istom vrednošću ređaju se po id, od najnovijih. |
| GET /products | orderBy sa name, price (najniža cena proizvoda), inserted_at ili sales_quantity, a iza njega desc malim slovima za obrnuti redosled: orderBy=price desc. Više njih odvojite zarezom bez razmaka. Podrazumevano: po nazivu; uz search, prvo najbolja poklapanja. |
| GET /warehouses | Po nazivu. |
| GET /stocks | Po proizvodu. |
Filtriranje#
Filteri su parametri upita u camelCase obliku. Identifikatori su naši; šifre su vaše.
| Endpoint | Filteri |
|---|---|
| GET /products | search (nazivi proizvoda), searchAll (nazivi, šifre proizvoda i varijanti i barkodovi), code, barcode, slug, id, priceFrom, priceTo, onlyOnStock. Samo jedno od code, barcode, slug ili id vraća jedan proizvod. |
| GET /orders | search (broj porudžbine i računa, ime kupca, email i telefon), customerId, appLocationId, dateTimeFrom, dateTimeTo. |
| GET /stocks | warehouseId, productId, productVariantId. Pogledajte Zalihe. |
| GET /warehouses | search (naziv, šifra, adresa, grad i poštanski broj). |
Datumi#
Datume šaljite u ISO 8601 obliku, samo datum ili datum i vreme: 2026-09-01 ili 2026-09-01T14:30:00. Oba kraja su uključena. Sam datum znači ponoć na početku tog dana, pa se dateUntil=2026-09-30 završava kad 30. počinje; pošaljite 2026-09-30T23:59:59 da obuhvatite ceo dan.
- Porudžbine se filtriraju po datumu porudžbine sa
dateTimeFromidateTimeTo. Oba su opciona. - Kretanja zaliha se filtriraju po datumu kretanja sa
dateFromidateUntil. Oba su obavezna; bez njih poziv vraća400.
Povezano#
- Vaš prvi zahtev: poziv liste od praznog terminala.
- Zalihe: ukupne zalihe i pravila za njihovu izmenu.
- Greške: šta lista vraća kad parametar nije ispravan.