Morffeus Docs
ENSR morffeus.com

Greške

Kad poziv ne uspe, HTTP status vam kaže o kakvom problemu je reč, a telo gde je. Prvo pročitajte status: to je jedino što ima svaka greška. Izuzetak su endpointi za pakete, jer neuspele redove prijavljuju unutar odgovora 200.

Statusni kodovi#

StatusŠta znači
200Urađeno. Na endpointima za pakete i kad neki redovi ne uspeju; pogledajte Neuspesi unutar 200.
201Kreirano, na primer preko POST /customers i POST /warehouses. POST /int/cards vraća 201 i kad je kartica već postojala.
204Obrisano. Tela nema.
400Zahtev nismo mogli da pročitamo: telo nije ispravan JSON, nedostaje ključ najvišeg nivoa koji endpoint očekuje (stocks na PUT /int/stocks), nedostaje obavezan parametar upita, ili vrednost ima pogrešan tip.
401Token nedostaje, neispravan je, istekao je ili je opozvan. Pogledajte Autentifikacija.
404Putanja ne postoji, ili zapis nije u vašoj aplikaciji.
406Vaše zaglavlje Accept isključuje JSON. Pošaljite application/json ili izostavite zaglavlje.
413Telo zahteva je veće od onoga što primamo. Podelite paket.
422Zahtev smo pročitali i odbili: polje nije prošlo validaciju, ili ga je odbilo neko pravilo, na primer porudžbina koja već postoji.
500Nešto nije uspelo na našoj strani. Pogledajte Kada ponoviti poziv.

Telo greške#

Većina grešaka stiže kao objekat errors. Svaki ključ imenuje gde je problem, a svaka vrednost je lista poruka:

  • Naziv polja, na primer city, kad polje objekta koji ste poslali nije prošlo validaciju.
  • Oblast, na primer Warehouses, uzeta iz ključa poruke: API.Warehouses.NotFound ide pod Warehouses.
  • message, kad poruka nema oblast.

Neki odgovori odstupaju od tog oblika:

  • 401: errors.token sadrži jedan string, ne listu.
  • 400, 406, 413 i neki 500 koji nastanu pre nego što zahtev stigne do endpointa: {"errors": {"detail": "Bad Request"}} sa tekstom statusa.
  • Nekoliko grešaka pravila: {"error": "<message>"}, u jednini.
  • 404: nepoznata putanja vraća []; zapis koji ne postoji može vratiti prazno telo.
  • 500 iz endpointa: {"message": "An unexpected error occurred."}.

Neki odgovori sa greškom šalju se bez zaglavlja Content-Type. Telo čitajte kao JSON bez obzira na zaglavlje.

Greška404 Not Found
{
  "errors": {
    "Warehouses": ["API.Warehouses.NotFound"]
  }
}
Greška422 Unprocessable
{
  "error": "API.Order.OrderAlreadyExists"
}
Greška400 Bad Request
{
  "errors": {
    "detail": "Bad Request"
  }
}

Poruke#

Poruke su ključevi kao API.Warehouses.NotFound ili API.Order.AppLocationNotFound: API, oblast, pa šta nije u redu. Kad vaša aplikacija ima prevod ključa na jezik vašeg tokena, dobijate prevod umesto ključa. Validacija jednog objekta odgovara običnim tekstom pravila, na primer can't be blank.

Odlučujte po statusu i ključu, ne po tekstu poruke. Ista greška može stići kao ključ ili kao prevedena rečenica, zavisno od prevoda vaše aplikacije i jezika vašeg tokena. Zapišite celo telo: to nam treba kad nam se obratite.

Greške validacije#

Kad kreirate ili menjate jedan objekat, svako polje koje ne prođe vraća se pod svojim imenom, sa pravilima koja je prekršilo. Magacin bez adrese, grada, poštanskog broja i tržišta odgovara kao u prvom primeru.

Upisi paketa prijavljuju samo prvi neuspeh svake stavke, kao jedan ključ koji imenuje oblast, polje i pravilo. Magacin bez naziva, poslat preko PUT /warehouse, odgovara kao u drugom primeru. Ispravite ga i pošaljite ponovo da vidite sledeći.

Kad vrednost ima pogrešan tip, neki endpointi dodaju listu fields koja imenuje svako polje, tip koji smo očekivali i šta smo dobili.

POST/warehouses422
{
  "errors": {
    "address_line_1": ["can't be blank"],
    "city": ["can't be blank"],
    "postcode": ["can't be blank"],
    "market_id": ["can't be blank"]
  }
}
PUT/warehouse422
{
  "errors": {
    "Warehouses": ["API.Warehouses.NameCantBeBlank"]
  }
}
Pogrešan tip422
{
  "errors": {
    "Utils": ["API.Utils.WrongDataType"],
    "fields": [
      {
        "field": "email",
        "expected_type": "string",
        "received_type": "integer",
        "received_value": 5
      }
    ]
  }
}

Neuspesi unutar 200#

Endpointi koji primaju listu upisuju šta mogu i kažu vam šta nisu mogli. Status je 200 u oba slučaja, zato uvek pročitajte listu neuspeha:

EndpointGde su neuspesi
PUT /int/stocksdata.failed: red koji ste poslali u input, razlog u error.message. Pogledajte Zalihe.
POST /stock/reconciledata.failed: stavka koju ste poslali u product, razlog u error. Pogledajte Zalihe.

Pretraga koja ništa ne nađe takođe može vratiti 200: GET /products sa samo jednim code, barcode, slug ili id vraća {"data": {}}.

Kada ponoviti poziv#

Poslednja izmena 1. oktobra 2026. · API v2 Nešto nije u redu na ovoj stranici?