Grunnatriði
Villur
Villur nota raunverulega HTTP stöðukóða og eitt JSON umslag með villukóða sem breytist ekki. Greindu villur eftir kóðanum, aldrei eftir skilaboðunum.
Umslagið
Öll villusvör með JSON meginmáli líta svona út:
{
"error": {
"code": "quote_expired",
"message": "The quote has expired; ask for a new one.",
"request_id": "req_01JB8X2Q4M7Z3V9K5T1N6R0P2W"
}
}codebreytist ekki og er ætlaður forritum. Greindu villur eftir honum.messageútskýrir villuna fyrir fólki. Textinn getur breyst hvenær sem er, svo ekki þátta hann.request_ider líka íMK-Request-Idhaus hvers svars, hvort sem beiðnin tókst eða ekki. Skráðu það í annála, og gefðu það upp þegar þú hefur samband við okkur.
2xx staða þýðir að beiðnin tókst; öll önnur svör bera þetta umslag. GET /v1/giftcards/{id}/pdf svarar með application/pdf þegar það tekst og með JSON við villur.
Villukóðar
| Staða | Kóði | Merking | Hvað á að gera |
|---|---|---|---|
| 400 | invalid_request | Beiðnin er gölluð: ógilt JSON, óþekktur eða ógildur reitur, eða haus vantar. | Lagaðu beiðnina. Skilaboðin nefna reitinn. |
| 401 | invalid_signature | MK-* hausana vantar eða þeir eru gallaðir, auðkenni lykilsins er óþekkt eða undirskriftin passar ekki. | Athugaðu auðkenni lykilsins og staðlaða strenginn; undirritaðu nákvæmlega þau bæti sem þú sendir. |
| 401 | key_expired | Gildistími lykilsins er liðinn. | Búðu til nýjan lykil í vefappinu. |
| 401 | key_revoked | Lykillinn var afturkallaður. | Búðu til nýjan lykil í vefappinu. |
| 401 | timestamp_out_of_range | MK-Timestamp munar meira en 30 sekúndum frá klukku netþjónsins. | Samstilltu klukkuna (server_time í GET /v1/status) og undirritaðu aftur. |
| 401 | nonce_reused | Þessi lykill hefur þegar notað þetta MK-Nonce. | Undirritaðu aftur með nýju, slembnu nonce. |
| 403 | insufficient_scope | Lykilinn vantar heimildina sem þessi endapunktur þarf. | Notaðu lykil með heimildinni. Ekki er hægt að bæta heimildum við lykil sem er til. |
| 403 | ip_not_allowed | Beiðnin kom frá IP tölu sem er ekki meðal leyfðra IP talna lykilsins. | Sendu frá leyfðri IP tölu, eða búðu til lykil með öðrum leyfðum IP tölum. |
| 403 | account_restricted | Aðgangurinn getur ekki notað API-ið eins og er (til dæmis læstur, óvirkur eða nýskráningu ólokið). | Athugaðu aðganginn í vefappinu, eða hafðu samband við okkur. |
| 403 | api_access_disabled | Slökkt er á aðgangi að API-inu. | Bíddu þar til opnað verður fyrir API aðgang; GET /v1/status sýnir það. |
| 403 | forbidden | Slökkt er á þessari aðgerð í API-inu eins og er. | Athugaðu GET /v1/status; hafðu samband ef þú þarft að fá opnað fyrir hana. |
| 404 | not_found | Þetta fannst ekki. | Athugaðu auðkennið eða tákn rafmyntarinnar. |
| 405 | method_not_allowed | Slóðin er til, en ekki með þessari aðferð. | Notaðu aðferðina sem API lýsingin gefur upp fyrir þessa slóð. |
| 409 | idempotency_conflict | Þessi Idempotency-Key var notaður með öðru meginmáli. | Notaðu nýjan Idempotency-Key fyrir aðra beiðni. |
| 409 | idempotency_in_progress | Beiðni með þessum Idempotency-Key er enn í vinnslu. | Bíddu aðeins og reyndu svo aftur með sama Idempotency-Key. |
| 409 | quote_already_used | Verðtilboðið hefur þegar verið samþykkt. | Flettu viðskiptunum upp: GET /v1/quotes/{id} gefur trade_id þeirra. |
| 413 | payload_too_large | Meginmál beiðnarinnar er stærra en 8 KB. | Hafðu meginmál beiðna undir 8 KB. |
| 415 | unsupported_media_type | Meginmál beiðna verður að vera application/json. | Sendu Content-Type: application/json. |
| 422 | insufficient_funds | Laus innistæða dugar ekki fyrir viðskiptunum, gjafabréfinu eða úttektinni. | Leggðu inn, eða biddu um lægri upphæð. |
| 422 | amount_below_minimum | Upphæðin er undir lágmarki. | Hækkaðu upphæðina; GET /v1/assets gefur upp lágmarkið. |
| 422 | amount_above_maximum | Upphæðin er yfir hámarki. | Lækkaðu upphæðina, eða dreifðu henni yfir lengri tíma. |
| 422 | limit_exceeded | Farið yrði yfir dagleg mörk eða 30 daga mörk. | Bíddu þar til dagurinn eða 30 daga tímabilið líður; GET /v1/limits sýnir notkunina. |
| 422 | key_limit_reached | Aðgangurinn er þegar með eins marga API lykla og hann má (5): afturkallaðu einn í Stillingum → API fyrst. | Afturkallaðu lykil sem þú notar ekki lengur í Stillingum → API, og búðu svo til nýjan tengikóða. |
| 422 | quote_expired | Verðtilboðið er útrunnið. | Búðu til nýtt verðtilboð og samþykktu það innan gildistímans. |
| 422 | price_moved | Markaðsverðið hreyfðist of langt frá verðinu í tilboðinu. | Búðu til nýtt verðtilboð. |
| 422 | asset_not_tradable | Ekki er hægt að eiga viðskipti með rafmyntina eins og er. | Athugaðu buy_enabled og sell_enabled í GET /v1/assets. |
| 422 | asset_not_withdrawable | Ekki er hægt að taka rafmyntina út á þessu neti eins og er. | Athugaðu myntina og netið, eða taktu út í appinu. |
| 429 | rate_limited | Of margar beiðnir. Bíddu í Retry-After sekúndur. | Bíddu í Retry-After sekúndur og hægðu svo á. |
| 429 | too_many_concurrent_requests | Of margar beiðnir í vinnslu í einu fyrir þennan lykil eða aðgang. | Bíddu eftir að beiðni í vinnslu klárist; Retry-After er 1. |
| 429 | key_suspended | Lykillinn er stöðvaður, til dæmis eftir að hafa farið ítrekað yfir beiðnatakmörk. | Stöðvaðu forritið og lagaðu lykkjuna. Stöðvunin fellur úr gildi eftir 15 mínútur. |
| 500 | internal_error | Eitthvað fór úrskeiðis hjá okkur. | Reyndu aftur síðar. Ef villan heldur áfram, hafðu samband og gefðu upp request_id. |
| 502 | bad_gateway | Undirliggjandi þjónusta svaraði á óvæntan hátt. | Reyndu aftur með vaxandi bið; POST aðeins með sama Idempotency-Key. |
| 503 | trading_halted | Viðskipti eru í hléi: slökkt hefur verið á þeim, eða gert hlé á viðskiptum með rafmyntina í stutta stund eftir snögga verðhreyfingu. | Reyndu aftur síðar; GET /v1/status sýnir trading_enabled. |
| 503 | maintenance | Vegna viðhalds er aðeins hægt að lesa úr API-inu. | Lestur virkar áfram. Reyndu skrif aftur síðar. |
| 503 | overloaded | Þjónustan er undir of miklu álagi. Reyndu aftur eftir Retry-After sekúndur. | Bíddu í Retry-After sekúndur og reyndu svo aftur. |
| 503 | service_unavailable | Þjónustan er tímabundið ekki tiltæk. | Reyndu aftur með vaxandi bið; POST aðeins með sama Idempotency-Key. |
| 504 | gateway_timeout | Undirliggjandi þjónusta svaraði ekki í tæka tíð. POST beiðni gæti samt klárast; reyndu aftur með sama Idempotency-Key. | Beiðnin gæti hafa farið í gegn. Reyndu aftur með sama Idempotency-Key. |
Síða hvers endapunkts í API lýsingunni telur upp kóðana sem hann getur skilað.
Að bregðast við villum
SDK-in breyta hverri villu í ApiError með status, code, message og requestId (request_id í Python), auk retryAfter (retry_after) þegar svarið hafði Retry-After haus. Undirklasar flokka stöðukóðana:
| Klasi | Staða |
|---|---|
AuthenticationError | 401 |
PermissionError | 403 |
NotFoundError | 404 |
ConflictError | 409 |
ValidationError | 400, 422 |
RateLimitError | 429 |
ServiceError | 5xx |
ConnectionError | ekkert svar (netvilla eða tímamörk) |
import { ApiError, Myntkaup, RateLimitError } from "@myntkaup/api";
const client = new Myntkaup();
try {
const trade = await client.buy({ asset: "BTC", quoteAmount: "25.00" });
console.log(trade.status);
} catch (error) {
if (error instanceof RateLimitError) {
console.warn(`Slow down; retry in ${error.retryAfter} s (${error.requestId})`);
} else if (error instanceof ApiError && ["price_moved", "quote_expired"].includes(error.code)) {
// The market moved: decide whether to try again with a new quote.
} else {
throw error;
}
}import myntkaup
from myntkaup import Myntkaup
client = Myntkaup()
try:
trade = client.buy(asset="BTC", quote_amount="25.00")
print(trade["status"])
except myntkaup.RateLimitError as error:
print(f"Slow down; retry in {error.retry_after} s ({error.request_id})")
except myntkaup.ApiError as error:
if error.code not in ("price_moved", "quote_expired"):
raise
# The market moved: decide whether to try again with a new quote.Hvaða villur á að reyna aftur
- Reyndu aftur eftir bið:
429 rate_limited,429 too_many_concurrent_requests,503 overloadedog503 service_unavailable(virtuRetry-After), og502og504. - Reyndu
POSTbeiðni aðeins aftur með samaIdempotency-Key. Eftir502,504eða rofna tengingu gæti beiðnin hafa farið í gegn; sami lykill skilar þá fyrri niðurstöðunni í stað þess að framkvæma beiðnina tvisvar. Sjá síðuna Örugg endurtekning. - Bíddu, og reyndu svo aftur með sama lykli:
409 idempotency_in_progress. - Ekki reyna aftur óbreytt: allar aðrar
4xxvillur. Breyttu fyrst beiðninni (eða lyklinum, eða verðtilboðinu). - Reyndu aldrei aftur:
429 key_suspended. Stöðvaðu forritið og lagaðu það.
SDK-in sjá um fyrstu tvö tilvikin fyrir þig: GET beiðni er reynd aftur við 429 (nema key_suspended), 502, 503, 504 og netvillur, og POST beiðni aðeins þegar hún ber Idempotency-Key. Sjálfgefið reyna þau mest tvisvar aftur, með veldisvaxandi bið og slembitöf, og virða Retry-After.