Request Errors

أخطاء في الطلبات

يمكن أن يحتوي خطأ Classroom API على رمز خطأ لمساعدتك في تحديد السبب والتعامل مع الخطأ بشكل صحيح. استنادًا إلى الرمز، يمكنك إعادة محاولة إرسال الطلب أو توجيه المستخدمين إلى اتّخاذ إجراء معيّن.

توضّح هذه الصفحة بالتفصيل رموز الأخطاء المحتمَلة، مجمّعة حسب رمز HTTP. لقراءة المزيد من المعلومات عن بنية رسالة الخطأ، يُرجى الرجوع إلى بنية رسالة الخطأ.

توضّح هذه الصفحة بالتفصيل رموز الأخطاء المحتمَلة، مجمّعة حسب رمز HTTP. راجِع المستندات المرجعية لتحديد الطرق التي تعرض أي رمز خطأ معيّن.

HTTP 400: FAILED_PRECONDITION

يتم عرض FAILED_PRECONDITION عندما يحاول المستخدم إجراءً لا يمكن السماح به، إما لأنّ المستخدم وصل إلى حدّ أقصى أو بسبب حالة التطبيق، مثل CourseNotModifiable. لحلّ مشكلة FAILED_PRECONDITION، اطلب من المستخدم اتّخاذ بعض الإجراءات ثم إعادة المحاولة. أو في بعض الحالات، يمكنك استخدام نقاط نهاية بديلة لإصلاح الحالة بالنيابة عن المستخدم.

PendingInvitationExists

يشير الرمز PendingInvitationExists إلى أنّه سبق أن تمت دعوة مستخدم لتولي ملكية الدورة التدريبية. يحدث هذا الخطأ أثناء نقل ملكية الدورة التدريبية عندما تكون قد بدأت عملية نقل في السابق ولكن لم يقبلها المالك الجديد بعد.

CourseMemberLimitReached

يشير الرمز CourseMemberLimitReached إلى أنّ الإجراء الذي تمّت محاولة تنفيذه سيتجاوز الحدّ الأقصى المسموح به لعدد أعضاء الدورة التدريبية. يعرض عادةً students.create() هذا الرمز. لمزيد من المعلومات، يُرجى الرجوع إلى قسم "الحدود القصوى لعدد الطلاب في الصف" في مقالة مركز المساعدة حول دعوة الطلاب إلى صف.

الإجراء المحتمَل: وصف سبب الخطأ واقتراح أن يزيل المستخدم أعضاء الدورة التدريبية غير الضروريين

CourseNotModifiable

يشير الرمز CourseNotModifiable إلى أنّ الدورة التدريبية ذات الصلة في حالة لا تسمح بتعديل خصائصها (باستثناء حالة الدورة التدريبية نفسها).

الإجراء المحتمَل: اطلب من المستخدم تغيير الدورة التدريبية إلى حالة دورة تدريبية قابلة للتعديل. لتغيير الحالة، استخدِم courses.patch(). يمكن تغيير حالة الدورة التدريبية في طلب يغيّر سمات أخرى.

CourseTeacherLimitReached

يشير الرمز CourseTeacherLimitReached إلى أنّ الإجراء المطلوب سيتجاوز الحد الأقصى المسموح به لعدد المعلّمين في الدورة التدريبية. يتم عادةً عرض هذا الرمز من خلال الطريقة teachers.create(). لمزيد من المعلومات، يُرجى الرجوع إلى قسم "الحدود القصوى لعدد الطلاب في الصف" في مقالة مركز المساعدة إضافة معلّم مساعد إلى صف.

الإجراء المحتمَل: وصف سبب الخطأ واقتراح أن يزيل المستخدم المعلّمين غير الضروريين في الدورة التدريبية يمكنك استخدام طريقة teachers.delete() لإدارة قوائم المعلّمين نيابةً عن المستخدم، إذا كان ذلك منطبقًا على تطبيقك.

CourseTopicLimitReached

يشير الرمز CourseTopicLimitReached إلى أنّ الإجراء المطلوب سيتجاوز الحد الأقصى المسموح به لعدد المواضيع في الدورة التدريبية. يتم عادةً عرض هذا الرمز من خلال الطريقة courses.topics.create().

الإجراء المحتمَل: يمكنك وصف سبب الخطأ واقتراح أن يزيل المستخدم المواضيع غير الضرورية. يمكنك استخدام طريقة courses.topics.delete() لإدارة المواضيع نيابةً عن المستخدم، إذا كان ذلك منطبقًا على تطبيقك.

UserGroupsMembershipLimitReached

يشير الرمز UserGroupsMembershipLimitReached إلى أنّ المستخدم عضو في الحد الأقصى المسموح به من المجموعات ولا يمكنه الانضمام إلى أي دورات تدريبية. يتم عادةً عرض هذا الرمز من خلال students.create() أو teachers.create(). لمزيد من المعلومات، يُرجى الرجوع إلى قسم "قيود حجم الصفوف" في مقالة مركز المساعدة حول دعوة الطلاب إلى صف.

الإجراء المحتمَل: يمكنك وصف سبب الخطأ واقتراح أن يغادر المستخدم أي دورات تدريبية لا يشارك فيها. يمكن للمستخدم إنشاء حساب إضافي إذا كان بحاجة إلى المشاركة في المزيد من الدورات التدريبية. يمكنك استخدام students.create() أو teachers.delete() لإدارة قوائم المستخدمين نيابةً عن المستخدم، إذا كان ذلك منطبقًا على تطبيقك.

AttachmentNotVisible

يشير الرمز AttachmentNotVisible إلى أنّ مرفقًا واحدًا أو أكثر محدّدًا غير مرئي للمستخدم أو ليس من النوع المطلوب أو غير متوفّر. على سبيل المثال، ستظهر رسالة الخطأ هذه إذا لم تتم مشاركة عناصر Drive مع المستخدم.

الإجراء المحتمَل: يمكنك وصف سبب الخطأ واقتراح أن يعيد المستخدم التحقّق من المعرّفات التي أدرجها، مثل أرقام تعريف ملفات Drive. تأكَّد أيضًا من أنّ المستخدم لديه الأذونات المناسبة لعرض المرفق.

CannotRemoveCourseFolderOwner

يشير الرمز CannotRemoveCourseFolderOwner إلى أنّه لا يمكن إزالة مالك مجلد الدورة التدريبية على Drive.

الإجراء المحتمل: وصف سبب الخطأ واقتراح نقل المستخدم ملكية مجلد الدورة التدريبية على Drive إلى مستخدم آخر وإعادة المحاولة

CannotRemoveCourseOwner

يشير الرمز CannotRemoveCourseOwner إلى أنّه لا يمكن إزالة مالك الدورة التدريبية.

الإجراء المحتمَل: وصف سبب تعذُّر الإجراء واقتراح أنّه قد لا تتم إزالة مالك الدورة التدريبية في معظم الحالات، يحاول المستخدم إزالة نفسه، وهذا غير مسموح به.

CannotRemoveCourseOwnerTransferIncomplete

يشير الرمز CannotRemoveCourseOwnerTransferIncomplete إلى أنّه لا يمكن إزالة مالك الدورة التدريبية لأنّ عملية نقل ملكية هذا الصف لا تزال جارية.

الإجراء المحتمَل: وصف سبب الخطأ وتقترح على المستخدم الانتظار لبضع لحظات حتى يكتمل الإجراء غير المتزامن لنقل ملكية الصف، ثم إعادة المحاولة.

CannotRemoveTeacherWithNoCourseOwner

يشير الرمز CannotRemoveTeacherWithNoCourseOwner إلى أنّه لا يمكن إزالة معلّم من دورة تعليمية بدون مالك.

الإجراء المحتمَل: وصف سبب تعذُّر إزالة المعلّم واقتراح أنّه قد لا تتم إزالته في معظم الحالات، تم حذف حساب مستخدم مالك الدورة التدريبية، ما أدّى إلى ظهور حالة غير صالحة للدورة التدريبية.

InactiveCourseOwner

يشير الرمز InactiveCourseOwner إلى أنّ الإجراء المطلوب غير مسموح به لأنّه تم حذف حساب مالك الدورة التدريبية. على مشرف حساب مالك الدورة التدريبية استعادة حساب مالك الدورة التدريبية قبل اتّخاذ الإجراء المطلوب.

الإجراء المحتمَل: وصف سبب الخطأ واقتراح أن يحاول المشرف استعادة حساب مالك الدورة التدريبية قبل إعادة محاولة تنفيذ العملية

IneligibleOwner

يشير الرمز IneligibleOwner إلى أنّه لا يمكن إضافة المستخدم كمالك للدورة التدريبية لأنّه ليس مدرسًا مساعدًا.

الإجراء المحتمَل: يُرجى وصف سبب تعذُّر إجراء الإجراء. إذا لم يكن المستخدم الذي يطلب إجراء التغيير مشرفًا، ننصحك بأن يرسل المستخدم أولاً دعوة إلى المستخدم ليصبح معلّمًا في الدورة التدريبية قبل تعديل مالكها. إذا كان المستخدم الذي يطلب ذلك مشرفًا، اقترح عليه إضافة المستخدم أولاً كمعلّم مساعد في الدورة التدريبية.

UserCannotOwnCourse

يشير الرمز UserCannotOwnCourse إلى أنّه لا يمكن إضافة المستخدم كمالك للدورة التدريبية.

الإجراء المحتمَل: وصف سبب الخطأ واقتراح أنّه لا يمكن إنشاء الدورة التدريبية مع تحديد المستخدم كمالك الدورة التدريبية قد يظهر هذا الخطأ للمستخدم غير المشرف الذي يطلب إنشاء دورة تدريبية مع مستخدم آخر غير نفسه بصفته المالك. قد يظهر هذا الخطأ للمشرف الذي يطلب من المستخدم إجراء ذلك إذا لم يكن حساب المستخدم المحدّد على أنّه المالك متوفّرًا أو إذا لم يكن المستخدم في نطاقه.

HTTP 429: RESOURCE_EXHAUSTED

يتم عرض الرمز RESOURCE_EXHAUSTED عندما لا يكون الإجراء المطلوب مسموحًا به بسبب استنفاد بعض الموارد، مثل الحصة أو سعة الخادم. تحدث هذه الأنواع من أخطاء الطلبات عادةً لأنّ تطبيقك قدّم حملاً زائدًا.

لتجنُّب تجاوز هذه الحدود وزيادة موثوقية تطبيقك، استخدِم آليات إعادة المحاولة. تشمل آليات إعادة المحاولة الصالحة ما يلي:

  • استخدِم ميزة "التراجع الأسي المقتطع" لإعادة محاولة إرسال الطلب وزيادة معدل نقل البيانات إلى أقصى حد في البيئات المتزامنة.

  • لتجنُّب حدوث تداخلات، ننصحك باستخدام خوارزمية الرقود الأسي المقتطع مع الارتعاش. يمكن أن يساعد إدخال الارتعاش في نجاح طلباتك بشكل أسرع من خلال إدخال تأخير عشوائي ينشر الارتفاعات في الطلبات.

إذا كان تطبيقك يعرض أخطاء RESOURCE_EXHAUSTED بسبب قيود الحصة، أرسِل طلبًا لزيادة الحصة. لمزيد من المعلومات، يُرجى الرجوع إلى مقالة مركز المساعدة حول حصص Monitor API.

UserCourseJoinRateLimitReached

يشير الرمز UserCourseJoinRateLimitReached إلى أنّ المستخدم قد انضم إلى الحد الأقصى المسموح به من الدورات التدريبية في يوم واحد. لمزيد من المعلومات، يُرجى الاطّلاع على قسم "دعوات المجموعات وحجمها" في مقالة مركز المساعدة فهم سياسات "مجموعات Google" وحدودها.

الإجراء المحتمَل: وصف سبب الخطأ وتقترح على المستخدم الانتظار لمدة يوم واحد قبل الانضمام إلى الدورة التدريبية.

HTTP 500: INTERNAL

يشير الرمز INTERNAL إلى حدوث خطأ غير متوقّع أثناء معالجة الطلب. يمكن أيضًا حلّ أخطاء طلبات INTERNAL في كثير من الأحيان باستخدام التراجع الدليلي لإعادة محاولة إرسال الطلب. إذا استمر ظهور خطأ INTERNAL، يمكنك الإبلاغ عنه من خلال إرسال تقرير عن خطأ في أداة تتبُّع المشاكل العامة لواجهة برمجة التطبيقات Classroom API.