خطاها
تمام خطاهای API عمومی یک Envelope ثابت و قابل پردازش توسط برنامه دارند. جزئیات داخلی، Stack Trace، Provider و Payload هسته در پاسخ مشتری قرار نمیگیرند.
نمونه Validation Error:
{
"code": "validation_error",
"message": "اطلاعات درخواست معتبر نیست.",
"correlationId": "4ac56ce65f3f44fca4370761283a583c",
"errors": {
"recipient": [
"شماره گیرنده معتبر نیست."
]
}
}
فیلدها
| فیلد | توضیح |
|---|---|
code |
کد پایدار برای تصمیمگیری برنامه |
message |
توضیح عمومی قابل نمایش/ثبت |
correlationId |
شناسه رهگیری درخواست برای پشتیبانی |
errors |
جزئیات Validation به تفکیک فیلد؛ در سایر خطاها ممکن است وجود نداشته باشد |
HTTP Statusهای اصلی
| Status | Code معمول | کاربرد |
|---|---|---|
400 |
validation_error / invalid_request |
پارامتر نامعتبر یا JSON/ساختار Request مخدوش |
401 |
invalid_api_key |
API Key معتبر نیست یا ارسال نشده است |
403 |
forbidden |
حساب برای عملیات موردنظر مجوز ندارد |
404 |
not_found |
منبع برای این حساب پیدا نشد |
409 |
conflict |
درخواست با وضعیت فعلی منبع سازگار نیست |
429 |
rate_limited |
Rate Limit عبور کرده است |
500 |
unexpected_error |
خطای غیرمنتظره در لایه عمومی |
502 |
upstream_error |
پاسخ ناسازگار از هسته داخلی دریافت شده است |
503 |
service_unavailable |
وابستگی داخلی موقتاً در دسترس نیست |
برنامه مشتری بهتر است ابتدا بر اساس HTTP Status و سپس code تصمیم بگیرد و به متن message وابسته نشود.
Correlation ID
همان مقدار correlationId در Header پاسخ نیز برگردانده میشود:
X-Correlation-Id: 4ac56ce65f3f44fca4370761283a583c
برای پیگیری خطای عملیاتی، correlationId را همراه زمان تقریبی درخواست و در صورت وجود trackingCode به پشتیبانی اعلام کنید. API Key یا متن حساس پیام را برای عیبیابی ارسال نکنید.