Api
خطاها#
API از کودهای وضعیت متعارف HTTP و یک قالب خطای کوچک JSON استفاده میکند. شکستهای احراز هویت و سهمیه {"error":{"code":"...","message":"..."}} را برمیگردانند؛ رکوردهای جزئیات غایب از یک شکل تودرتو استفاده میکنند که کلید error را درون شیء هم تکرار میکند.
همیشه اول وضعیت HTTP را بررسی کنید، سپس error.code را بخوانید.
قالبهای خطا#
استاندارد#
json
{
"error": {
"code": "api_ability_denied",
"message": "This credential is not permitted to perform the requested operation."
}
}رکورد جزئیات غایب#
json
{
"error": {
"error": "not_found",
"message": "Sale not found."
}
}اعتبارسنجی#
شکستهای اعتبارسنجی از شکل فریمورک پیروی میکنند: یک message بهاضافه یک شیء errors کلیدشده بر اساس فیلد.
json
{
"message": "The given data was invalid.",
"errors": {
"to": [
"The to field must be a date after or equal to from."
]
}
}کودهای وضعیت#
| وضعیت | معنا | علت معمول |
|---|---|---|
| 200 | موفق | — |
| 401 | بدون احراز هویت | توکن غایب، اعتبارنامه بازپسگرفته، نوع اشتباه توکن |
| 403 | ممنوع | صلاحیت، عضویت یا دامنه شعبه رد شد |
| 404 | یافت نشد | شناسه جزئیات بیرون از دامنه دیدنی |
| 405 | متد مجاز نیست | GET یا DELETE به نقطه پایانی MCP فرستاده شده |
| 422 | اعتبارسنجی شکست خورد | تاریخ بد، اندازه صفحه بد، شعبه لازم است |
| 429 | درخواستهای بیش از حد | حد هجومی یا سهمیه روزانه/ماهانه |
| 500 | خطای سرور | شکست غیرمنتظره، با backoff دوباره تلاش کنید |
مرجع کودها#
| کود | وضعیت | معنا | رفع |
|---|---|---|---|
integration_credential_required | 401 | توکن یکپارچهسازی روی درخواست نیست | Authorization: Bearer <token> را بفرستید |
integration_credential_invalid | 401 | اعتبارنامه بازپسگرفته، تجارت غیرفعال، عدم تطابق کاربر | یک اعتبارنامه بسازید یا بچرخانید |
integration_membership_inactive | 403 | عضویت کارمند حذف شده | کاربر را دوباره کارمند کنید یا از اعتبارنامه دیگری استفاده نمایید |
integration_role_revoked | 403 | مالک دیگر مدیر تجارت یا مدیر شعبه نیست | نقش را برگردانید یا اعتبارنامه را دوباره صادر کنید |
integration_branch_scope_empty | 403 | اعتبارنامه شعبهمحدود هیچ شعبهای در دامنه ندارد | یک شعبه تحت مدیریت اعطا کنید یا آن را سطح کل تجارت بسازید |
api_ability_denied | 403 | صلاحیت غایب یا نقش دیگر آن را اعطا نمیکند | صلاحیت و اجازه صفحه را اعطا کنید |
branch_scope_denied | 403 | شعبه بیرون از دامنه اعتبارنامه است | از یک شعبه اعطاشده استفاده کنید |
branch_required | 422 | چند شعبه اعطا شده و هیچکدام نام برده نشده | X-Business-Branch را بفرستید |
integration_token_not_allowed | 403 | توکن روی یک مسیر غیریکپارچهسازی استفاده شده | فقط از /api/v2 یا /mcp استفاده کنید |
api_burst_limit_exceeded | 429 | بیشتر از 60 درخواست در یک دقیقه | منتظر Retry-After بمانید |
api_quota_exceeded | 429 | سهمیه روزانه یا ماهانه رسیده است | منتظر بازنشانی بمانید یا طرح را ارتقا دهید |
شکستهای سطح ابزار درون MCP ممکن است بهجای خطای HTTP یک پیام خطا برگردانند؛ به عیبیابی MCP مراجعه کنید.
خطاهای محدودیت نرخ#
json
{
"error": {
"code": "api_burst_limit_exceeded",
"message": "Too many API requests in a short period.",
"retry_after_seconds": 17
}
}json
{
"error": {
"code": "api_quota_exceeded",
"message": "The API request quota has been reached.",
"scope": "user",
"period": "day",
"limit": 200,
"used": 200,
"reset_at": "2026-11-01T00:00:00+04:30",
"retry_after_seconds": 18234
}
}هر دو یک هدر پاسخ Retry-After دربر دارند. هدر را رعایت کنید بهجای یک توقف ثابت.
استراتژی تلاش دوباره#
| وضعیت | تلاش دوباره؟ | استراتژی |
|---|---|---|
| 401، 403 | نخیر | اعتبارنامه یا اجازهها را درست کنید |
| 404 | نخیر | رکورد داخل دامنه نیست |
| 422 | نخیر | درخواست را اصلاح کنید |
| 429 | بله | Retry-After را نگه دارید، سپس backoff نمایی |
| 500 | بله | backoff نمایی، تعداد تلاش را محدود کنید |
تلاش دوباره برای یک خطای اجازهدهی فقط سهمیه را مصرف میکند. بهجای آن آن را log کنید و هشدار دهید.
توصیه لاگبرداری#
- نام نقطه پایانی، وضعیت،
error.codeو شناسه درخواست را اگر پروکسیتان ارائه میکند log کنید. - هرگز توکن حامل یا راز را log نکنید.
- شکستها را با کارت مصرف اعتبارنامه در تنظیمات همبسته کنید.
403های مکرر از یک اعتبارنامه را بهعنوان پسرفت اجازهها در سیستم مبدأ تلقی کنید.