Toimintaohje
- Ohjaa ohjelman toimintaa HTTP-tilakoodin ja error.code-kentän perusteella, älä ihmiselle luettavan error.message-kentän perusteella.
- 401 edellyttää kelvollista todentamista, 403 käyttöoikeuden tai paketin muutosta ja 409 ristiriitaisen toiminnon tai resurssiversion tarkistamista.
Pääsy estetty ja uudet yritykset
- 401
- 401 ei aina tarkoita, että tunniste on vanhentunut. Jos se on vanhentunut, hae uusi ja toista lukupyyntö enintään kerran. Jos tunnisteen haku palauttaa 401:n, tarkista avain ja lopeta automaattiset yritykset.
- 403
- Tarkista 403-virheen yhteydessä oikeudet, IP-rajoitukset ja tilaus. Uusi tunniste ei palauta peruttua käyttöoikeutta.
Uudelleenyrityskäytäntö
- Käytä tilapäisissä virheissä rajattua määrää uudelleenyrityksiä, kasvavaa odotusaikaa ja satunnaista lisäviivettä.
- Noudata Retry-After-otsaketta, kun se annetaan.
- Jos kirjoituspyyntö aikakatkaistaan, sen tulos voi olla tuntematon.
- Säilytä sama Idempotency-Key ja muuttumaton pyyntö, kun yrität samaa loogista toimintoa uudelleen.
- Alla oleva luettelo selittää kaikki julkaistut virhekoodit.
422 / 409
- Hinnoissa virheellinen valuutan muoto tai summan tarkkuus palauttaa virheen 422 request.validation_failed.
- Kelvollinen valuuttakoodi, joka ei vastaa valittua hinnastoa, palauttaa virheen 409 resource.version_conflict.
- Tarkista konteksti ja versiot ennen uutta yritystä.
Virheluettelo
400request.malformedPyyntöä ei voida jäsentää.
- Toimintaohje
- Tarkista JSON-syntaksi, URL-koodaus ja pyynnön rakenne.
- Uudelleenyrityskäytäntö
- Yritä uudelleen pyynnön korjaamisen jälkeen.
{
"error": {
"code": "request.malformed",
"fields": null,
"message": "The request could not be read."
},
"meta": {
"request_id": "example-request"
}
}
401authentication.invalid_credentialsAPI-avain tai käyttöoikeustunnus on virheellinen, vanhentunut tai peruutettu.
- Toimintaohje
- Tarkista kaupan URL-osoite ja tunnistetieto. Hanki uusi tunnus aktiivisella API-avaimella.
- Uudelleenyrityskäytäntö
- Yritä uudelleen todentamisen korjaamisen jälkeen. Vältä toistuvia pyyntöjä virheellisillä tunnuksilla.
{
"error": {
"code": "authentication.invalid_credentials",
"fields": null,
"message": "The credentials are invalid."
},
"meta": {
"request_id": "example-request"
}
}
401authentication.requiredVaadittu Authorization-otsake puuttuu tai sen menetelmä on väärä.
- Toimintaohje
- Käytä tunnusta pyydettäessä ApiKey-menetelmää ja resurssitoiminnoissa Bearer-menetelmää.
- Uudelleenyrityskäytäntö
- Yritä uudelleen oikean otsakkeen lisäämisen jälkeen.
{
"error": {
"code": "authentication.required",
"fields": null,
"message": "Authentication is required."
},
"meta": {
"request_id": "example-request"
}
}
403authorization.client_ip_unverifiedPalvelu ei pystynyt määrittämään luotettua asiakkaan IP-osoitetta.
- Toimintaohje
- Pyydä kaupan operaattoria tarkistamaan sisääntuloyhteys. Älä lisää välitysotsakkeita itse.
- Uudelleenyrityskäytäntö
- Yritä uudelleen luotetun yhteysreitin palautumisen jälkeen.
{
"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_allowedLähde-IP-osoite ei ole avaimen sallittujen osoitteiden luettelossa.
- Toimintaohje
- Käytä hyväksyttyä lähdeosoitetta tai pyydä valtuutettua ylläpitäjää muokkaamaan avaimen IP-luetteloa.
- Uudelleenyrityskäytäntö
- Yritä uudelleen vasta, kun osoite on sallittu.
{
"error": {
"code": "authorization.ip_not_allowed",
"fields": null,
"message": "Access from this IP address is not allowed."
},
"meta": {
"request_id": "example-request"
}
}
403authorization.scope_deniedAvaimella ei ole tämän toiminnon vaatimaa voimassa olevaa käyttöoikeutta.
- Toimintaohje
- Tarkista toiminnon vaaditut ja ehdolliset oikeudet, avaimen oikeudet ja sen myöntäjän käyttöoikeus.
- Uudelleenyrityskäytäntö
- Yritä uudelleen, kun valtuutettu ylläpitäjä on myöntänyt tarvittavan oikeuden.
{
"error": {
"code": "authorization.scope_denied",
"fields": null,
"message": "The required permission has not been granted."
},
"meta": {
"request_id": "example-request"
}
}
403entitlements.api_disabledAPI:n käyttö on poistettu käytöstä tässä kaupassa.
- Toimintaohje
- Pyydä kaupan omistajaa tarkistamaan aktiivinen paketti ja API:n saatavuus.
- Uudelleenyrityskäytäntö
- Älä yritä uudelleen ennen kuin API:n käyttö on sallittu.
{
"error": {
"code": "entitlements.api_disabled",
"fields": null,
"message": "API access is disabled for this store."
},
"meta": {
"request_id": "example-request"
}
}
403entitlements.limit_exceededMuutos ylittäisi nykyisen paketin rajan.
- Toimintaohje
- Tarkista soveltuva resurssiraja ja muuta aiottua toimintoa tai pakettia.
- Uudelleenyrityskäytäntö
- Yritä uudelleen rajan ratkaisemisen jälkeen. Käytä uutta idempotenssiavainta, jos pyyntö muuttuu.
{
"error": {
"code": "entitlements.limit_exceeded",
"fields": null,
"message": "The operation exceeds a plan limit."
},
"meta": {
"request_id": "example-request"
}
}
403entitlements.operation_disabledNykyinen paketti ei sisällä tätä toimintoa.
- Toimintaohje
- Tarkista toiminnolle ilmoitettu vähimmäispaketti.
- Uudelleenyrityskäytäntö
- Yritä uudelleen, kun paketti sallii toiminnon ja avaimella on tarvittavat oikeudet.
{
"error": {
"code": "entitlements.operation_disabled",
"fields": null,
"message": "The current plan does not allow this operation."
},
"meta": {
"request_id": "example-request"
}
}
403entitlements.resource_blockedPaketin raja estää tämän tietyn resurssin käytön.
- Toimintaohje
- Pyydä omistajaa ratkaisemaan resurssin pakettirajoitus.
- Uudelleenyrityskäytäntö
- Älä toista samaa pyyntöä niin kauan kuin resurssi on estetty.
{
"error": {
"code": "entitlements.resource_blocked",
"fields": null,
"message": "A plan limit blocks access to this resource."
},
"meta": {
"request_id": "example-request"
}
}
404resource.not_foundResurssi puuttuu, on poistettu tai ei ole saatavilla annetulla tunnisteella.
- Toimintaohje
- Tarkista kauppa, resurssipolku ja tunniste. Käytä tämän kaupan palauttamia tunnisteita.
- Uudelleenyrityskäytäntö
- Yritä uudelleen vasta kohteen korjaamisen tai sen olemassaolon varmistamisen jälkeen.
{
"error": {
"code": "resource.not_found",
"fields": null,
"message": "The resource was not found."
},
"meta": {
"request_id": "example-request"
}
}
405request.method_not_allowedPäätepiste ei tue tätä HTTP-metodia.
- Toimintaohje
- Käytä dokumentoitua metodia. Allow-otsake ilmoittaa tuetut metodit.
- Uudelleenyrityskäytäntö
- Älä yritä tukematonta metodia uudelleen.
{
"error": {
"code": "request.method_not_allowed",
"fields": null,
"message": "This method is not supported for this resource."
},
"meta": {
"request_id": "example-request"
}
}
409idempotency.key_reusedTämä idempotenssiavain kuuluu eri pyynnölle.
- Toimintaohje
- Etsi alkuperäinen toiminto. Käytä uutta avainta vain tarkoituksella uudelle loogiselle toiminnolle.
- Uudelleenyrityskäytäntö
- Älä yritä muuttunutta sisältöä uudelleen ristiriitaisella avaimella.
{
"error": {
"code": "idempotency.key_reused",
"fields": null,
"message": "This idempotency key was used with a different request."
},
"meta": {
"request_id": "example-request"
}
}
409resource.already_existsYksilöllinen arvo on ristiriidassa olemassa olevan resurssin kanssa.
- Toimintaohje
- Lue olemassa oleva resurssi ja päätä, käytätkö sitä vai valitsetko toisen yksilöllisen arvon.
- Uudelleenyrityskäytäntö
- Älä toista samaa ristiriitaista luontia.
{
"error": {
"code": "resource.already_exists",
"fields": null,
"message": "A resource with these unique values already exists."
},
"meta": {
"request_id": "example-request"
}
}
409resource.in_useMuut resurssit ovat edelleen riippuvaisia tästä resurssista.
- Toimintaohje
- Tarkista riippuvuudet ja poista tai muuta niitä tuettujen toimintojen kautta ennen poistoa.
- Uudelleenyrityskäytäntö
- Yritä uudelleen riippuvuuksien ratkaisemisen jälkeen.
{
"error": {
"code": "resource.in_use",
"fields": null,
"message": "The resource is still in use."
},
"meta": {
"request_id": "example-request"
}
}
409resource.state_conflictNykyinen liiketoimintatila estää tämän muutoksen.
- Toimintaohje
- Lue nykyinen tila ja valitse kelvollinen liiketoimintasiirtymä.
- Uudelleenyrityskäytäntö
- Älä pakota muutosta automaattisesti tai lähetä ristiriitaista muutosta toistuvasti.
{
"error": {
"code": "resource.state_conflict",
"fields": null,
"message": "The current resource state does not allow this operation."
},
"meta": {
"request_id": "example-request"
}
}
409resource.version_conflictToinen kirjoitus muutti resurssia lukemasi version jälkeen.
- Toimintaohje
- Lue uusin tila, sovita muutoksesi siihen ja lähetä uusi expected_version.
- Uudelleenyrityskäytäntö
- Käytä tarkistettuun toimintoon uutta idempotenssiavainta. Älä ylikirjoita sokeasti.
{
"error": {
"code": "resource.version_conflict",
"fields": null,
"message": "The resource version has changed."
},
"meta": {
"request_id": "example-request"
}
}
413request.too_largePyyntö ylittää kokorajan.
- Toimintaohje
- Pienennä sisältöä tai jaa työ tuettuihin yksittäisiin toimintoihin.
- Uudelleenyrityskäytäntö
- Yritä pienempiä kelvollisia toimintoja omilla idempotenssiavaimillaan.
{
"error": {
"code": "request.too_large",
"fields": null,
"message": "The request exceeds the size limit."
},
"meta": {
"request_id": "example-request"
}
}
415request.unsupported_media_typeMediatyyppiä tai sisällön koodausta ei tueta.
- Toimintaohje
- Käytä JSON-kirjoituksissa Content-Type: application/json -otsaketta ja tuettua pakkaamatonta sisältöä.
- Uudelleenyrityskäytäntö
- Yritä uudelleen mediatyypin tai koodauksen korjaamisen jälkeen.
{
"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_failedYksi tai useampi kenttä tai parametri ei läpäise validointia.
- Toimintaohje
- Tutki error.fields ja tarkista sitten pakolliset kentät, null-arvon salliminen, tunnisteet ja sallitut arvot.
- Uudelleenyrityskäytäntö
- Yritä korjattua pyyntöä uudelleen. Muuttunut kirjoitus on uusi looginen toiminto.
{
"error": {
"code": "request.validation_failed",
"fields": null,
"message": "Some request parameters are invalid."
},
"meta": {
"request_id": "example-request"
}
}
429capacity.queue_fullLyhyt API-jono on täynnä; pyynnön suorittamista ei ole aloitettu.
- Toimintaohje
- Aseta pyynnöt jonoon ja noudata vastauksen Retry-After-otsaketta.
- Uudelleenyrityskäytäntö
- Odota vähintään Retry-After sekuntia ja lisää satunnaista viivettä. Säilytä kirjoituksen uudelleenyrityksessä alkuperäinen avain ja sisältö.
{
"error": {
"code": "capacity.queue_full",
"fields": null,
"message": "The API is busy. Please retry shortly."
},
"meta": {
"request_id": "example-request"
}
}
429capacity.wait_timeoutOdotusaika API-jonossa päättyi; pyynnön suorittamista ei ole aloitettu.
- Toimintaohje
- Aseta pyynnöt jonoon ja noudata vastauksen Retry-After-otsaketta.
- Uudelleenyrityskäytäntö
- Odota vähintään Retry-After sekuntia ja lisää satunnaista viivettä. Säilytä kirjoituksen uudelleenyrityksessä alkuperäinen avain ja sisältö.
{
"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.exceededPyyntötahti ylittää sovellettavan rajan.
- Toimintaohje
- Aseta pyynnöt jonoon ja noudata vastauksen Retry-After-otsaketta.
- Uudelleenyrityskäytäntö
- Odota vähintään Retry-After sekuntia ja lisää satunnaista viivettä. Säilytä kirjoituksen uudelleenyrityksessä alkuperäinen avain ja sisältö.
{
"error": {
"code": "rate_limit.exceeded",
"fields": null,
"message": "The request rate limit has been exceeded."
},
"meta": {
"request_id": "example-request"
}
}
500internal.errorPalvelussa tapahtui odottamaton virhe.
- Toimintaohje
- Kirjaa pyynnön tunniste ja ota yhteys operaattoriin, jos virhe jatkuu. Älä sisällytä tunnistetietoja lokeihin.
- Uudelleenyrityskäytäntö
- Käytä rajattua määrää yrityksiä ja kasvavaa viivettä. Säilytä kirjoituksessa alkuperäinen idempotenssiavain ja muuttumaton sisältö.
{
"error": {
"code": "internal.error",
"fields": null,
"message": "An unexpected error occurred."
},
"meta": {
"request_id": "example-request"
}
}
502gateway.bad_responseYhdyskäytävä ei saanut kelvollista API-vastausta.
- Toimintaohje
- Säilytä pyynnön tunniste. Epäonnistunut vastaus ei todista, ettei kirjoitusta tehty.
- Uudelleenyrityskäytäntö
- Käytä rajattua määrää yrityksiä ja kasvavaa viivettä. Toista sama looginen kirjoitus alkuperäisellä Idempotency-Key-avaimella ja sisällöllä.
{
"error": {
"code": "gateway.bad_response",
"fields": null,
"message": "The API gateway could not obtain a valid response."
},
"meta": {
"request_id": "example-request"
}
}
504gateway.timeoutYhdyskäytävä aikakatkaisi API:n odottamisen.
- Toimintaohje
- Säilytä pyynnön tunniste ja käsittele kirjoituksen tulosta tuntemattomana.
- Uudelleenyrityskäytäntö
- Käytä rajattua määrää yrityksiä ja kasvavaa viivettä. Käytä kirjoitukseen alkuperäistä idempotenssiavainta ja muuttumatonta sisältöä.
{
"error": {
"code": "gateway.timeout",
"fields": null,
"message": "The API gateway timed out."
},
"meta": {
"request_id": "example-request"
}
}