مستندات

جست‌وجو در مستندات

نام اندپوینت، موضوع یا کلیدواژه را بنویسید

خطاها

وقتی درخواستی شکست می‌خورد، HAPI v3 یک کد وضعیت واقعی HTTP و یک شیء خطای یکتا و قابل‌پیش‌بینی برمی‌گرداند. هیچ‌وقت خطایی پشت پاسخ 200 پنهان نمی‌شود.

شیء خطا#

{
  "error": {
    "type": "invalid_request_error",
    "code": "validation_failed",
    "message": "slices is required.",
    "param": "slices",
    "doc_url": "https://api.simorghapi.com/docs/errors#validation_failed",
    "request_id": "req_z8iukwo8qwf488s01gthblxb"
  }
}
فیلدتوضیح
typeدستهٔ کلی خطا که می‌توانید منطق برنامه را بر اساس آن شاخه‌بندی کنید (پایین‌تر را ببینید).
codeکد دقیق و ماشین‌خوان برای همان مشکل مشخص.
messageتوضیح قابل‌خواندن برای انسان. روی این رشته تطبیق (match) انجام ندهید.
paramوقتی خطا از یک فیلد مشخص باشد می‌آید و نام همان فیلد را می‌دهد.
doc_urlلینک مستندات مرتبط.
request_idشناسهٔ این درخواست؛ آن را به پشتیبانی اعلام کنید.

انواع خطا#

نوعHTTPمعنا
authentication_error401توکن ارسال نشده، نامعتبر یا منقضی است.
permission_error403توکن یکی از اسکوپ‌های لازم را ندارد.
invalid_request_error400 / 422درخواست ساختار نادرستی داشت یا اعتبارسنجی آن ناموفق بود.
not_found_error404هیچ منبعی پیدا نشد.
conflict_error409درخواست با وضعیت فعلی تعارض دارد.
insufficient_balance402کیف پول دفتر هزینهٔ رزرو را پوشش نمی‌دهد.
rate_limit_error429درخواست‌ها را بیش از حد سریع می‌فرستید.
api_error5xxمشکلی در سمت ما رخ داده است.

کدهای رایج#

کدنوعراه‌حل
missing_authorizationauthenticationهدر Authorization: Bearer را اضافه کنید.
invalid_tokenauthenticationتوکن ناشناخته است؛ توکن تازه بگیرید.
expired_tokenauthenticationتوکن تازه بگیرید و دوباره تلاش کنید.
invalid_clientauthenticationشناسه و کلید محرمانهٔ کلاینت را بررسی کنید.
insufficient_scopepermissionاز توکنی استفاده کنید که اسکوپ ذکرشده در detail را دارد.
validation_failedinvalid_requestفیلدی را که در param آمده اصلاح کنید؛ detail همهٔ مشکلات را فهرست می‌کند.
not_foundnot_foundشناسهٔ داخل مسیر را بررسی کنید.
insufficient_balanceinsufficient_balanceکیف پول دفتر را شارژ کنید و دوباره تلاش کنید.
rate_limitedrate_limitکمی صبر کنید و پس از وقفه‌ای کوتاه دوباره تلاش کنید.
internal_errorapiدوباره تلاش کنید؛ اگر ادامه داشت، با ذکر request_id به پشتیبانی (پنل → پشتیبانی) اطلاع دهید.

مدیریت خطاها#

رفتار برنامه را بر اساس type و حالت دقیق را بر اساس code تعیین کنید. خطاهای 429 و 5xx را با تأخیر نمایی (exponential backoff) دوباره امتحان کنید؛ اما خطاهای 4xx به‌جز 429 را کورکورانه تکرار نکنید، چون خود درخواست باید اصلاح شود. همیشه request_id را لاگ کنید.

جزئیات اعتبارسنجی. خطای 422 validation_failed یک شیء detail دارد که هر فیلد ردشده را به مشکلاتش نگاشت می‌کند؛ بنابراین می‌توانید همهٔ خطاها را یک‌جا به کاربر نشان دهید، نه یکی‌یکی.
ویرایش این صفحه در گیت‌هابمشکلی دیدید؟ از پنل ← پشتیبانی خبرمان کنید.