REST API v1 · למפתחים
שגיאות וקודי שגיאה
שגיאות תמיד חוזרות כ-JSON עם קוד error יציב שמיועד למכונה והודעת message שמיועדת לאנשים. קבלו החלטות לפי error וסטטוס ה-HTTP — ההודעות מיועדות לבני אדם ועשויות להשתנות.
תיעוד למפתחים
בעמוד הזה
פורמט השגיאה
לכל תשובת שגיאה יש אותו מבנה: { "error": CODE, "message": "…" }. חלק מהקודים מוסיפים שדות שעוזרים להגיב — למשל issues (מה לא תקין), required (ההרשאה החסרה), balance, feature או retryAfter.
HTTP/1.1 400 Bad Request
{
"error": "INVALID_REQUEST",
"message": "Invalid body",
"issues": [{ "path": "body.amount", "message": "Number must be greater than or equal to 1" }]
}HTTP/1.1 409 Conflict
{ "error": "INSUFFICIENT_FUNDS", "message": "The member does not have enough to remove this amount", "balance": 40 }ב-issues, כל path מתחיל בחלק של הבקשה שהוא מתייחס אליו: params., query., body. או header..
כל קודי השגיאה
לכל נקודת קצה במדריך העיון מפורטים הקודים שהיא יכולה להחזיר. הרשימה המלאה:
| HTTP | קוד | תיאור |
|---|---|---|
| 400 | INVALID_REQUEST | מזהים, פרמטרים, כותרות או גוף לא תקינים; issues מפרט מה שגוי |
| 400 | INVALID_JSON | הגוף אינו JSON תקין |
| 401 | UNAUTHORIZED | הכותרת Authorization חסרה או בפורמט שגוי |
| 401 | INVALID_API_KEY | המפתח לא קיים |
| 401 | API_KEY_REVOKED | המפתח בוטל בקונסולה |
| 401 | API_KEY_EXPIRED | תוקף המפתח פג |
| 402 | PLAN_LIMIT | התוכנית של השרת לא מכסה את זה: הגעתם למגבלה (limit) או שחסרה יכולת (flag) |
| 403 | BROWSER_REQUESTS_NOT_ALLOWED | הבקשה נשלחה מדפדפן (יש לה כותרת Origin) |
| 403 | GUILD_MISMATCH | המפתח שייך לשרת אחר |
| 403 | INSUFFICIENT_SCOPE | למפתח חסרה הרשאה; required מציין אותה |
| 403 | GUILD_BLOCKED | השרת חסום ב-BotGG |
| 403 | SELF_DECISION | יוצר מפתח ה-API לא יכול להחליט על המועמדות או הערעור של עצמו |
| 403 | MODERATOR_NOT_MEMBER | יוצר מפתח ה-API כבר לא חבר בשרת (פעולות הניהול נעשות בשמו) |
| 403 | MODERATOR_MISSING_PERMISSION | ליוצר מפתח ה-API חסרה הרשאת דיסקורד לפעולה הזו; required מציין אותה |
| 403 | HIERARCHY | אי אפשר להפעיל ניהול על היעד; reason מסביר למה (יוצר המפתח, בוט, הבעלים, או תפקיד שאינו נמוך מזה של היוצר או של הבוט) |
| 404 | NOT_FOUND | נקודת קצה לא מוכרת |
| 404 | TICKET_NOT_FOUND | אין בשרת כרטיס עם המספר הזה |
| 404 | TRANSCRIPT_NOT_FOUND | לכרטיס אין תמליל שמור (הוא עדיין פתוח, התמלילים כבויים או שנמחק) |
| 404 | APPLICATION_NOT_FOUND | אין בשרת מועמדות (או טופס) עם המספר או המזהה הזה |
| 404 | APPEAL_NOT_FOUND | אין בשרת ערעור עם המספר הזה |
| 404 | CASE_NOT_FOUND | אין בשרת תיק ניהול עם המספר הזה |
| 404 | MODERATION_ACTION_NOT_FOUND | לא בוצעה עם מפתח ה-API הזה פעולת ניהול עם המזהה הזה |
| 404 | BOT_NOT_IN_GUILD | BotGG לא נמצא בשרת הזה |
| 404 | MEMBER_NOT_FOUND | המשתמש/ת לא חבר/ה בשרת |
| 404 | XP_CHANGE_NOT_FOUND | לא בוצע עם מפתח ה-API הזה שינוי XP עם המזהה הזה |
| 404 | SHOP_STORE_NOT_FOUND | אין בשרת חנות עם המזהה הזה |
| 404 | SHOP_ITEM_NOT_FOUND | אין בשרת פריט חנות עם המזהה הזה |
| 404 | SHOP_PURCHASE_NOT_FOUND | אין בשרת רכישה עם המזהה הזה |
| 404 | GIVEAWAY_NOT_FOUND | אין בשרת הגרלה עם המזהה הזה |
| 404 | FLOW_NOT_FOUND | אין בשרת תהליך עם המזהה הזה |
| 404 | FLOW_EXECUTION_NOT_FOUND | אין בשרת הרצת תהליך עם המזהה הזה |
| 409 | FEATURE_DISABLED | הפיצ׳ר שנקודת הקצה משתמשת בו כבוי בשרת; feature מציין אותו |
| 409 | BANK_DISABLED | הבנק כבוי בשרת הזה |
| 409 | INSUFFICIENT_FUNDS | אין מספיק יתרה להורדה; balance היא היתרה הנוכחית |
| 409 | SHOP_ITEM_UNAVAILABLE | אי אפשר לקנות או להעניק את הפריט כרגע; reason מסביר למה (כבוי, החנות סגורה, אזל מהמלאי, מגבלה, המחיר השתנה, תפקידים, רמה, התפקיד כבר קיים) |
| 409 | SHOP_ALREADY_REFUNDED | הרכישה כבר הוחזרה |
| 409 | SHOP_ITEM_USED | הפריט כבר נוצל; החזירו אותו עם force: true |
| 409 | ROLE_NOT_GRANTABLE | הבוט לא יכול להעניק את התפקיד של הפריט (חסר, מעל הבוט, חזק מדי או שדיסקורד סירב); לא בוצע חיוב |
| 409 | GIVEAWAY_BAD_STATE | הסטטוס של ההגרלה לא מאפשר את זה; status הוא הנוכחי |
| 409 | FLOW_NOT_RUNNABLE | אפשר להריץ רק תהליכים שמתחילים בטריגר ידני או בטריגר Webhook; triggerType הוא הטריגר של התהליך |
| 409 | FLOW_DISABLED | התהליך כבוי |
| 409 | TICKET_CLOSED | הכרטיס כבר סגור |
| 409 | ALREADY_DECIDED | כבר התקבלה החלטה על המועמדות או הערעור; status היא ההחלטה |
| 409 | NOT_BANNED | המשתמש/ת לא חסום/ה בשרת |
| 409 | BOT_MISSING_PERMISSIONS | לבוט חסרה הרשאת דיסקורד לפעולה הזו; missing מפרט אותה |
| 413 | PAYLOAD_TOO_LARGE | גוף הבקשה גדול מדי |
| 415 | UNSUPPORTED_MEDIA_TYPE | הגוף לא נשלח כ-application/json |
| 422 | IDEMPOTENCY_KEY_REUSED | מפתח האידמפוטנטיות כבר שימש לבקשה אחרת |
| 422 | BOT_ACCOUNT | לבוטים לא יכולה להיות יתרה |
| 422 | BALANCE_LIMIT | השינוי יחרוג ממגבלות היתרה של השרת |
| 429 | RATE_LIMITED | יותר מדי בקשות; המתינו Retry-After שניות (גם בשדה retryAfter) |
| 500 | INTERNAL | משהו השתבש אצלנו |
| 503 | SERVICE_UNAVAILABLE | לא הצלחנו להגיע לדיסקורד, או ש-BotGG השהה את הפיצ׳ר זמנית; נסו שוב מאוחר יותר |
על אילו שגיאות לנסות שוב
429 RATE_LIMITEDו-503 SERVICE_UNAVAILABLE: המתינו את מספר השניות שב-Retry-After(גם ב-retryAfter) ונסו שוב.500 INTERNALושגיאות רשת: נסו שוב עם המתנה הולכת וגדלה. בכתיבה, שלחו Idempotency-Key כדי שניסיון חוזר לעולם לא יחיל שינוי פעמיים.- שגיאות
4xxאחרות לא ייעלמו בניסיון חוזר של אותה בקשה: תקנו קודם את הבקשה, את המפתח או את הגדרות השרת.