Kalo te dokumentacioni
API

Gabimet

Një formë e vetme, dy nivele dhe një id kërkese mbi gjithçka.

Zarfi

type është një bashkësi e ngrirë mbi të cilën mund të degëzoni dhe që nuk do të rritet kurrë. code është specifik dhe shtesë, ndaj trajtojeni një kod që nuk e njihni si type-in e tij. requestId është te çdo përgjigje, përfshirë ato të suksesshmet, dhe është ai që lidh një raportim me një rresht regjistri.

422 Unprocessable Entity
{  "error": {    "type": "validation_error",    "code": "invalid_email_address",    "message": "Not a valid email address: ada@",    "param": "to.0",    "docUrl": "https://openemail.uk/docs/api/errors#invalid_email_address",    "requestId": "req_e103790543af4…"  }}

param është me pika dhe me indeks, kështu që tregon pikërisht elementin (to.0, attachments.2.filename) e jo fushën që e përmban.

Kodet e statusit

StatusitypeKode të zakonshme
400invalid_request_errormalformed_json, invalid_idempotency_key
401authentication_errormissing_api_key, invalid_api_key, revoked_api_key, invalid_credential_type
403permission_errorinsufficient_scope, from_address_forbidden
404not_found_errorresource_not_found
409conflict_erroremail_not_cancellable, translation_not_configured
422validation_errorinvalid_email_address, reserved_header, too_many_recipients, unknown_parameter, idempotency_key_reuse, label_not_directly_settable, unknown_language, translation_too_long
429rate_limit_errorsend_quota_exceeded, too_many_inboxes
500api_errorinternal_error
503api_errortranslation_failed

Një 404 nuk e dallon kurrë «nuk ekziston» nga «i përket një hapësire tjetër pune». Kjo është e qëllimshme: vetë dallimi është informacion.

Një 429 nuk mbart kurrë Retry-After, ndaj zgjidhni vetë sa të prisni. send_quota_exceeded është kuota mujore e dërgimeve dhe rivendoset më një të muajit, ndaj tregojani një personi në vend që të bëni prapavijë. too_many_inboxes është kufiri i krijimit të kutive postare të përkohshme, dhe zgjatja e një kutie që e keni tashmë nuk kushton asgjë ndaj tij.

500 dhe 503 ndajnë të njëjtin type dhe do të thonë gjëra të ndryshme për një thirrës. Një 503 është një varësi që nuk u përgjigj (sot ky është përkthyesi), dhe kërkesa ia vlen të riprovohet e pandryshuar; një 500 është yni dhe ia vlen të raportohet me requestId-në e vet.

Si t’i trajtoni

Degëzoni sipas type për sjelljen dhe lexoni code për mesazhin që i shfaqni një njeriu. Një code i panjohur nuk është gabim në klientin tuaj. Do të thotë se e kemi emërtuar një dështim më saktë se më parë.

TypeScript
const res = await fetch(`${BASE}/emails`, { method: 'POST', headers, body }); if (!res.ok) {  const { error } = await res.json();   switch (error.type) {    case 'rate_limit_error':      throw new RateLimited(error.code);    case 'validation_error':      // error.param points at the offending field      throw new BadRequest(`${error.param}: ${error.message}`);    case 'authentication_error':      // revoked_api_key and expired_api_key are worth telling an operator apart      throw new AuthFailed(error.code);    default:      // quote requestId when you report it      throw new Unexpected(error.message, error.requestId);  }}