Messages d'erreur courants de l'API Google Classroom

Cette page décrit certains messages d'erreur courants, problèmes et actions possibles de l'API Google Classroom pour les types d'erreurs suivants :

HTTP 400: FAILED_PRECONDITION

Une erreur FAILED_PRECONDITION est renvoyée lorsque l'utilisateur tente une action qui ne peut pas être autorisée, car il a atteint une limite ou un état d'application, tel que CourseNotModifiable. Pour corriger une erreur FAILED_PRECONDITION, demandez à l'utilisateur d'effectuer une action, puis de réessayer. Dans certains cas, vous pouvez également utiliser des points de terminaison alternatifs pour corriger l'état au nom de l'utilisateur.

AttachmentNotVisible

AttachmentNotVisible indique qu'une ou plusieurs pièces jointes spécifiées ne sont pas visibles par l'utilisateur, ne sont pas du type demandé ou n'existent pas. Par exemple, les éléments Drive qui n'ont pas été partagés avec l'utilisateur renvoient cette erreur.

Action possible : décrivez la cause de l'échec et suggérez à l'utilisateur de vérifier les identifiants qu'il a inclus, tels que les ID de fichier Drive. Assurez-vous également que l'utilisateur dispose des autorisations appropriées pour afficher la pièce jointe.

CannotRemoveCourseFolderOwner

CannotRemoveCourseFolderOwner indique que le propriétaire du dossier Drive du cours ne peut pas être supprimé.

Action possible : décrivez la cause de l'échec et suggérez à l'utilisateur de transférer la propriété du dossier Drive du cours à un autre utilisateur, puis de réessayer.

CannotRemoveCourseOwner

CannotRemoveCourseOwner indique que le propriétaire du cours ne peut pas être supprimé.

Action possible : décrivez la cause de l’échec et suggérez que le propriétaire du cours ne peut pas être supprimé. Dans la plupart des cas, l'utilisateur tente de se supprimer lui-même, ce qui n'est pas autorisé.

CannotRemoveCourseOwnerTransferIncomplete

CannotRemoveCourseOwnerTransferIncomplete indique que le propriétaire du cours ne peut pas être supprimé, car le transfert de propriété de ce cours est toujours en cours.

Action possible : décrivez la cause de l'échec et suggérez à l'utilisateur d'attendre quelques instants que l'action asynchrone de transfert de propriété du cours soit terminée, puis de réessayer.

CannotRemoveTeacherWithNoCourseOwner

CannotRemoveTeacherWithNoCourseOwner indique qu'un enseignant ne peut pas être supprimé d'un cours sans propriétaire.

Action possible : décrivez la cause de l'échec et suggérez que l' enseignant ne peut pas être supprimé. Dans la plupart des cas, le compte utilisateur du propriétaire du cours a été supprimé, ce qui a entraîné un état de cours non valide.

CourseMemberLimitReached

CourseMemberLimitReached indique que l'action tentée dépasserait le nombre maximal autorisé de membres du cours. Ce code est généralement renvoyé par le students.create() Pour en savoir plus, consultez la section "Limites de taille des classes" de l'article du Centre d'aide Inviter des élèves à votre cours.

Action possible : décrivez la cause de l’échec et suggérez à l’utilisateur de supprimer les membres du cours qui ne sont pas nécessaires.

CourseNotModifiable

CourseNotModifiable indique que le cours concerné est dans un état qui ne permet pas de modifier ses propriétés (autres que l'état du cours lui-même).

Action possible : demandez à l'utilisateur de modifier l'état du cours pour qu'il soit modifiable. Pour modifier l'état, utilisez courses.patch(). L'état du cours peut être modifié dans une requête qui modifie d'autres propriétés.

CourseTeacherLimitReached

CourseTeacherLimitReached indique que l'action demandée dépasserait le nombre maximal autorisé d'enseignants du cours. Ce code est généralement renvoyé par la teachers.create() méthode. Pour en savoir plus, consultez la section "Limites de taille des classes" de l'article du Centre d'aide Ajouter un enseignant collaborateur à un cours.

Action possible : décrivez la cause de l’échec et suggérez à l’utilisateur de supprimer les enseignants du cours qui ne sont pas nécessaires. Si cela s'applique à votre application, vous pouvez utiliser la teachers.delete() méthode pour gérer les listes d'enseignants au nom de l'utilisateur.

CourseTitleCannotContainUrl

CourseTitleCannotContainUrl indique que l'action demandée n'est pas autorisée, car elle introduirait une URL dans le titre du cours. Les modèles d'URL ne sont pas compatibles avec les titres de cours.

Action possible : décrivez la cause de l'échec et suggérez à l'utilisateur de supprimer le modèle d'URL du champ title. Les URL sont autorisées dans le champ description.

CourseTopicLimitReached

CourseTopicLimitReached indique que l'action demandée dépasserait le nombre maximal autorisé de thèmes dans un cours. Ce code est généralement renvoyé par la courses.topics.create() méthode.

Action possible : décrivez la cause de l’échec et suggérez à l’utilisateur de supprimer les thèmes qui ne sont pas nécessaires. Si cela s'applique à votre application, vous pouvez utiliser la courses.topics.delete() méthode pour gérer les thèmes au nom de l'utilisateur.

EmptyAssignees

EmptyAssignees indique que l'action demandée supprimerait tous les participants du devoir correspondant. Les devoirs sans participants ne sont pas acceptés.

Action possible : décrivez la cause de l'échec et suggérez que le propriétaire du cours ne peut pas supprimer tous les participants.

InactiveCourseOwner

InactiveCourseOwner indique que l'action demandée n'est pas autorisée, car le compte du propriétaire du cours a été supprimé. L'administrateur du propriétaire du cours doit restaurer le compte du propriétaire du cours avant d'effectuer l'action demandée.

Action possible : décrivez la cause de l'échec et suggérez à l' administrateur de restaurer le compte du propriétaire du cours avant de réessayer l' opération.

IneligibleOwner

IneligibleOwner indique que l'utilisateur ne peut pas être ajouté en tant que propriétaire du cours, car il n'est pas un enseignant collaborateur.

Action possible : décrivez la cause de l'échec. Si l'utilisateur demandeur n'est pas un administrateur, suggérez-lui d'envoyer d'abord à l'utilisateur une invitation à devenir enseignant dans le cours avant de modifier le propriétaire. Si l'utilisateur demandeur est un administrateur, suggérez-lui d'ajouter d'abord l'utilisateur en tant qu'enseignant collaborateur du cours.

ListCoursesStudentAndTeacherFilter

ListCoursesStudentAndTeacherFilter se produit lors de l'envoi d'une courses.list() requête avec les deux champs teacherId et studentId renseignés. Un seul de ces champs peut être défini dans une seule requête.

Vous pouvez toujours obtenir une liste de cours avec des élèves et des enseignants spécifiques en effectuant deux requêtes distinctes. Tout d'abord, récupérez les cours de l'enseignant en envoyant une requête courses.list() avec le champ teacherId renseigné, puis envoyez une autre requête courses.list() avec le champ studentId renseigné. Calculez l'intersection des résultats pour obtenir la liste des cours qui correspondent aux deux utilisateurs.

PendingInvitationExists

PendingInvitationExists indique qu'une personne a déjà été invitée à devenir propriétaire du cours. Cette erreur se produit lors du transfert de propriété du cours lorsqu'un transfert a été démarré précédemment, mais n'a pas encore été accepté par le nouveau propriétaire.

UserCannotOwnCourse

UserCannotOwnCourse indique que l'utilisateur ne peut pas être ajouté en tant que propriétaire du cours.

Action possible : décrivez la cause de l’échec et suggérez que le cours ne peut pas être créé avec l’utilisateur comme propriétaire du cours. Un utilisateur demandeur qui n'est pas administrateur peut voir cette erreur s'il tente de créer un cours avec un autre utilisateur que lui-même comme propriétaire. Un utilisateur demandeur qui est administrateur peut voir cette erreur si le compte utilisateur spécifié comme propriétaire n'existe pas ou si l'utilisateur ne fait pas partie de son domaine.

UserGroupsMembershipLimitReached

UserGroupsMembershipLimitReached indique que l'utilisateur est déjà membre du nombre maximal autorisé de groupes et ne peut rejoindre aucun cours. Ce code est généralement renvoyé par students.create() ou teachers.create(). Pour en savoir plus, consultez la section "Limites de taille des classes" de l' article du Centre d'aide Inviter des élèves à votre cours.

Action possible : décrivez la cause de l’échec et suggérez à l’utilisateur de quitter les cours auxquels il ne participe pas. L'utilisateur peut envisager de créer un compte supplémentaire s'il doit participer à d'autres cours. Si cela s'applique à votre application, vous pouvez utiliser students.create() ou teachers.delete() pour gérer les listes au nom de l'utilisateur.

HTTP 403: PERMISSION_DENIED

Toutes les méthodes de l'API Classroom peuvent renvoyer une erreur PERMISSION_DENIED (HTTP 403) si un utilisateur final ne remplit pas les conditions préalables pour accéder à l'API. Le message accompagnant l'erreur contient un message d'erreur qui vous aide à identifier la cause et à indiquer aux utilisateurs l'action appropriée à effectuer.

Les sections suivantes décrivent les messages d'erreur courants de l'API Classroom.

CannotDirectAddUser

CannotDirectAddUser indique qu'un utilisateur ne peut pas être ajouté directement au cours. Ce code se produit lorsqu'un administrateur de domaine tente d'ajouter un utilisateur à un cours et que cet utilisateur n'a pas d'adresse e-mail ou n'appartient pas au domaine.

Action possible : décrivez la cause de l’échec et suggérez à l’administrateur de domaine de vérifier que le compte utilisateur existe et qu’il se trouve dans le domaine de l’administrateur du cours.

CannotInviteUserInUntrustedDomain

CannotInviteUserInUntrustedDomain indique que l'utilisateur invité ou créé ne se trouve pas dans le même domaine que l'appelant ou dans un domaine approuvé par l'appelant. Pour les appelants disposant d'une licence Google Workspace for Education Fundamentals, les utilisateurs externes au domaine non approuvés ne peuvent pas être ajoutés directement ni invités à un cours.

Action possible : décrivez la cause de l'échec et suggérez à l'appelant d'envisager l'une des options suivantes :

  • Incluez les domaines des utilisateurs appelants et destinataires dans la liste des domaines approuvés de chacun, puis réessayez.
  • Suggérez à l'appelant de partager manuellement un lien d'invitation ou un code de cours. Notez que cela nécessite qu'un administrateur configure les invitations externes au domaine. Pour en savoir plus, consultez Inviter des élèves à votre cours.
  • Suggérez à l'appelant de passer à une licence Google Workspace for Education payante, car la limitation ne s'applique qu'à la licence Fundamentals.

ClassroomApiDisabled

ClassroomApiDisabled indique que l'utilisateur demandeur n'a pas accès à l'API Classroom.

Action possible : redirigez l'utilisateur vers les instructions permettant d'activer l'accès aux données Classroom. Consultez également ClassroomDisabled, car l'utilisateur peut utiliser le mauvais compte.

ClassroomDisabled

ClassroomDisabled indique que l'utilisateur demandeur n'a pas accès à Classroom.

Action possible : redirigez l'utilisateur vers les instructions permettant d'activer l'accès à Classroom. L'utilisateur peut également utiliser le mauvais compte. Vous pouvez donc également fournir un lien vers l'utilisation de plusieurs comptes afin que l' utilisateur puisse sélectionner le bon compte.

ExpiredAddOnToken

ExpiredAddOnToken indique que le jeton de module complémentaire utilisé pour effectuer des appels à l'API a expiré.

Action possible : demandez à l'utilisateur d'actualiser la page ou de se reconnecter au module complémentaire afin que vous puissiez obtenir le nouveau paramètre de requête addOnToken à partir de l'URL de la requête.

InvalidAddOnToken

InvalidAddOnToken indique que le jeton de module complémentaire transmis dans une requête n'est pas autorisé à créer une pièce jointe de module complémentaire dans le devoir.

Action possible : cette erreur peut être générée si l'utilisateur se connecte au module complémentaire avec un compte différent de celui de Classroom. Demandez à l'utilisateur de se déconnecter de tous les autres comptes du navigateur ou d'ouvrir Classroom dans une fenêtre de navigation privée de Chrome.

ProjectPermissionDenied

ProjectPermissionDenied indique que la requête a tenté de modifier une ressource associée à un autre projet de la Developer Console.

Action possible : indiquez que votre application ne peut pas effectuer la requête prévue. Elle ne peut être effectuée que par le projet de la Developer Console de l'ID client OAuth qui a créé la ressource.

UserIneligibleToUpdateGradingPeriodSettings

UserIneligibleToUpdateGradingPeriodSettings indique que la requête a tenté de modifier les paramètres de la période de notation dans un cours où l'utilisateur demandeur ou le propriétaire du cours ne dispose pas de la licence Google Workspace for Education appropriée, ou que l'utilisateur demandeur n'est pas un enseignant du cours ni un administrateur de domaine.

Action possible : indiquez que votre application ne peut pas effectuer la requête prévue pour modifier les paramètres de la période de notation en raison de l'état de la licence ou du rôle du cours. Les licences peuvent être attribuées dans la console d'administration Google.

HTTP 429: RESOURCE_EXHAUSTED

L'erreur RESOURCE_EXHAUSTED est renvoyée lorsque l'action demandée n'est pas autorisée, car une ressource, telle qu'un quota ou une capacité de serveur, est épuisée. Ces types d'erreurs de requête se produisent généralement, car votre application a généré une charge excessive.

Pour éviter de déclencher ces limites et améliorer la fiabilité de votre application, utilisez des mécanismes de nouvelle tentative. Les mécanismes de nouvelle tentative valides incluent les suivants :

  • Utilisez un intervalle exponentiel entre les tentatives tronqué pour réessayer la requête et optimiser le débit des requêtes dans les environnements avec simultanéité.

  • Pour éviter les conflits, envisagez d'utiliser un intervalle exponentiel entre les tentatives tronqué avec gigue. L'introduction d'une gigue peut aider vos requêtes à aboutir plus rapidement en introduisant un délai aléatoire qui répartit les pics de requêtes.

Si votre application renvoie des erreurs RESOURCE_EXHAUSTED en raison de limites de quota, envoyez une demande d'augmentation de quota. Pour en savoir plus, consultez l'article du Centre d'aide Surveiller les quotas d'API.

UserCourseJoinRateLimitReached

UserCourseJoinRateLimitReached indique que l'utilisateur a déjà rejoint le nombre maximal autorisé de cours en une journée. Pour en savoir plus, consultez la section "Invitations et taille des groupes" de l'article du Centre d'aide Comprendre les règles et les limites relatives aux groupes.

Action possible : décrivez la cause de l’échec et suggérez à l’utilisateur d’attendre un jour avant de rejoindre le cours.

HTTP 500: INTERNAL

INTERNAL indique qu'une erreur inattendue s'est produite lors du traitement de la requête. Les erreurs de requête INTERNAL peuvent également être résolues en utilisant un intervalle exponentiel entre les tentatives pour réessayer la requête. Si une erreur INTERNAL persiste, elle peut être signalée en créant un bug dans l'outil public de suivi des problèmes de l'API Classroom.