الأخطاء
كل إخفاق هو غلاف JSON يحتوي على رمز آلي ثابت، وسبب اختياري يدقّقه، ورسالة موجّهة للأشخاص، ومعرّف الطلب للدعم الفني. يتخذ العملاء قراراتهم بناءً على الرمز والسبب، لا على نص الرسالة أبدًا.
json
{ "code": "conflict", "reason": "version_exists", "message": "…", "requestId": "…" }الرموز
| الرمز | حالة HTTP | المعنى |
|---|---|---|
invalid_input | 400 | الطلب مشوَّه أو إحدى القيم غير مسموح بها؛ صحّح الطلب قبل إرساله مرة أخرى. |
not_found | 404 | الكائن غير موجود، أو لا يحق للمستدعي رؤيته. |
conflict | 409 | الطلب يتعارض مع الحالة الحالية؛ أعد قراءة الحالة ثم قرّر. |
forbidden | 403 | بيانات الاعتماد صالحة لكنها تفتقر إلى الإذن اللازم لهذا الإجراء. |
unauthorized | 401 | لا توجد بيانات اعتماد صالحة: مفقودة أو خاطئة أو منتهية الصلاحية أو مُبطَلة. |
capacity_exceeded | 507 | سيتم تجاوز حصة أو سعة أو حد. |
integrity_mismatch | 422 | البايتات لا تطابق الحجم المُعلَن أو SHA-256. |
busy | 503 | الخادم عند حد القبول لديه؛ أعد المحاولة بعد المدة المحددة في Retry-After. |
unavailable | 503 | إحدى التبعيات غير متاحة الآن؛ أعد المحاولة بعد المدة المحددة في Retry-After. |
rate_limited | 429 | محاولات كثيرة جدًا؛ انتظر المدة المحددة في Retry-After. |
read_only | 405 | هذا الخادم أو هذه البوابة لا يقبل التغييرات (بوابة قراءة أو مرآة). |
internal | 500 | عطل غير متوقع في الخادم؛ يساعد معرّف الطلب الدعم على العثور عليه. لا تكرر الطلب دون تمحيص. |
الأسباب
| الرمز | السبب | حالة HTTP | المعنى |
|---|---|---|---|
invalid_input | validation | 400 | حقل مفقود أو قيمته خارج قواعده؛ وتسمّي details الحقل. |
invalid_input | malformed_json | 400 | المتن ليس JSON صالحًا. |
invalid_input | body_too_large | 413 | المتن أكبر مما تقبله هذه العملية. |
invalid_input | unsupported_media_type | 415 | قيمة Content-Type ليست مما تقبله هذه العملية. |
invalid_input | method_not_allowed | 405 | المسار موجود لكن ليس بهذه الطريقة. |
invalid_input | range_not_satisfiable | 416 | نطاق البايتات المطلوب يقع خارج المحتوى. |
not_found | route_not_found | 404 | لا يوجد مسار (route) كهذا. |
conflict | upload_expired | 409 | انتهت صلاحية جلسة الرفع قبل إكمالها. |
conflict | upload_state | 409 | عملية الرفع ليست في حالة تسمح بهذه الخطوة. |
conflict | revision_mismatch | 409 | المراجعة المتوقعة ليست المراجعة الحالية (سبقها تغيير آخر). |
conflict | version_exists | 409 | نُشر هذا الإصدار من قبل بمحتوى آخر. |
conflict | part_mismatch | 409 | الجزء لا يطابق حجمه المُعلَن أو SHA-256. |
conflict | parts_incomplete | 409 | لم تصل كل أجزاء عملية الرفع بعد. |
conflict | idempotency_mismatch | 409 | سبق استخدام Idempotency-Key مع طلب مختلف. |
conflict | already_exists | 409 | يوجد بالفعل كائن بهذا الاسم أو المسار. |
conflict | stage_limit | 409 | بلغ المُخرَج الحد الأقصى لعدد المراحل. |
conflict | state_conflict | 409 | الكائن في حالة لا تسمح بهذا التغيير. |
conflict | mirror_read_only | 409 | المستودع مرآة؛ ولا يتغير إلا بالمزامنة. |
forbidden | permission_missing | 403 | تفتقر بيانات الاعتماد إلى الإجراء الذي تحتاجه هذه العملية. |
forbidden | read_only_token | 403 | الرمز الشخصي للقراءة فقط لا يستطيع تغيير أي شيء. |
forbidden | credential_revoked | 403 | أُبطل المفتاح أو الرمز. |
forbidden | session_required | 403 | لا يجوز ذلك إلا لجلسة حساب مسجَّل الدخول، وليس لمفتاح. |
forbidden | administrator_required | 403 | لا يجوز ذلك إلا لمسؤول. |
forbidden | registration_disabled | 403 | التسجيل الذاتي معطّل على هذا الخادم. |
forbidden | origin_not_allowed | 403 | أصل المتصفح (origin) غير مدرج في ARKVORY_CORS_ORIGINS. |
unauthorized | invalid_credentials | 401 | اسم الحساب أو كلمة المرور خاطئة. |
unauthorized | current_password_invalid | 401 | كلمة المرور الحالية خاطئة. |
unauthorized | credential_missing | 401 | لا يحمل الطلب أي بيانات اعتماد. |
unauthorized | credential_invalid | 401 | بيانات الاعتماد ليست مفتاحًا أو رمزًا أو جلسة صالحة. |
unauthorized | session_expired | 401 | انتهت صلاحية الجلسة؛ سجّل الدخول من جديد. |
unauthorized | token_expired | 401 | انتهت صلاحية الرمز الشخصي. |
capacity_exceeded | storage_quota | 507 | سيتم تجاوز حصة تخزين المستودع. |
capacity_exceeded | storage_full | 507 | قرص الخادم يحتفظ باحتياطي المساحة الحرة؛ ولا مكان لمزيد من البيانات. |
capacity_exceeded | account_limit | 507 | عدد الحسابات بلغ حده الأقصى. |
capacity_exceeded | group_limit | 507 | عدد المجموعات بلغ حده الأقصى. |
capacity_exceeded | membership_limit | 507 | عدد أعضاء المجموعات بلغ حده الأقصى. |
capacity_exceeded | grant_limit | 507 | عدد المنح بلغ حده الأقصى. |
capacity_exceeded | key_limit | 507 | عدد المفاتيح بلغ حده الأقصى. |
capacity_exceeded | token_limit | 507 | عدد الرموز الشخصية بلغ حده الأقصى. |
capacity_exceeded | delegation_limit | 507 | عدد التفويضات بلغ حده الأقصى. |
capacity_exceeded | catalog_limit | 507 | سيتم تجاوز سعة الفهرس في هذا التثبيت. |
capacity_exceeded | queue_full | 507 | طابور النقل ممتلئ. |
capacity_exceeded | transfer_limit | 507 | لدى المستدعي أقصى عدد مسموح به من عمليات النقل. |
busy | request_limit | 503 | يعالج الخادم أقصى عدد من الطلبات يقبله. |
busy | download_queued | 503 | ينتظر التنزيل في الطابور؛ أعد الطلب بعد Retry-After. يبيّن Arkvory-Queue-Position وArkvory-Starts-At الترتيب وموعد البدء المتوقع. |
unavailable | feedback_disabled | 503 | الملاحظات معطّلة على هذا الخادم. |
unavailable | hub_unreachable | 503 | تعذّر الوصول إلى مركز التحديثات. |
unavailable | replication_degraded | 503 | يحتوي عنقود HA على نسخ كاملة أقل مما تحتاجه الكتابة، لذلك لم يُؤكَّد التغيير؛ أعد المحاولة بعد Retry-After. ما زال التنزيل يعمل. |
rate_limited | login_attempts | 429 | محاولات تسجيل دخول كثيرة جدًا؛ انتظر. |
rate_limited | registration_attempts | 429 | محاولات تسجيل كثيرة جدًا؛ انتظر. |
rate_limited | password_attempts | 429 | محاولات كلمة مرور كثيرة جدًا؛ انتظر. |
rate_limited | feedback_attempts | 429 | تقارير ملاحظات كثيرة جدًا؛ انتظر. |