Mensajes de error comunes de la API de Google Classroom

En esta página, se describen algunos mensajes de error, problemas y acciones posibles comunes de la API de Google Classroom para los siguientes tipos de errores:

HTTP 400: FAILED_PRECONDITION

Se devuelve un FAILED_PRECONDITION cuando el usuario intenta realizar una acción que no se puede permitir, ya sea porque alcanzó un límite o un estado de la aplicación, como CourseNotModifiable. Para corregir un FAILED_PRECONDITION, indícale al usuario que realice alguna acción y, luego, vuelva a intentarlo. O, en algunos casos, puedes usar extremos alternativos para corregir el estado en nombre del usuario.

AttachmentNotVisible

AttachmentNotVisible indica que uno o más de los archivos adjuntos especificados no son visibles para el usuario, no son del tipo solicitado o no existen. Por ejemplo, los elementos de Drive que no se compartieron con el usuario devolverían este error.

Acción posible: Describe la causa del error y sugiere que el usuario vuelva a verificar los identificadores que incluyó, como los IDs de archivos de Drive. Además, asegúrate de que el usuario tenga los permisos adecuados para ver el archivo adjunto.

CannotRemoveCourseFolderOwner

CannotRemoveCourseFolderOwner indica que no se puede quitar al propietario de la carpeta de Drive del curso.

Acción posible: Describe la causa del error y sugiere que el usuario transfiera la propiedad de la carpeta de Drive del curso a otro usuario y vuelva a intentarlo.

CannotRemoveCourseOwner

CannotRemoveCourseOwner indica que no se puede quitar al propietario del curso.

Acción posible: Describe la causa del error y sugiere que es posible que no se quite al propietario del curso. En la mayoría de los casos, el usuario intenta quitarse a sí mismo, lo que no está permitido.

CannotRemoveCourseOwnerTransferIncomplete

CannotRemoveCourseOwnerTransferIncomplete indica que es posible que no se pueda quitar al propietario del curso porque la transferencia de propiedad de esta clase aún está en curso.

Acción posible: Describe la causa del error y sugiere que el usuario espere unos momentos a que se complete la acción asíncrona de transferir la propiedad de la clase y, luego, vuelva a intentarlo.

CannotRemoveTeacherWithNoCourseOwner

CannotRemoveTeacherWithNoCourseOwner indica que no se puede quitar a un profesor de un curso sin propietario.

Acción posible: Describe la causa del error y sugiere que es posible que no se quite al profesor. En la mayoría de los casos, se borró la cuenta de usuario del propietario del curso, lo que provocó un estado no válido del curso.

CourseMemberLimitReached

CourseMemberLimitReached indica que la acción intentada excedería la cantidad máxima permitida de miembros del curso. Por lo general, este código lo devuelve students.create(). Para obtener más información, consulta la sección "Límites de tamaño de la clase" del artículo del Centro de ayuda Cómo invitar a los estudiantes a una clase.

Acción posible: Describe la causa del error y sugiere que el usuario quite los miembros innecesarios del curso.

CourseNotModifiable

CourseNotModifiable indica que el curso pertinente se encuentra en un estado que no permite modificar sus propiedades (aparte del estado del curso en sí).

Acción posible: Indicarle al usuario que cambie el curso a un estado modificable. Para cambiar el estado, usa courses.patch(). El estado del curso se puede cambiar en una solicitud que cambie otras propiedades.

CourseTeacherLimitReached

CourseTeacherLimitReached indica que la acción solicitada excedería la cantidad máxima permitida de profesores del curso. Por lo general, este código lo devuelve el método teachers.create(). Para obtener más información, consulta la sección "Limitaciones en el tamaño de la clase" del artículo del Centro de ayuda Cómo agregar a un profesor adjunto a una clase.

Acción posible: Describe la causa del error y sugiere que el usuario quite a los profesores del curso que no sean necesarios. Si corresponde a tu app, puedes usar el método teachers.delete() para administrar las listas de profesores en nombre del usuario.

CourseTitleCannotContainUrl

CourseTitleCannotContainUrl indica que no se permite la acción solicitada porque introduciría una URL en el título del curso. Los patrones de URL no se admiten en los títulos de los cursos.

Acción posible: Describe la causa del error y sugiere que el usuario quite el patrón de URL del campo title. Se permiten las URLs en el campo description.

CourseTopicLimitReached

CourseTopicLimitReached indica que la acción solicitada excedería la cantidad máxima permitida de temas en un curso. Este código suele devolverlo el método courses.topics.create().

Acción posible: Describe la causa del error y sugiere que el usuario quite los temas innecesarios. Si corresponde a tu app, puedes usar el método courses.topics.delete() para administrar temas en nombre del usuario.

InactiveCourseOwner

InactiveCourseOwner indica que no se permite la acción solicitada porque se borró la cuenta del propietario del curso. El administrador del propietario del curso debe restablecer la cuenta del propietario del curso antes de realizar la acción solicitada.

Acción posible: Describe la causa del error y sugiere que el administrador restablezca la cuenta del propietario del curso antes de volver a intentar la operación.

IneligibleOwner

IneligibleOwner indica que no se puede agregar al usuario como propietario del curso porque no es profesor adjunto.

Acción posible: Describe la causa del error. Si el usuario solicitante no es administrador, sugiérele que primero le envíe una invitación al usuario para que sea profesor del curso antes de actualizar el propietario. Si el usuario solicitante es administrador, sugiérele que primero agregue al usuario como co-profesor del curso.

PendingInvitationExists

PendingInvitationExists indica que ya se invitó a alguien a tomar la propiedad del curso. Este error se produce durante la transferencia de propiedad del curso cuando se inició una transferencia anteriormente, pero el nuevo propietario aún no la aceptó.

UserCannotOwnCourse

UserCannotOwnCourse indica que no se puede agregar al usuario como propietario del curso.

Acción posible: Describe la causa del error y sugiere que el curso no se puede crear con el usuario como propietario. Es posible que un usuario solicitante que no sea administrador vea este error si intenta crear un curso con un usuario que no sea él mismo como propietario. Un administrador que solicita un usuario puede ver este error si la cuenta de usuario especificada como propietario no existe o si el usuario no está en su dominio.

UserGroupsMembershipLimitReached

UserGroupsMembershipLimitReached indica que el usuario ya es miembro de la cantidad máxima permitida de grupos y no puede unirse a ningún curso. Por lo general, students.create() o teachers.create() devuelven este código. Para obtener más información, consulta la sección "Limitaciones en el tamaño de la clase" del artículo del Centro de ayuda Cómo invitar a los estudiantes a una clase.

Acción posible: Describe la causa del error y sugiere que el usuario abandone los cursos en los que no participa. El usuario puede considerar la posibilidad de crear una cuenta adicional si necesita participar en más cursos. Si corresponde a tu app, puedes usar students.create() o teachers.delete() para administrar las listas en nombre del usuario.

HTTP 403: PERMISSION_DENIED

Todos los métodos de la API de Classroom pueden devolver un error PERMISSION_DENIED (HTTP 403) si un usuario final no cumple con los requisitos previos para acceder. El mensaje que acompaña al error contiene un mensaje de error para ayudarte a identificar la causa y dirigir a los usuarios a que realicen la acción adecuada.

En las siguientes secciones, se describen los mensajes de error comunes de la API de Classroom.

CannotDirectAddUser

CannotDirectAddUser indica que no se puede agregar directamente a un usuario al curso. Este código se produce cuando un administrador del dominio intenta agregar un usuario a un curso y ese usuario no tiene una dirección de correo electrónico o no pertenece al dominio.

Acción Posible: Describe la causa del error y sugiere que el administrador del dominio verifique que la cuenta de usuario exista y esté dentro del dominio del administrador del curso.

ClassroomApiDisabled

ClassroomApiDisabled indica que el usuario solicitante no tiene acceso a la API de Classroom.

Acción posible: Dirige al usuario a las instrucciones para habilitar el acceso a los datos de Classroom. Consulta también ClassroomDisabled, ya que es posible que el usuario esté usando la cuenta incorrecta.

ClassroomDisabled

ClassroomDisabled indica que el usuario solicitante no tiene acceso a Classroom.

Acción posible: Dirige al usuario a las instrucciones para habilitar el acceso a Classroom. Es posible que el usuario también esté usando la cuenta incorrecta, por lo que también puedes proporcionar un vínculo para usar varias cuentas para que el usuario pueda seleccionar la cuenta correcta.

ExpiredAddOnToken

ExpiredAddOnToken indica que el token del complemento que se usa para realizar llamadas a la API venció.

Acción posible: Solicita al usuario que actualice la página o que vuelva a acceder al complemento para que puedas obtener el nuevo parámetro de consulta addOnToken de la URL de la solicitud.

InvalidAddOnToken

InvalidAddOnToken indica que el token del complemento que se pasó en una solicitud no está autorizado para crear un archivo adjunto del complemento en la tarea.

Acción posible: Este error se puede generar si el usuario accede al complemento con una cuenta diferente de la que usa en Classroom. Indícale al usuario que salga de todas las demás cuentas en el navegador o que abra Classroom en una ventana de incógnito de Chrome.

ProjectPermissionDenied

ProjectPermissionDenied indica que la solicitud intentó modificar un recurso asociado con un proyecto diferente de Developer Console.

Acción posible: Indica que tu aplicación no puede realizar la solicitud prevista. Solo se puede realizar desde el proyecto de la consola para desarrolladores del ID de cliente de OAuth que creó el recurso.

UserIneligibleToUpdateGradingPeriodSettings

UserIneligibleToUpdateGradingPeriodSettings indica que el intento de solicitud modificó la configuración del período de calificación en un curso en el que el usuario solicitante o el propietario del curso no tienen la licencia adecuada de Google Workspace for Education, o bien el usuario solicitante no es profesor del curso ni administrador del dominio.

Acción posible: Indica que tu aplicación no puede realizar la solicitud prevista para actualizar la configuración del período de calificación debido al estado de la licencia o el rol del curso. Las licencias se pueden asignar en la Consola del administrador de Google.

HTTP 429: RESOURCE_EXHAUSTED

Se devuelve el error RESOURCE_EXHAUSTED cuando no se permite la acción solicitada porque se agotó algún recurso, como la cuota o la capacidad del servidor. Por lo general, estos tipos de errores de solicitud ocurren porque tu app produjo una carga excesiva.

Para evitar activar estos límites y aumentar la confiabilidad de tu aplicación, usa mecanismos de reintento. Entre los mecanismos de reintento válidos, se incluyen los siguientes:

  • Usa la retirada exponencial truncada para reintentar la solicitud y maximizar la capacidad de procesamiento de solicitudes en entornos simultáneos.

  • Para evitar colisiones, considera usar una retirada exponencial truncada con jitter. La introducción de fluctuaciones puede ayudar a que tus solicitudes se realicen más rápido, ya que introduce una demora aleatoria que distribuye los picos en las solicitudes.

Si tu aplicación devuelve errores RESOURCE_EXHAUSTED debido a limitaciones de cuota, envía una solicitud para aumentar la cuota. Para obtener más información, consulta el artículo del Centro de ayuda sobre cómo supervisar las cuotas de la API.

UserCourseJoinRateLimitReached

UserCourseJoinRateLimitReached indica que el usuario ya se unió a la cantidad máxima permitida de cursos en un día. Para obtener más información, consulta la sección "Invitaciones y tamaño del grupo" del artículo del Centro de ayuda Información sobre las políticas y los límites de los grupos.

Acción posible: Describe la causa del error y sugiere que el usuario espere un día antes de unirse al curso.

HTTP 500: INTERNAL

INTERNAL indica que se produjo un error inesperado durante el procesamiento de la solicitud. Los errores de solicitud INTERNAL también se pueden resolver con frecuencia usando la retirada exponencial para reintentar la solicitud. Si persiste un error de INTERNAL, puedes informar el error en el servicio de seguimiento de errores público de la API de Classroom.