Åtgärd
- Styr programlogiken efter HTTP-status och error.code, inte den läsbara texten i error.message.
- 401 kräver giltig autentisering, 403 kräver ändrad åtkomst eller ändrat abonnemang och 409 kräver kontroll av den motstridiga operationen eller resursversionen.
Åtkomst nekad och nya försök
- 401
- 401 betyder inte alltid att token har löpt ut. Om den har löpt ut, hämta en ny och upprepa läsningen högst en gång. Om tokenanropet ger 401, kontrollera nyckeln och stoppa automatiska försök.
- 403
- Vid 403 ska du kontrollera behörigheter, IP-begränsningar och abonnemang. En ny token återställer inte återkallad åtkomst.
Regler för nya försök
- Begränsa antalet nya försök vid tillfälliga fel och använd ökande väntetid med slumpmässig variation.
- Följ Retry-After när det finns.
- Om en skrivning når tidsgränsen kan resultatet vara okänt: behåll samma Idempotency-Key och oförändrad begäran när du försöker igen.
- Katalogen nedan förklarar alla publicerade felkoder.
422 / 409
- För priser ger ett ogiltigt valutaformat eller en ogiltig precision för beloppet 422 request.validation_failed.
- En giltig valutakod som inte stämmer med den valda prislistan ger 409 resource.version_conflict.
- Kontrollera kontexten och versionerna innan du försöker igen.
Felkatalog
400request.malformedBegäran kan inte tolkas.
- Åtgärd
- Kontrollera JSON-syntax, URL-kodning och begärans struktur.
- Regler för nya försök
- Försök igen efter att begäran korrigerats.
{
"error": {
"code": "request.malformed",
"fields": null,
"message": "The request could not be read."
},
"meta": {
"request_id": "example-request"
}
}
401authentication.invalid_credentialsAPI-nyckeln eller åtkomsttoken är ogiltig, utgången eller återkallad.
- Åtgärd
- Kontrollera butikens URL och autentiseringsuppgiften. Hämta en ny token med en aktiv API-nyckel.
- Regler för nya försök
- Försök igen efter att autentiseringen korrigerats. Undvik upprepade begäranden med ogiltiga uppgifter.
{
"error": {
"code": "authentication.invalid_credentials",
"fields": null,
"message": "The credentials are invalid."
},
"meta": {
"request_id": "example-request"
}
}
401authentication.requiredDet obligatoriska HTTP-huvudet Authorization saknas eller använder fel schema.
- Åtgärd
- Använd ApiKey när du begär en token och Bearer för resursoperationer.
- Regler för nya försök
- Försök igen med korrekt HTTP-huvud.
{
"error": {
"code": "authentication.required",
"fields": null,
"message": "Authentication is required."
},
"meta": {
"request_id": "example-request"
}
}
403authorization.client_ip_unverifiedTjänsten kunde inte fastställa en betrodd klient-IP-adress.
- Åtgärd
- Be butiksoperatören kontrollera ingressanslutningen. Lägg inte själv till vidarebefordringshuvuden.
- Regler för nya försök
- Försök igen när den betrodda anslutningsvägen har återställts.
{
"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_allowedKällans IP-adress finns inte i nyckelns lista över tillåtna adresser.
- Åtgärd
- Använd en godkänd källadress eller be en behörig administratör redigera nyckelns IP-lista.
- Regler för nya försök
- Försök igen först när adressen är tillåten.
{
"error": {
"code": "authorization.ip_not_allowed",
"fields": null,
"message": "Access from this IP address is not allowed."
},
"meta": {
"request_id": "example-request"
}
}
403authorization.scope_deniedNyckeln saknar en gällande behörighet som operationen kräver.
- Åtgärd
- Kontrollera operationens obligatoriska och villkorliga behörigheter, nyckelns behörigheter och utfärdarens åtkomst.
- Regler för nya försök
- Försök igen när en behörig administratör har gett nödvändig åtkomst.
{
"error": {
"code": "authorization.scope_denied",
"fields": null,
"message": "The required permission has not been granted."
},
"meta": {
"request_id": "example-request"
}
}
403entitlements.api_disabledAPI-åtkomst är inaktiverad för butiken.
- Åtgärd
- Be butikens ägare kontrollera aktuellt abonnemang och API-tillgänglighet.
- Regler för nya försök
- Försök inte igen förrän API-åtkomst har aktiverats.
{
"error": {
"code": "entitlements.api_disabled",
"fields": null,
"message": "API access is disabled for this store."
},
"meta": {
"request_id": "example-request"
}
}
403entitlements.limit_exceededÄndringen skulle överskrida en gräns i aktuellt abonnemang.
- Åtgärd
- Kontrollera tillämplig resursgräns och anpassa ändringen eller abonnemanget.
- Regler för nya försök
- Försök igen när begränsningen har lösts. Använd en ny idempotensnyckel om begäran ändras.
{
"error": {
"code": "entitlements.limit_exceeded",
"fields": null,
"message": "The operation exceeds a plan limit."
},
"meta": {
"request_id": "example-request"
}
}
403entitlements.operation_disabledAktuellt abonnemang omfattar inte operationen.
- Åtgärd
- Kontrollera det lägsta abonnemang som anges för operationen.
- Regler för nya försök
- Försök igen när abonnemanget tillåter operationen och nyckeln har nödvändiga behörigheter.
{
"error": {
"code": "entitlements.operation_disabled",
"fields": null,
"message": "The current plan does not allow this operation."
},
"meta": {
"request_id": "example-request"
}
}
403entitlements.resource_blockedEn abonnemangsgräns blockerar den här resursen.
- Åtgärd
- Be ägaren åtgärda resursens abonnemangsbegränsning.
- Regler för nya försök
- Upprepa inte samma begäran så länge resursen är blockerad.
{
"error": {
"code": "entitlements.resource_blocked",
"fields": null,
"message": "A plan limit blocks access to this resource."
},
"meta": {
"request_id": "example-request"
}
}
404resource.not_foundResursen saknas, är borttagen eller är inte tillgänglig under angiven identifierare.
- Åtgärd
- Kontrollera butik, resurssökväg och identifierare. Använd identifierare som returnerats av den här butiken.
- Regler för nya försök
- Försök igen först när målet har korrigerats eller dess existens har bekräftats.
{
"error": {
"code": "resource.not_found",
"fields": null,
"message": "The resource was not found."
},
"meta": {
"request_id": "example-request"
}
}
405request.method_not_allowedEndpointen stöder inte den här HTTP-metoden.
- Åtgärd
- Använd den dokumenterade metoden. HTTP-huvudet Allow anger vilka metoder som stöds.
- Regler för nya försök
- Försök inte igen med en metod som inte stöds.
{
"error": {
"code": "request.method_not_allowed",
"fields": null,
"message": "This method is not supported for this resource."
},
"meta": {
"request_id": "example-request"
}
}
409idempotency.key_reusedIdempotensnyckeln hör till en annan begäran.
- Åtgärd
- Hitta den ursprungliga operationen. Använd en ny nyckel endast för en avsiktligt ny logisk operation.
- Regler för nya försök
- Försök inte skicka ändrat innehåll med den motstridiga nyckeln.
{
"error": {
"code": "idempotency.key_reused",
"fields": null,
"message": "This idempotency key was used with a different request."
},
"meta": {
"request_id": "example-request"
}
}
409resource.already_existsEtt unikt värde krockar med en befintlig resurs.
- Åtgärd
- Läs den befintliga resursen och avgör om den ska användas eller om ett annat unikt värde ska väljas.
- Regler för nya försök
- Upprepa inte samma skapande som orsakar konflikten.
{
"error": {
"code": "resource.already_exists",
"fields": null,
"message": "A resource with these unique values already exists."
},
"meta": {
"request_id": "example-request"
}
}
409resource.in_useAndra resurser är fortfarande beroende av resursen.
- Åtgärd
- Granska beroendena och ta bort eller ändra dem genom operationer som stöds innan du tar bort resursen.
- Regler för nya försök
- Försök igen när beroendena har lösts.
{
"error": {
"code": "resource.in_use",
"fields": null,
"message": "The resource is still in use."
},
"meta": {
"request_id": "example-request"
}
}
409resource.state_conflictAktuellt affärstillstånd förhindrar ändringen.
- Åtgärd
- Läs aktuellt tillstånd och välj en tillåten övergång.
- Regler för nya försök
- Tvinga inte automatiskt igenom ändringen och skicka inte samma motstridiga ändring upprepade gånger.
{
"error": {
"code": "resource.state_conflict",
"fields": null,
"message": "The current resource state does not allow this operation."
},
"meta": {
"request_id": "example-request"
}
}
409resource.version_conflictEn annan skrivning ändrade resursen efter den version du läste.
- Åtgärd
- Läs aktuella uppgifter, anpassa ändringen och skicka den nya expected_version.
- Regler för nya försök
- Använd en ny idempotensnyckel för den reviderade operationen. Skriv inte över utan kontroll.
{
"error": {
"code": "resource.version_conflict",
"fields": null,
"message": "The resource version has changed."
},
"meta": {
"request_id": "example-request"
}
}
413request.too_largeBegäran överskrider storleksgränsen.
- Åtgärd
- Minska innehållet eller dela upp arbetet i enskilda operationer som stöds.
- Regler för nya försök
- Skicka mindre, giltiga operationer med egna idempotensnycklar.
{
"error": {
"code": "request.too_large",
"fields": null,
"message": "The request exceeds the size limit."
},
"meta": {
"request_id": "example-request"
}
}
415request.unsupported_media_typeMedietypen eller innehållskodningen stöds inte.
- Åtgärd
- För JSON-skrivningar använder du Content-Type: application/json och okomprimerat innehåll som stöds.
- Regler för nya försök
- Försök igen efter att medietyp eller kodning korrigerats.
{
"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_failedEtt eller flera fält eller parametrar klarar inte valideringen.
- Åtgärd
- Granska error.fields och kontrollera obligatoriska fält, tillåtna null-värden, identifierare och tillåtna värden.
- Regler för nya försök
- Skicka en korrigerad begäran. En ändrad skrivning är en ny logisk operation.
{
"error": {
"code": "request.validation_failed",
"fields": null,
"message": "Some request parameters are invalid."
},
"meta": {
"request_id": "example-request"
}
}
429capacity.queue_fullAPI:ets korta kö är full; begäran har inte börjat köras.
- Åtgärd
- Lägg begäranden i kö och följ HTTP-huvudet Retry-After i svaret.
- Regler för nya försök
- Vänta minst Retry-After sekunder och lägg till slumpmässig fördröjning. Behåll ursprunglig nyckel och oförändrat innehåll vid nya skrivförsök.
{
"error": {
"code": "capacity.queue_full",
"fields": null,
"message": "The API is busy. Please retry shortly."
},
"meta": {
"request_id": "example-request"
}
}
429capacity.wait_timeoutVäntetiden i API-kön har gått ut; begäran har inte börjat köras.
- Åtgärd
- Lägg begäranden i kö och följ HTTP-huvudet Retry-After i svaret.
- Regler för nya försök
- Vänta minst Retry-After sekunder och lägg till slumpmässig fördröjning. Behåll ursprunglig nyckel och oförändrat innehåll vid nya skrivförsök.
{
"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.exceededAnropsfrekvensen överskrider den tillämpliga gränsen.
- Åtgärd
- Lägg begäranden i kö och följ HTTP-huvudet Retry-After i svaret.
- Regler för nya försök
- Vänta minst Retry-After sekunder och lägg till slumpmässig fördröjning. Behåll ursprunglig nyckel och oförändrat innehåll vid nya skrivförsök.
{
"error": {
"code": "rate_limit.exceeded",
"fields": null,
"message": "The request rate limit has been exceeded."
},
"meta": {
"request_id": "example-request"
}
}
500internal.errorEtt oväntat tjänstefel inträffade.
- Åtgärd
- Spara begärans identifierare och kontakta operatören om felet kvarstår. Lägg inte autentiseringsuppgifter i loggar.
- Regler för nya försök
- Använd begränsade nya försök med ökande väntetid. Behåll ursprunglig idempotensnyckel och oförändrat innehåll vid skrivningar.
{
"error": {
"code": "internal.error",
"fields": null,
"message": "An unexpected error occurred."
},
"meta": {
"request_id": "example-request"
}
}
502gateway.bad_responseGatewayen fick inget giltigt API-svar.
- Åtgärd
- Spara begärans identifierare. Ett misslyckat svar bevisar inte att skrivningen uteblev.
- Regler för nya försök
- Använd begränsade nya försök med ökande väntetid. Upprepa samma logiska skrivning med ursprunglig Idempotency-Key och oförändrat innehåll.
{
"error": {
"code": "gateway.bad_response",
"fields": null,
"message": "The API gateway could not obtain a valid response."
},
"meta": {
"request_id": "example-request"
}
}
504gateway.timeoutGatewayens tidsgräns överskreds medan den väntade på API:et.
- Åtgärd
- Spara begärans identifierare och betrakta skrivningens resultat som okänt.
- Regler för nya försök
- Använd begränsade nya försök med ökande väntetid. Behåll ursprunglig idempotensnyckel och oförändrat innehåll vid skrivningar.
{
"error": {
"code": "gateway.timeout",
"fields": null,
"message": "The API gateway timed out."
},
"meta": {
"request_id": "example-request"
}
}