Šta uraditi
- Logiku temeljite na HTTP statusu i error.code, a ne na tekstu error.message.
- Status 401 zahteva valjanu autentifikaciju; 403 zahteva promenu pristupa ili plana; 409 zahteva proveru operacije u sukobu ili verzije resursa.
Odbijen pristup i ponovni pokušaji
- 401
- 401 ne znači uvek da je token istekao. Ako je istekao, preuzmite novi i ponovite čitanje najviše jednom. Ako preuzimanje tokena vrati 401, proverite ključ i zaustavite automatske pokušaje.
- 403
- Za 403 proverite dozvole, IP ograničenja i plan. Novi token ne vraća opozvani pristup.
Pravila ponavljanja
- Za privremene greške koristite ograničen broj ponavljanja s rastućim i nasumičnim razmakom.
- Poštujte Retry-After kada je naveden.
- Ako upis prekorači vreme čekanja, njegov ishod može biti nepoznat: pri ponavljanju iste logičke operacije zadržite isti Idempotency-Key i nepromenjen zahtev.
- Katalog u nastavku objašnjava svaki objavljeni kod greške.
422 / 409
- Za cene neispravan format valute ili preciznost iznosa vraćaju 422 request.validation_failed.
- Važeći kod valute koji ne odgovara izabranom cenovniku vraća 409 resource.version_conflict.
- Pre ponovnog pokušaja proverite kontekst i verzije.
Katalog grešaka
400request.malformedZahtev se ne može parsirati.
- Šta uraditi
- Proverite JSON sintaksu, kodiranje URL-a i strukturu zahteva.
- Pravila ponavljanja
- Ponovite nakon ispravka zahteva.
{
"error": {
"code": "request.malformed",
"fields": null,
"message": "The request could not be read."
},
"meta": {
"request_id": "example-request"
}
}
401authentication.invalid_credentialsAPI ključ ili pristupni token nije valjan, istekao je ili je opozvan.
- Šta uraditi
- Proverite URL prodavnice i akreditiv. Dohvatite novi token aktivnim API ključem.
- Pravila ponavljanja
- Ponovite nakon ispravka autentifikacije; izbegavajte ponavljane nevaljane zahteve za token.
{
"error": {
"code": "authentication.invalid_credentials",
"fields": null,
"message": "The credentials are invalid."
},
"meta": {
"request_id": "example-request"
}
}
401authentication.requiredNedostaje obavezno zaglavlje Authorization ili njegova šema nije ispravna.
- Šta uraditi
- Koristite ApiKey pri traženju tokena i Bearer za operacije s resursima.
- Pravila ponavljanja
- Ponovite nakon slanja ispravnog zaglavlja.
{
"error": {
"code": "authentication.required",
"fields": null,
"message": "Authentication is required."
},
"meta": {
"request_id": "example-request"
}
}
403authorization.client_ip_unverifiedUsluga nije mogla pouzdano utvrditi IP adresu klijenta.
- Šta uraditi
- Zatražite od operatera prodavnice da proveri ulaznu putanju. Nemojte sami dodavati zaglavlja za prosleđivanje.
- Pravila ponavljanja
- Ponovite nakon obnove pouzdane putanje veze.
{
"error": {
"code": "authorization.client_ip_unverified",
"fields": null,
"message": "The client IP address could not be verified."
},
"meta": {
"request_id": "example-request"
}
}
403authorization.ip_not_allowedIzvorna IP adresa nije na spisku dozvoljenih adresa ključa.
- Šta uraditi
- Koristite odobrenu izvornu adresu ili zatražite od ovlašćenog administratora da uredi IP spisak ključa.
- Pravila ponavljanja
- Ponovite tek nakon što adresa bude dozvoljena.
{
"error": {
"code": "authorization.ip_not_allowed",
"fields": null,
"message": "Access from this IP address is not allowed."
},
"meta": {
"request_id": "example-request"
}
}
403authorization.scope_deniedKljuč nema važeće ovlašćenje potrebno za ovu operaciju.
- Šta uraditi
- Proverite obavezna i uslovna ovlašćenja operacije, ovlašćenja ključa i pristup izdavaoca.
- Pravila ponavljanja
- Ponovite nakon što ovlašćeni administrator dodeli potreban pristup.
{
"error": {
"code": "authorization.scope_denied",
"fields": null,
"message": "The required permission has not been granted."
},
"meta": {
"request_id": "example-request"
}
}
403entitlements.api_disabledAPI pristup isključen je za ovu prodavnicu.
- Šta uraditi
- Zatražite od vlasnika prodavnice da proveri aktivni plan i dostupnost API-ja.
- Pravila ponavljanja
- Ne ponavljajte dok se API pristup ne uključi.
{
"error": {
"code": "entitlements.api_disabled",
"fields": null,
"message": "API access is disabled for this store."
},
"meta": {
"request_id": "example-request"
}
}
403entitlements.limit_exceededPromena bi prekoračila ograničenje trenutnog plana.
- Šta uraditi
- Proverite primenjivo ograničenje resursa i prilagodite željenu promenu ili plan.
- Pravila ponavljanja
- Ponovite nakon rešavanja ograničenja; ako se zahtev promeni, koristite novi ključ idempotentnosti.
{
"error": {
"code": "entitlements.limit_exceeded",
"fields": null,
"message": "The operation exceeds a plan limit."
},
"meta": {
"request_id": "example-request"
}
}
403entitlements.operation_disabledTrenutni plan ne uključuje ovu operaciju.
- Šta uraditi
- Proverite minimalni plan naveden za operaciju.
- Pravila ponavljanja
- Ponovite nakon što plan dozvoljava operaciju i ključ ima potrebna ovlašćenja.
{
"error": {
"code": "entitlements.operation_disabled",
"fields": null,
"message": "The current plan does not allow this operation."
},
"meta": {
"request_id": "example-request"
}
}
403entitlements.resource_blockedOgraničenje plana blokira ovaj resurs.
- Šta uraditi
- Zatražite od vlasnika da reši ograničenje plana za taj resurs.
- Pravila ponavljanja
- Ne ponavljajte isti zahtev dok je resurs blokiran.
{
"error": {
"code": "entitlements.resource_blocked",
"fields": null,
"message": "A plan limit blocks access to this resource."
},
"meta": {
"request_id": "example-request"
}
}
404resource.not_foundResurs ne postoji, izbrisan je ili nije dostupan pod navedenim identifikatorom.
- Šta uraditi
- Proverite prodavnicu, putanju resursa i identifikator. Koristite identifikatore koje je vratila ova prodavnica.
- Pravila ponavljanja
- Ponovite tek nakon ispravka cilja ili potvrde da postoji.
{
"error": {
"code": "resource.not_found",
"fields": null,
"message": "The resource was not found."
},
"meta": {
"request_id": "example-request"
}
}
405request.method_not_allowedKrajnja tačka ne podržava ovu HTTP metodu.
- Šta uraditi
- Koristite dokumentovanu metodu; zaglavlje Allow navodi podržane metode.
- Pravila ponavljanja
- Ne ponavljajte nepodržanu metodu.
{
"error": {
"code": "request.method_not_allowed",
"fields": null,
"message": "This method is not supported for this resource."
},
"meta": {
"request_id": "example-request"
}
}
409idempotency.key_reusedOvaj ključ idempotentnosti pripada drugom zahtevu.
- Šta uraditi
- Pronađite izvornu operaciju. Koristite novi ključ samo za namerno novu logičku operaciju.
- Pravila ponavljanja
- Ne ponavljajte promenjene podatke s ključem koji izaziva sukob.
{
"error": {
"code": "idempotency.key_reused",
"fields": null,
"message": "This idempotency key was used with a different request."
},
"meta": {
"request_id": "example-request"
}
}
409resource.already_existsJedinstvena vrednost u sukobu je s postojećim resursom.
- Šta uraditi
- Pročitajte postojeći resurs i odlučite hoćete li ga koristiti ili odabrati drugu jedinstvenu vrednost.
- Pravila ponavljanja
- Ne ponavljajte isto kreiranje koje izaziva sukob.
{
"error": {
"code": "resource.already_exists",
"fields": null,
"message": "A resource with these unique values already exists."
},
"meta": {
"request_id": "example-request"
}
}
409resource.in_useDrugi resursi i dalje zavise o ovom resursu.
- Šta uraditi
- Pregledajte zavisnosti i uklonite ih ili promenite podržanim operacijama pre brisanja.
- Pravila ponavljanja
- Ponovite nakon rešavanja zavisnosti.
{
"error": {
"code": "resource.in_use",
"fields": null,
"message": "The resource is still in use."
},
"meta": {
"request_id": "example-request"
}
}
409resource.state_conflictTrenutno poslovno stanje sprečava ovu promenu.
- Šta uraditi
- Pročitajte trenutno stanje i odaberite valjan poslovni prelaz.
- Pravila ponavljanja
- Nemojte automatski nametati ni opetovano slati promenu koja izaziva sukob.
{
"error": {
"code": "resource.state_conflict",
"fields": null,
"message": "The current resource state does not allow this operation."
},
"meta": {
"request_id": "example-request"
}
}
409resource.version_conflictDrugi upis promenio je resurs nakon verzije koju ste pročitali.
- Šta uraditi
- Pročitajte najnovije stanje, uskladite promenu i pošaljite novu expected_version.
- Pravila ponavljanja
- Koristite novi ključ idempotentnosti za izmenjenu operaciju; nemojte naslepo prepisivati podatke.
{
"error": {
"code": "resource.version_conflict",
"fields": null,
"message": "The resource version has changed."
},
"meta": {
"request_id": "example-request"
}
}
413request.too_largeZahtev prekoračuje ograničenje veličine.
- Šta uraditi
- Smanjite podatke ili podelite posao na podržane pojedinačne operacije.
- Pravila ponavljanja
- Ponovite manje valjane operacije sa posebnim ključevima idempotentnosti.
{
"error": {
"code": "request.too_large",
"fields": null,
"message": "The request exceeds the size limit."
},
"meta": {
"request_id": "example-request"
}
}
415request.unsupported_media_typeVrsta sadržaja ili kodiranje sadržaja nije podržano.
- Šta uraditi
- Za JSON upise koristite Content-Type: application/json i podržano nekomprimirano telo.
- Pravila ponavljanja
- Ponovite nakon ispravka vrste ili kodiranja sadržaja.
{
"error": {
"code": "request.unsupported_media_type",
"fields": null,
"message": "The request media type or encoding is not supported."
},
"meta": {
"request_id": "example-request"
}
}
422request.validation_failedJedno ili više polja ili parametara ne prolazi proveru valjanosti.
- Šta uraditi
- Pregledajte error.fields, a zatim proverite obavezna polja, dozvoljavanje null, identifikatore i dozvoljene vrednosti.
- Pravila ponavljanja
- Ponovite ispravljen zahtev; promenjeni upis nova je logička operacija.
{
"error": {
"code": "request.validation_failed",
"fields": null,
"message": "Some request parameters are invalid."
},
"meta": {
"request_id": "example-request"
}
}
429capacity.queue_fullKratki red čekanja API-ja je pun; izvršavanje zahteva nije počelo.
- Šta uraditi
- Stavite zahteve u red čekanja i poštujte zaglavlje odgovora Retry-After.
- Pravila ponavljanja
- Pričekajte najmanje Retry-After sekundi i dodajte nasumični razmak. Pri ponavljanju upisa zadržite izvorni ključ i podatke.
{
"error": {
"code": "capacity.queue_full",
"fields": null,
"message": "The API is busy. Please retry shortly."
},
"meta": {
"request_id": "example-request"
}
}
429capacity.wait_timeoutIsteklo je vreme čekanja u redu API-ja; izvršavanje zahteva nije počelo.
- Šta uraditi
- Stavite zahteve u red čekanja i poštujte zaglavlje odgovora Retry-After.
- Pravila ponavljanja
- Pričekajte najmanje Retry-After sekundi i dodajte nasumični razmak. Pri ponavljanju upisa zadržite izvorni ključ i podatke.
{
"error": {
"code": "capacity.wait_timeout",
"fields": null,
"message": "The API could not start this request in time. Please retry shortly."
},
"meta": {
"request_id": "example-request"
}
}
429rate_limit.exceededUčestalost zahteva prekoračuje primenjivo ograničenje.
- Šta uraditi
- Stavite zahteve u red čekanja i poštujte zaglavlje odgovora Retry-After.
- Pravila ponavljanja
- Pričekajte najmanje Retry-After sekundi i dodajte nasumični razmak. Pri ponavljanju upisa zadržite izvorni ključ i podatke.
{
"error": {
"code": "rate_limit.exceeded",
"fields": null,
"message": "The request rate limit has been exceeded."
},
"meta": {
"request_id": "example-request"
}
}
500internal.errorDošlo je do neočekivane greške usluge.
- Šta uraditi
- Zabeležite identifikator zahteva i obratite se operateru ako se greška nastavi; ne uključujte akreditive u dnevnike.
- Pravila ponavljanja
- Koristite ograničeno ponavljanje uz rastuće čekanje. Za upis zadržite izvorni ključ idempotentnosti i nepromenjene podatke.
{
"error": {
"code": "internal.error",
"fields": null,
"message": "An unexpected error occurred."
},
"meta": {
"request_id": "example-request"
}
}
502gateway.bad_responseMrežni prolaz nije primio valjan API odgovor.
- Šta uraditi
- Sačuvajte identifikator zahteva. Neuspešan odgovor ne dokazuje da upis nije primenjen.
- Pravila ponavljanja
- Koristite ograničeno ponavljanje uz rastuće čekanje; ponovite isti logički upis s izvornim Idempotency-Key i nepromenjenim podacima.
{
"error": {
"code": "gateway.bad_response",
"fields": null,
"message": "The API gateway could not obtain a valid response."
},
"meta": {
"request_id": "example-request"
}
}
504gateway.timeoutMrežni prolaz je prekoračio vreme čekanja na API.
- Šta uraditi
- Sačuvajte identifikator zahteva i smatrajte ishod upisa nepoznatim.
- Pravila ponavljanja
- Koristite ograničeno ponavljanje uz rastuće čekanje; za upis zadržite izvorni ključ idempotentnosti i nepromenjene podatke.
{
"error": {
"code": "gateway.timeout",
"fields": null,
"message": "The API gateway timed out."
},
"meta": {
"request_id": "example-request"
}
}