CLASSROOM

classroom.courses.aliases.create

valid {
    input.Body.alias == STRING
    input.ReqMap.courseId == STRING
    input.ProviderMetadata.Region == STRING
}

classroom.courses.aliases.delete

valid {
    input.ReqMap.alias == STRING
    input.ReqMap.courseId == STRING
    input.ProviderMetadata.Region == STRING
}

classroom.courses.aliases.list

valid {
    input.ReqMap.courseId == STRING
    input.Qs.pageSize == INTEGER
    input.Qs.pageToken == STRING
    input.ProviderMetadata.Region == STRING
}

classroom.courses.announcements.create

enum_AnnouncementAssigneeMode := [ "ASSIGNEE_MODE_UNSPECIFIED", "ALL_STUDENTS", "INDIVIDUAL_STUDENTS" ]
enum_AnnouncementState := [ "ANNOUNCEMENT_STATE_UNSPECIFIED", "PUBLISHED", "DRAFT", "DELETED" ]
enum_SharedDriveFileShareMode := [ "UNKNOWN_SHARE_MODE", "VIEW", "EDIT", "STUDENT_COPY" ]

valid {
    input.Body.alternateLink == STRING
    input.Body.assigneeMode == enum_AnnouncementAssigneeMode[_]
    input.Body.courseId == STRING
    input.Body.creationTime == STRING
    input.Body.creatorUserId == STRING
    input.Body.id == STRING
    input.Body.individualStudentsOptions.studentIds[_] == STRING
    input.Body.materials[_].driveFile.driveFile.alternateLink == STRING
    input.Body.materials[_].driveFile.driveFile.id == STRING
    input.Body.materials[_].driveFile.driveFile.thumbnailUrl == STRING
    input.Body.materials[_].driveFile.driveFile.title == STRING
    input.Body.materials[_].driveFile.shareMode == enum_SharedDriveFileShareMode[_]
    input.Body.materials[_].form.formUrl == STRING
    input.Body.materials[_].form.responseUrl == STRING
    input.Body.materials[_].form.thumbnailUrl == STRING
    input.Body.materials[_].form.title == STRING
    input.Body.materials[_].link.thumbnailUrl == STRING
    input.Body.materials[_].link.title == STRING
    input.Body.materials[_].link.url == STRING
    input.Body.materials[_].youtubeVideo.alternateLink == STRING
    input.Body.materials[_].youtubeVideo.id == STRING
    input.Body.materials[_].youtubeVideo.thumbnailUrl == STRING
    input.Body.materials[_].youtubeVideo.title == STRING
    input.Body.scheduledTime == STRING
    input.Body.state == enum_AnnouncementState[_]
    input.Body.text == STRING
    input.Body.updateTime == STRING
    input.ReqMap.courseId == STRING
    input.ProviderMetadata.Region == STRING
}

classroom.courses.announcements.delete

valid {
    input.ReqMap.courseId == STRING
    input.ReqMap.id == STRING
    input.ProviderMetadata.Region == STRING
}

classroom.courses.announcements.get

valid {
    input.ReqMap.courseId == STRING
    input.ReqMap.id == STRING
    input.ProviderMetadata.Region == STRING
}

classroom.courses.announcements.list

enum_AnnouncementStatesParameter := [ "ANNOUNCEMENT_STATE_UNSPECIFIED", "PUBLISHED", "DRAFT", "DELETED" ]

valid {
    input.ReqMap.courseId == STRING
    input.Qs.announcementStates == enum_AnnouncementStatesParameter[_]
    input.Qs.orderBy == STRING
    input.Qs.pageSize == INTEGER
    input.Qs.pageToken == STRING
    input.ProviderMetadata.Region == STRING
}

classroom.courses.announcements.modifyAssignees

enum_ModifyAnnouncementAssigneesRequestAssigneeMode := [ "ASSIGNEE_MODE_UNSPECIFIED", "ALL_STUDENTS", "INDIVIDUAL_STUDENTS" ]

valid {
    input.Body.assigneeMode == enum_ModifyAnnouncementAssigneesRequestAssigneeMode[_]
    input.Body.modifyIndividualStudentsOptions.addStudentIds[_] == STRING
    input.Body.modifyIndividualStudentsOptions.removeStudentIds[_] == STRING
    input.ReqMap.courseId == STRING
    input.ReqMap.id == STRING
    input.ProviderMetadata.Region == STRING
}

classroom.courses.announcements.patch

enum_AnnouncementAssigneeMode := [ "ASSIGNEE_MODE_UNSPECIFIED", "ALL_STUDENTS", "INDIVIDUAL_STUDENTS" ]
enum_AnnouncementState := [ "ANNOUNCEMENT_STATE_UNSPECIFIED", "PUBLISHED", "DRAFT", "DELETED" ]
enum_SharedDriveFileShareMode := [ "UNKNOWN_SHARE_MODE", "VIEW", "EDIT", "STUDENT_COPY" ]

valid {
    input.Body.alternateLink == STRING
    input.Body.assigneeMode == enum_AnnouncementAssigneeMode[_]
    input.Body.courseId == STRING
    input.Body.creationTime == STRING
    input.Body.creatorUserId == STRING
    input.Body.id == STRING
    input.Body.individualStudentsOptions.studentIds[_] == STRING
    input.Body.materials[_].driveFile.driveFile.alternateLink == STRING
    input.Body.materials[_].driveFile.driveFile.id == STRING
    input.Body.materials[_].driveFile.driveFile.thumbnailUrl == STRING
    input.Body.materials[_].driveFile.driveFile.title == STRING
    input.Body.materials[_].driveFile.shareMode == enum_SharedDriveFileShareMode[_]
    input.Body.materials[_].form.formUrl == STRING
    input.Body.materials[_].form.responseUrl == STRING
    input.Body.materials[_].form.thumbnailUrl == STRING
    input.Body.materials[_].form.title == STRING
    input.Body.materials[_].link.thumbnailUrl == STRING
    input.Body.materials[_].link.title == STRING
    input.Body.materials[_].link.url == STRING
    input.Body.materials[_].youtubeVideo.alternateLink == STRING
    input.Body.materials[_].youtubeVideo.id == STRING
    input.Body.materials[_].youtubeVideo.thumbnailUrl == STRING
    input.Body.materials[_].youtubeVideo.title == STRING
    input.Body.scheduledTime == STRING
    input.Body.state == enum_AnnouncementState[_]
    input.Body.text == STRING
    input.Body.updateTime == STRING
    input.ReqMap.courseId == STRING
    input.ReqMap.id == STRING
    input.Qs.updateMask == STRING
    input.ProviderMetadata.Region == STRING
}

classroom.courses.courseWork.create

enum_CourseWorkAssigneeMode := [ "ASSIGNEE_MODE_UNSPECIFIED", "ALL_STUDENTS", "INDIVIDUAL_STUDENTS" ]
enum_CourseWorkState := [ "COURSE_WORK_STATE_UNSPECIFIED", "PUBLISHED", "DRAFT", "DELETED" ]
enum_CourseWorkSubmissionModificationMode := [ "SUBMISSION_MODIFICATION_MODE_UNSPECIFIED", "MODIFIABLE_UNTIL_TURNED_IN", "MODIFIABLE" ]
enum_CourseWorkWorkType := [ "COURSE_WORK_TYPE_UNSPECIFIED", "ASSIGNMENT", "SHORT_ANSWER_QUESTION", "MULTIPLE_CHOICE_QUESTION" ]
enum_SharedDriveFileShareMode := [ "UNKNOWN_SHARE_MODE", "VIEW", "EDIT", "STUDENT_COPY" ]

valid {
    input.Body.alternateLink == STRING
    input.Body.assigneeMode == enum_CourseWorkAssigneeMode[_]
    input.Body.assignment.studentWorkFolder.alternateLink == STRING
    input.Body.assignment.studentWorkFolder.id == STRING
    input.Body.assignment.studentWorkFolder.title == STRING
    input.Body.associatedWithDeveloper == BOOLEAN
    input.Body.courseId == STRING
    input.Body.creationTime == STRING
    input.Body.creatorUserId == STRING
    input.Body.description == STRING
    input.Body.dueDate.day == INTEGER
    input.Body.dueDate.month == INTEGER
    input.Body.dueDate.year == INTEGER
    input.Body.dueTime.hours == INTEGER
    input.Body.dueTime.minutes == INTEGER
    input.Body.dueTime.nanos == INTEGER
    input.Body.dueTime.seconds == INTEGER
    input.Body.gradeCategory.defaultGradeDenominator == INTEGER
    input.Body.gradeCategory.id == STRING
    input.Body.gradeCategory.name == STRING
    input.Body.gradeCategory.weight == INTEGER
    input.Body.id == STRING
    input.Body.individualStudentsOptions.studentIds[_] == STRING
    input.Body.materials[_].driveFile.driveFile.alternateLink == STRING
    input.Body.materials[_].driveFile.driveFile.id == STRING
    input.Body.materials[_].driveFile.driveFile.thumbnailUrl == STRING
    input.Body.materials[_].driveFile.driveFile.title == STRING
    input.Body.materials[_].driveFile.shareMode == enum_SharedDriveFileShareMode[_]
    input.Body.materials[_].form.formUrl == STRING
    input.Body.materials[_].form.responseUrl == STRING
    input.Body.materials[_].form.thumbnailUrl == STRING
    input.Body.materials[_].form.title == STRING
    input.Body.materials[_].link.thumbnailUrl == STRING
    input.Body.materials[_].link.title == STRING
    input.Body.materials[_].link.url == STRING
    input.Body.materials[_].youtubeVideo.alternateLink == STRING
    input.Body.materials[_].youtubeVideo.id == STRING
    input.Body.materials[_].youtubeVideo.thumbnailUrl == STRING
    input.Body.materials[_].youtubeVideo.title == STRING
    input.Body.maxPoints == NUMBER
    input.Body.multipleChoiceQuestion.choices[_] == STRING
    input.Body.scheduledTime == STRING
    input.Body.state == enum_CourseWorkState[_]
    input.Body.submissionModificationMode == enum_CourseWorkSubmissionModificationMode[_]
    input.Body.title == STRING
    input.Body.topicId == STRING
    input.Body.updateTime == STRING
    input.Body.workType == enum_CourseWorkWorkType[_]
    input.ReqMap.courseId == STRING
    input.ProviderMetadata.Region == STRING
}

classroom.courses.courseWork.delete

valid {
    input.ReqMap.courseId == STRING
    input.ReqMap.id == STRING
    input.ProviderMetadata.Region == STRING
}

classroom.courses.courseWork.get

valid {
    input.ReqMap.courseId == STRING
    input.ReqMap.id == STRING
    input.ProviderMetadata.Region == STRING
}

classroom.courses.courseWork.list

enum_CourseWorkStatesParameter := [ "COURSE_WORK_STATE_UNSPECIFIED", "PUBLISHED", "DRAFT", "DELETED" ]

valid {
    input.ReqMap.courseId == STRING
    input.Qs.courseWorkStates == enum_CourseWorkStatesParameter[_]
    input.Qs.orderBy == STRING
    input.Qs.pageSize == INTEGER
    input.Qs.pageToken == STRING
    input.ProviderMetadata.Region == STRING
}

classroom.courses.courseWork.modifyAssignees

enum_ModifyCourseWorkAssigneesRequestAssigneeMode := [ "ASSIGNEE_MODE_UNSPECIFIED", "ALL_STUDENTS", "INDIVIDUAL_STUDENTS" ]

valid {
    input.Body.assigneeMode == enum_ModifyCourseWorkAssigneesRequestAssigneeMode[_]
    input.Body.modifyIndividualStudentsOptions.addStudentIds[_] == STRING
    input.Body.modifyIndividualStudentsOptions.removeStudentIds[_] == STRING
    input.ReqMap.courseId == STRING
    input.ReqMap.id == STRING
    input.ProviderMetadata.Region == STRING
}

classroom.courses.courseWork.patch

enum_CourseWorkAssigneeMode := [ "ASSIGNEE_MODE_UNSPECIFIED", "ALL_STUDENTS", "INDIVIDUAL_STUDENTS" ]
enum_CourseWorkState := [ "COURSE_WORK_STATE_UNSPECIFIED", "PUBLISHED", "DRAFT", "DELETED" ]
enum_CourseWorkSubmissionModificationMode := [ "SUBMISSION_MODIFICATION_MODE_UNSPECIFIED", "MODIFIABLE_UNTIL_TURNED_IN", "MODIFIABLE" ]
enum_CourseWorkWorkType := [ "COURSE_WORK_TYPE_UNSPECIFIED", "ASSIGNMENT", "SHORT_ANSWER_QUESTION", "MULTIPLE_CHOICE_QUESTION" ]
enum_SharedDriveFileShareMode := [ "UNKNOWN_SHARE_MODE", "VIEW", "EDIT", "STUDENT_COPY" ]

valid {
    input.Body.alternateLink == STRING
    input.Body.assigneeMode == enum_CourseWorkAssigneeMode[_]
    input.Body.assignment.studentWorkFolder.alternateLink == STRING
    input.Body.assignment.studentWorkFolder.id == STRING
    input.Body.assignment.studentWorkFolder.title == STRING
    input.Body.associatedWithDeveloper == BOOLEAN
    input.Body.courseId == STRING
    input.Body.creationTime == STRING
    input.Body.creatorUserId == STRING
    input.Body.description == STRING
    input.Body.dueDate.day == INTEGER
    input.Body.dueDate.month == INTEGER
    input.Body.dueDate.year == INTEGER
    input.Body.dueTime.hours == INTEGER
    input.Body.dueTime.minutes == INTEGER
    input.Body.dueTime.nanos == INTEGER
    input.Body.dueTime.seconds == INTEGER
    input.Body.gradeCategory.defaultGradeDenominator == INTEGER
    input.Body.gradeCategory.id == STRING
    input.Body.gradeCategory.name == STRING
    input.Body.gradeCategory.weight == INTEGER
    input.Body.id == STRING
    input.Body.individualStudentsOptions.studentIds[_] == STRING
    input.Body.materials[_].driveFile.driveFile.alternateLink == STRING
    input.Body.materials[_].driveFile.driveFile.id == STRING
    input.Body.materials[_].driveFile.driveFile.thumbnailUrl == STRING
    input.Body.materials[_].driveFile.driveFile.title == STRING
    input.Body.materials[_].driveFile.shareMode == enum_SharedDriveFileShareMode[_]
    input.Body.materials[_].form.formUrl == STRING
    input.Body.materials[_].form.responseUrl == STRING
    input.Body.materials[_].form.thumbnailUrl == STRING
    input.Body.materials[_].form.title == STRING
    input.Body.materials[_].link.thumbnailUrl == STRING
    input.Body.materials[_].link.title == STRING
    input.Body.materials[_].link.url == STRING
    input.Body.materials[_].youtubeVideo.alternateLink == STRING
    input.Body.materials[_].youtubeVideo.id == STRING
    input.Body.materials[_].youtubeVideo.thumbnailUrl == STRING
    input.Body.materials[_].youtubeVideo.title == STRING
    input.Body.maxPoints == NUMBER
    input.Body.multipleChoiceQuestion.choices[_] == STRING
    input.Body.scheduledTime == STRING
    input.Body.state == enum_CourseWorkState[_]
    input.Body.submissionModificationMode == enum_CourseWorkSubmissionModificationMode[_]
    input.Body.title == STRING
    input.Body.topicId == STRING
    input.Body.updateTime == STRING
    input.Body.workType == enum_CourseWorkWorkType[_]
    input.ReqMap.courseId == STRING
    input.ReqMap.id == STRING
    input.Qs.updateMask == STRING
    input.ProviderMetadata.Region == STRING
}

classroom.courses.courseWork.studentSubmissions.get

valid {
    input.ReqMap.courseId == STRING
    input.ReqMap.courseWorkId == STRING
    input.ReqMap.id == STRING
    input.ProviderMetadata.Region == STRING
}

classroom.courses.courseWork.studentSubmissions.list

enum_LateParameter := [ "LATE_VALUES_UNSPECIFIED", "LATE_ONLY", "NOT_LATE_ONLY" ]
enum_StatesParameter := [ "SUBMISSION_STATE_UNSPECIFIED", "NEW", "CREATED", "TURNED_IN", "RETURNED", "RECLAIMED_BY_STUDENT" ]

valid {
    input.ReqMap.courseId == STRING
    input.ReqMap.courseWorkId == STRING
    input.Qs.late == enum_LateParameter[_]
    input.Qs.pageSize == INTEGER
    input.Qs.pageToken == STRING
    input.Qs.states == enum_StatesParameter[_]
    input.Qs.userId == STRING
    input.ProviderMetadata.Region == STRING
}

classroom.courses.courseWork.studentSubmissions.modifyAttachments

valid {
    input.Body.addAttachments[_].driveFile.alternateLink == STRING
    input.Body.addAttachments[_].driveFile.id == STRING
    input.Body.addAttachments[_].driveFile.thumbnailUrl == STRING
    input.Body.addAttachments[_].driveFile.title == STRING
    input.Body.addAttachments[_].form.formUrl == STRING
    input.Body.addAttachments[_].form.responseUrl == STRING
    input.Body.addAttachments[_].form.thumbnailUrl == STRING
    input.Body.addAttachments[_].form.title == STRING
    input.Body.addAttachments[_].link.thumbnailUrl == STRING
    input.Body.addAttachments[_].link.title == STRING
    input.Body.addAttachments[_].link.url == STRING
    input.Body.addAttachments[_].youTubeVideo.alternateLink == STRING
    input.Body.addAttachments[_].youTubeVideo.id == STRING
    input.Body.addAttachments[_].youTubeVideo.thumbnailUrl == STRING
    input.Body.addAttachments[_].youTubeVideo.title == STRING
    input.ReqMap.courseId == STRING
    input.ReqMap.courseWorkId == STRING
    input.ReqMap.id == STRING
    input.ProviderMetadata.Region == STRING
}

classroom.courses.courseWork.studentSubmissions.patch

enum_GradeHistoryGradeChangeType := [ "UNKNOWN_GRADE_CHANGE_TYPE", "DRAFT_GRADE_POINTS_EARNED_CHANGE", "ASSIGNED_GRADE_POINTS_EARNED_CHANGE", "MAX_POINTS_CHANGE" ]
enum_StateHistoryState := [ "STATE_UNSPECIFIED", "CREATED", "TURNED_IN", "RETURNED", "RECLAIMED_BY_STUDENT", "STUDENT_EDITED_AFTER_TURN_IN" ]
enum_StudentSubmissionCourseWorkType := [ "COURSE_WORK_TYPE_UNSPECIFIED", "ASSIGNMENT", "SHORT_ANSWER_QUESTION", "MULTIPLE_CHOICE_QUESTION" ]
enum_StudentSubmissionState := [ "SUBMISSION_STATE_UNSPECIFIED", "NEW", "CREATED", "TURNED_IN", "RETURNED", "RECLAIMED_BY_STUDENT" ]

valid {
    input.Body.alternateLink == STRING
    input.Body.assignedGrade == NUMBER
    input.Body.assignmentSubmission.attachments[_].driveFile.alternateLink == STRING
    input.Body.assignmentSubmission.attachments[_].driveFile.id == STRING
    input.Body.assignmentSubmission.attachments[_].driveFile.thumbnailUrl == STRING
    input.Body.assignmentSubmission.attachments[_].driveFile.title == STRING
    input.Body.assignmentSubmission.attachments[_].form.formUrl == STRING
    input.Body.assignmentSubmission.attachments[_].form.responseUrl == STRING
    input.Body.assignmentSubmission.attachments[_].form.thumbnailUrl == STRING
    input.Body.assignmentSubmission.attachments[_].form.title == STRING
    input.Body.assignmentSubmission.attachments[_].link.thumbnailUrl == STRING
    input.Body.assignmentSubmission.attachments[_].link.title == STRING
    input.Body.assignmentSubmission.attachments[_].link.url == STRING
    input.Body.assignmentSubmission.attachments[_].youTubeVideo.alternateLink == STRING
    input.Body.assignmentSubmission.attachments[_].youTubeVideo.id == STRING
    input.Body.assignmentSubmission.attachments[_].youTubeVideo.thumbnailUrl == STRING
    input.Body.assignmentSubmission.attachments[_].youTubeVideo.title == STRING
    input.Body.associatedWithDeveloper == BOOLEAN
    input.Body.courseId == STRING
    input.Body.courseWorkId == STRING
    input.Body.courseWorkType == enum_StudentSubmissionCourseWorkType[_]
    input.Body.creationTime == STRING
    input.Body.draftGrade == NUMBER
    input.Body.id == STRING
    input.Body.late == BOOLEAN
    input.Body.multipleChoiceSubmission.answer == STRING
    input.Body.shortAnswerSubmission.answer == STRING
    input.Body.state == enum_StudentSubmissionState[_]
    input.Body.submissionHistory[_].gradeHistory.actorUserId == STRING
    input.Body.submissionHistory[_].gradeHistory.gradeChangeType == enum_GradeHistoryGradeChangeType[_]
    input.Body.submissionHistory[_].gradeHistory.gradeTimestamp == STRING
    input.Body.submissionHistory[_].gradeHistory.maxPoints == NUMBER
    input.Body.submissionHistory[_].gradeHistory.pointsEarned == NUMBER
    input.Body.submissionHistory[_].stateHistory.actorUserId == STRING
    input.Body.submissionHistory[_].stateHistory.state == enum_StateHistoryState[_]
    input.Body.submissionHistory[_].stateHistory.stateTimestamp == STRING
    input.Body.updateTime == STRING
    input.Body.userId == STRING
    input.ReqMap.courseId == STRING
    input.ReqMap.courseWorkId == STRING
    input.ReqMap.id == STRING
    input.Qs.updateMask == STRING
    input.ProviderMetadata.Region == STRING
}

classroom.courses.courseWork.studentSubmissions.reclaim

valid {
    input.Body.STRING == STRING
    input.ReqMap.courseId == STRING
    input.ReqMap.courseWorkId == STRING
    input.ReqMap.id == STRING
    input.ProviderMetadata.Region == STRING
}

classroom.courses.courseWork.studentSubmissions.return

valid {
    input.Body.STRING == STRING
    input.ReqMap.courseId == STRING
    input.ReqMap.courseWorkId == STRING
    input.ReqMap.id == STRING
    input.ProviderMetadata.Region == STRING
}

classroom.courses.courseWork.studentSubmissions.turnIn

valid {
    input.Body.STRING == STRING
    input.ReqMap.courseId == STRING
    input.ReqMap.courseWorkId == STRING
    input.ReqMap.id == STRING
    input.ProviderMetadata.Region == STRING
}

classroom.courses.courseWorkMaterials.create

enum_CourseWorkMaterialAssigneeMode := [ "ASSIGNEE_MODE_UNSPECIFIED", "ALL_STUDENTS", "INDIVIDUAL_STUDENTS" ]
enum_CourseWorkMaterialState := [ "COURSEWORK_MATERIAL_STATE_UNSPECIFIED", "PUBLISHED", "DRAFT", "DELETED" ]
enum_SharedDriveFileShareMode := [ "UNKNOWN_SHARE_MODE", "VIEW", "EDIT", "STUDENT_COPY" ]

valid {
    input.Body.alternateLink == STRING
    input.Body.assigneeMode == enum_CourseWorkMaterialAssigneeMode[_]
    input.Body.courseId == STRING
    input.Body.creationTime == STRING
    input.Body.creatorUserId == STRING
    input.Body.description == STRING
    input.Body.id == STRING
    input.Body.individualStudentsOptions.studentIds[_] == STRING
    input.Body.materials[_].driveFile.driveFile.alternateLink == STRING
    input.Body.materials[_].driveFile.driveFile.id == STRING
    input.Body.materials[_].driveFile.driveFile.thumbnailUrl == STRING
    input.Body.materials[_].driveFile.driveFile.title == STRING
    input.Body.materials[_].driveFile.shareMode == enum_SharedDriveFileShareMode[_]
    input.Body.materials[_].form.formUrl == STRING
    input.Body.materials[_].form.responseUrl == STRING
    input.Body.materials[_].form.thumbnailUrl == STRING
    input.Body.materials[_].form.title == STRING
    input.Body.materials[_].link.thumbnailUrl == STRING
    input.Body.materials[_].link.title == STRING
    input.Body.materials[_].link.url == STRING
    input.Body.materials[_].youtubeVideo.alternateLink == STRING
    input.Body.materials[_].youtubeVideo.id == STRING
    input.Body.materials[_].youtubeVideo.thumbnailUrl == STRING
    input.Body.materials[_].youtubeVideo.title == STRING
    input.Body.scheduledTime == STRING
    input.Body.state == enum_CourseWorkMaterialState[_]
    input.Body.title == STRING
    input.Body.topicId == STRING
    input.Body.updateTime == STRING
    input.ReqMap.courseId == STRING
    input.ProviderMetadata.Region == STRING
}

classroom.courses.courseWorkMaterials.delete

valid {
    input.ReqMap.courseId == STRING
    input.ReqMap.id == STRING
    input.ProviderMetadata.Region == STRING
}

classroom.courses.courseWorkMaterials.get

valid {
    input.ReqMap.courseId == STRING
    input.ReqMap.id == STRING
    input.ProviderMetadata.Region == STRING
}

classroom.courses.courseWorkMaterials.list

enum_CourseWorkMaterialStatesParameter := [ "COURSEWORK_MATERIAL_STATE_UNSPECIFIED", "PUBLISHED", "DRAFT", "DELETED" ]

valid {
    input.ReqMap.courseId == STRING
    input.Qs.courseWorkMaterialStates == enum_CourseWorkMaterialStatesParameter[_]
    input.Qs.materialDriveId == STRING
    input.Qs.materialLink == STRING
    input.Qs.orderBy == STRING
    input.Qs.pageSize == INTEGER
    input.Qs.pageToken == STRING
    input.ProviderMetadata.Region == STRING
}

classroom.courses.courseWorkMaterials.patch

enum_CourseWorkMaterialAssigneeMode := [ "ASSIGNEE_MODE_UNSPECIFIED", "ALL_STUDENTS", "INDIVIDUAL_STUDENTS" ]
enum_CourseWorkMaterialState := [ "COURSEWORK_MATERIAL_STATE_UNSPECIFIED", "PUBLISHED", "DRAFT", "DELETED" ]
enum_SharedDriveFileShareMode := [ "UNKNOWN_SHARE_MODE", "VIEW", "EDIT", "STUDENT_COPY" ]

valid {
    input.Body.alternateLink == STRING
    input.Body.assigneeMode == enum_CourseWorkMaterialAssigneeMode[_]
    input.Body.courseId == STRING
    input.Body.creationTime == STRING
    input.Body.creatorUserId == STRING
    input.Body.description == STRING
    input.Body.id == STRING
    input.Body.individualStudentsOptions.studentIds[_] == STRING
    input.Body.materials[_].driveFile.driveFile.alternateLink == STRING
    input.Body.materials[_].driveFile.driveFile.id == STRING
    input.Body.materials[_].driveFile.driveFile.thumbnailUrl == STRING
    input.Body.materials[_].driveFile.driveFile.title == STRING
    input.Body.materials[_].driveFile.shareMode == enum_SharedDriveFileShareMode[_]
    input.Body.materials[_].form.formUrl == STRING
    input.Body.materials[_].form.responseUrl == STRING
    input.Body.materials[_].form.thumbnailUrl == STRING
    input.Body.materials[_].form.title == STRING
    input.Body.materials[_].link.thumbnailUrl == STRING
    input.Body.materials[_].link.title == STRING
    input.Body.materials[_].link.url == STRING
    input.Body.materials[_].youtubeVideo.alternateLink == STRING
    input.Body.materials[_].youtubeVideo.id == STRING
    input.Body.materials[_].youtubeVideo.thumbnailUrl == STRING
    input.Body.materials[_].youtubeVideo.title == STRING
    input.Body.scheduledTime == STRING
    input.Body.state == enum_CourseWorkMaterialState[_]
    input.Body.title == STRING
    input.Body.topicId == STRING
    input.Body.updateTime == STRING
    input.ReqMap.courseId == STRING
    input.ReqMap.id == STRING
    input.Qs.updateMask == STRING
    input.ProviderMetadata.Region == STRING
}

classroom.courses.create

enum_CourseCourseState := [ "COURSE_STATE_UNSPECIFIED", "ACTIVE", "ARCHIVED", "PROVISIONED", "DECLINED", "SUSPENDED" ]
enum_GradebookSettingsCalculationType := [ "CALCULATION_TYPE_UNSPECIFIED", "TOTAL_POINTS", "WEIGHTED_CATEGORIES" ]
enum_GradebookSettingsDisplaySetting := [ "DISPLAY_SETTING_UNSPECIFIED", "SHOW_OVERALL_GRADE", "HIDE_OVERALL_GRADE", "SHOW_TEACHERS_ONLY" ]

valid {
    input.Body.alternateLink == STRING
    input.Body.calendarId == STRING
    input.Body.courseGroupEmail == STRING
    input.Body.courseMaterialSets[_].materials[_].driveFile.alternateLink == STRING
    input.Body.courseMaterialSets[_].materials[_].driveFile.id == STRING
    input.Body.courseMaterialSets[_].materials[_].driveFile.thumbnailUrl == STRING
    input.Body.courseMaterialSets[_].materials[_].driveFile.title == STRING
    input.Body.courseMaterialSets[_].materials[_].form.formUrl == STRING
    input.Body.courseMaterialSets[_].materials[_].form.responseUrl == STRING
    input.Body.courseMaterialSets[_].materials[_].form.thumbnailUrl == STRING
    input.Body.courseMaterialSets[_].materials[_].form.title == STRING
    input.Body.courseMaterialSets[_].materials[_].link.thumbnailUrl == STRING
    input.Body.courseMaterialSets[_].materials[_].link.title == STRING
    input.Body.courseMaterialSets[_].materials[_].link.url == STRING
    input.Body.courseMaterialSets[_].materials[_].youTubeVideo.alternateLink == STRING
    input.Body.courseMaterialSets[_].materials[_].youTubeVideo.id == STRING
    input.Body.courseMaterialSets[_].materials[_].youTubeVideo.thumbnailUrl == STRING
    input.Body.courseMaterialSets[_].materials[_].youTubeVideo.title == STRING
    input.Body.courseMaterialSets[_].title == STRING
    input.Body.courseState == enum_CourseCourseState[_]
    input.Body.creationTime == STRING
    input.Body.description == STRING
    input.Body.descriptionHeading == STRING
    input.Body.enrollmentCode == STRING
    input.Body.gradebookSettings.calculationType == enum_GradebookSettingsCalculationType[_]
    input.Body.gradebookSettings.displaySetting == enum_GradebookSettingsDisplaySetting[_]
    input.Body.gradebookSettings.gradeCategories[_].defaultGradeDenominator == INTEGER
    input.Body.gradebookSettings.gradeCategories[_].id == STRING
    input.Body.gradebookSettings.gradeCategories[_].name == STRING
    input.Body.gradebookSettings.gradeCategories[_].weight == INTEGER
    input.Body.guardiansEnabled == BOOLEAN
    input.Body.id == STRING
    input.Body.name == STRING
    input.Body.ownerId == STRING
    input.Body.room == STRING
    input.Body.section == STRING
    input.Body.teacherFolder.alternateLink == STRING
    input.Body.teacherFolder.id == STRING
    input.Body.teacherFolder.title == STRING
    input.Body.teacherGroupEmail == STRING
    input.Body.updateTime == STRING
    input.ProviderMetadata.Region == STRING
}

classroom.courses.delete

valid {
    input.ReqMap.id == STRING
    input.ProviderMetadata.Region == STRING
}

classroom.courses.get

valid {
    input.ReqMap.id == STRING
    input.ProviderMetadata.Region == STRING
}

classroom.courses.list

enum_CourseStatesParameter := [ "COURSE_STATE_UNSPECIFIED", "ACTIVE", "ARCHIVED", "PROVISIONED", "DECLINED", "SUSPENDED" ]

valid {
    input.Qs.courseStates == enum_CourseStatesParameter[_]
    input.Qs.pageSize == INTEGER
    input.Qs.pageToken == STRING
    input.Qs.studentId == STRING
    input.Qs.teacherId == STRING
    input.ProviderMetadata.Region == STRING
}

classroom.courses.patch

enum_CourseCourseState := [ "COURSE_STATE_UNSPECIFIED", "ACTIVE", "ARCHIVED", "PROVISIONED", "DECLINED", "SUSPENDED" ]
enum_GradebookSettingsCalculationType := [ "CALCULATION_TYPE_UNSPECIFIED", "TOTAL_POINTS", "WEIGHTED_CATEGORIES" ]
enum_GradebookSettingsDisplaySetting := [ "DISPLAY_SETTING_UNSPECIFIED", "SHOW_OVERALL_GRADE", "HIDE_OVERALL_GRADE", "SHOW_TEACHERS_ONLY" ]

valid {
    input.Body.alternateLink == STRING
    input.Body.calendarId == STRING
    input.Body.courseGroupEmail == STRING
    input.Body.courseMaterialSets[_].materials[_].driveFile.alternateLink == STRING
    input.Body.courseMaterialSets[_].materials[_].driveFile.id == STRING
    input.Body.courseMaterialSets[_].materials[_].driveFile.thumbnailUrl == STRING
    input.Body.courseMaterialSets[_].materials[_].driveFile.title == STRING
    input.Body.courseMaterialSets[_].materials[_].form.formUrl == STRING
    input.Body.courseMaterialSets[_].materials[_].form.responseUrl == STRING
    input.Body.courseMaterialSets[_].materials[_].form.thumbnailUrl == STRING
    input.Body.courseMaterialSets[_].materials[_].form.title == STRING
    input.Body.courseMaterialSets[_].materials[_].link.thumbnailUrl == STRING
    input.Body.courseMaterialSets[_].materials[_].link.title == STRING
    input.Body.courseMaterialSets[_].materials[_].link.url == STRING
    input.Body.courseMaterialSets[_].materials[_].youTubeVideo.alternateLink == STRING
    input.Body.courseMaterialSets[_].materials[_].youTubeVideo.id == STRING
    input.Body.courseMaterialSets[_].materials[_].youTubeVideo.thumbnailUrl == STRING
    input.Body.courseMaterialSets[_].materials[_].youTubeVideo.title == STRING
    input.Body.courseMaterialSets[_].title == STRING
    input.Body.courseState == enum_CourseCourseState[_]
    input.Body.creationTime == STRING
    input.Body.description == STRING
    input.Body.descriptionHeading == STRING
    input.Body.enrollmentCode == STRING
    input.Body.gradebookSettings.calculationType == enum_GradebookSettingsCalculationType[_]
    input.Body.gradebookSettings.displaySetting == enum_GradebookSettingsDisplaySetting[_]
    input.Body.gradebookSettings.gradeCategories[_].defaultGradeDenominator == INTEGER
    input.Body.gradebookSettings.gradeCategories[_].id == STRING
    input.Body.gradebookSettings.gradeCategories[_].name == STRING
    input.Body.gradebookSettings.gradeCategories[_].weight == INTEGER
    input.Body.guardiansEnabled == BOOLEAN
    input.Body.id == STRING
    input.Body.name == STRING
    input.Body.ownerId == STRING
    input.Body.room == STRING
    input.Body.section == STRING
    input.Body.teacherFolder.alternateLink == STRING
    input.Body.teacherFolder.id == STRING
    input.Body.teacherFolder.title == STRING
    input.Body.teacherGroupEmail == STRING
    input.Body.updateTime == STRING
    input.ReqMap.id == STRING
    input.Qs.updateMask == STRING
    input.ProviderMetadata.Region == STRING
}

classroom.courses.students.create

enum_GlobalPermissionPermission := [ "PERMISSION_UNSPECIFIED", "CREATE_COURSE" ]

valid {
    input.Body.courseId == STRING
    input.Body.profile.emailAddress == STRING
    input.Body.profile.id == STRING
    input.Body.profile.name.familyName == STRING
    input.Body.profile.name.fullName == STRING
    input.Body.profile.name.givenName == STRING
    input.Body.profile.permissions[_].permission == enum_GlobalPermissionPermission[_]
    input.Body.profile.photoUrl == STRING
    input.Body.profile.verifiedTeacher == BOOLEAN
    input.Body.studentWorkFolder.alternateLink == STRING
    input.Body.studentWorkFolder.id == STRING
    input.Body.studentWorkFolder.title == STRING
    input.Body.userId == STRING
    input.ReqMap.courseId == STRING
    input.Qs.enrollmentCode == STRING
    input.ProviderMetadata.Region == STRING
}

classroom.courses.students.delete

valid {
    input.ReqMap.courseId == STRING
    input.ReqMap.userId == STRING
    input.ProviderMetadata.Region == STRING
}

classroom.courses.students.get

valid {
    input.ReqMap.courseId == STRING
    input.ReqMap.userId == STRING
    input.ProviderMetadata.Region == STRING
}

classroom.courses.students.list

valid {
    input.ReqMap.courseId == STRING
    input.Qs.pageSize == INTEGER
    input.Qs.pageToken == STRING
    input.ProviderMetadata.Region == STRING
}

classroom.courses.teachers.create

enum_GlobalPermissionPermission := [ "PERMISSION_UNSPECIFIED", "CREATE_COURSE" ]

valid {
    input.Body.courseId == STRING
    input.Body.profile.emailAddress == STRING
    input.Body.profile.id == STRING
    input.Body.profile.name.familyName == STRING
    input.Body.profile.name.fullName == STRING
    input.Body.profile.name.givenName == STRING
    input.Body.profile.permissions[_].permission == enum_GlobalPermissionPermission[_]
    input.Body.profile.photoUrl == STRING
    input.Body.profile.verifiedTeacher == BOOLEAN
    input.Body.userId == STRING
    input.ReqMap.courseId == STRING
    input.ProviderMetadata.Region == STRING
}

classroom.courses.teachers.delete

valid {
    input.ReqMap.courseId == STRING
    input.ReqMap.userId == STRING
    input.ProviderMetadata.Region == STRING
}

classroom.courses.teachers.get

valid {
    input.ReqMap.courseId == STRING
    input.ReqMap.userId == STRING
    input.ProviderMetadata.Region == STRING
}

classroom.courses.teachers.list

valid {
    input.ReqMap.courseId == STRING
    input.Qs.pageSize == INTEGER
    input.Qs.pageToken == STRING
    input.ProviderMetadata.Region == STRING
}

classroom.courses.topics.create

valid {
    input.Body.courseId == STRING
    input.Body.name == STRING
    input.Body.topicId == STRING
    input.Body.updateTime == STRING
    input.ReqMap.courseId == STRING
    input.ProviderMetadata.Region == STRING
}

classroom.courses.topics.delete

valid {
    input.ReqMap.courseId == STRING
    input.ReqMap.id == STRING
    input.ProviderMetadata.Region == STRING
}

classroom.courses.topics.get

valid {
    input.ReqMap.courseId == STRING
    input.ReqMap.id == STRING
    input.ProviderMetadata.Region == STRING
}

classroom.courses.topics.list

valid {
    input.ReqMap.courseId == STRING
    input.Qs.pageSize == INTEGER
    input.Qs.pageToken == STRING
    input.ProviderMetadata.Region == STRING
}

classroom.courses.topics.patch

valid {
    input.Body.courseId == STRING
    input.Body.name == STRING
    input.Body.topicId == STRING
    input.Body.updateTime == STRING
    input.ReqMap.courseId == STRING
    input.ReqMap.id == STRING
    input.Qs.updateMask == STRING
    input.ProviderMetadata.Region == STRING
}

classroom.courses.update

enum_CourseCourseState := [ "COURSE_STATE_UNSPECIFIED", "ACTIVE", "ARCHIVED", "PROVISIONED", "DECLINED", "SUSPENDED" ]
enum_GradebookSettingsCalculationType := [ "CALCULATION_TYPE_UNSPECIFIED", "TOTAL_POINTS", "WEIGHTED_CATEGORIES" ]
enum_GradebookSettingsDisplaySetting := [ "DISPLAY_SETTING_UNSPECIFIED", "SHOW_OVERALL_GRADE", "HIDE_OVERALL_GRADE", "SHOW_TEACHERS_ONLY" ]

valid {
    input.Body.alternateLink == STRING
    input.Body.calendarId == STRING
    input.Body.courseGroupEmail == STRING
    input.Body.courseMaterialSets[_].materials[_].driveFile.alternateLink == STRING
    input.Body.courseMaterialSets[_].materials[_].driveFile.id == STRING
    input.Body.courseMaterialSets[_].materials[_].driveFile.thumbnailUrl == STRING
    input.Body.courseMaterialSets[_].materials[_].driveFile.title == STRING
    input.Body.courseMaterialSets[_].materials[_].form.formUrl == STRING
    input.Body.courseMaterialSets[_].materials[_].form.responseUrl == STRING
    input.Body.courseMaterialSets[_].materials[_].form.thumbnailUrl == STRING
    input.Body.courseMaterialSets[_].materials[_].form.title == STRING
    input.Body.courseMaterialSets[_].materials[_].link.thumbnailUrl == STRING
    input.Body.courseMaterialSets[_].materials[_].link.title == STRING
    input.Body.courseMaterialSets[_].materials[_].link.url == STRING
    input.Body.courseMaterialSets[_].materials[_].youTubeVideo.alternateLink == STRING
    input.Body.courseMaterialSets[_].materials[_].youTubeVideo.id == STRING
    input.Body.courseMaterialSets[_].materials[_].youTubeVideo.thumbnailUrl == STRING
    input.Body.courseMaterialSets[_].materials[_].youTubeVideo.title == STRING
    input.Body.courseMaterialSets[_].title == STRING
    input.Body.courseState == enum_CourseCourseState[_]
    input.Body.creationTime == STRING
    input.Body.description == STRING
    input.Body.descriptionHeading == STRING
    input.Body.enrollmentCode == STRING
    input.Body.gradebookSettings.calculationType == enum_GradebookSettingsCalculationType[_]
    input.Body.gradebookSettings.displaySetting == enum_GradebookSettingsDisplaySetting[_]
    input.Body.gradebookSettings.gradeCategories[_].defaultGradeDenominator == INTEGER
    input.Body.gradebookSettings.gradeCategories[_].id == STRING
    input.Body.gradebookSettings.gradeCategories[_].name == STRING
    input.Body.gradebookSettings.gradeCategories[_].weight == INTEGER
    input.Body.guardiansEnabled == BOOLEAN
    input.Body.id == STRING
    input.Body.name == STRING
    input.Body.ownerId == STRING
    input.Body.room == STRING
    input.Body.section == STRING
    input.Body.teacherFolder.alternateLink == STRING
    input.Body.teacherFolder.id == STRING
    input.Body.teacherFolder.title == STRING
    input.Body.teacherGroupEmail == STRING
    input.Body.updateTime == STRING
    input.ReqMap.id == STRING
    input.ProviderMetadata.Region == STRING
}

classroom.invitations.accept

valid {
    input.ReqMap.id == STRING
    input.ProviderMetadata.Region == STRING
}

classroom.invitations.create

enum_InvitationRole := [ "COURSE_ROLE_UNSPECIFIED", "STUDENT", "TEACHER", "OWNER" ]

valid {
    input.Body.courseId == STRING
    input.Body.id == STRING
    input.Body.role == enum_InvitationRole[_]
    input.Body.userId == STRING
    input.ProviderMetadata.Region == STRING
}

classroom.invitations.delete

valid {
    input.ReqMap.id == STRING
    input.ProviderMetadata.Region == STRING
}

classroom.invitations.get

valid {
    input.ReqMap.id == STRING
    input.ProviderMetadata.Region == STRING
}

classroom.invitations.list

valid {
    input.Qs.courseId == STRING
    input.Qs.pageSize == INTEGER
    input.Qs.pageToken == STRING
    input.Qs.userId == STRING
    input.ProviderMetadata.Region == STRING
}

classroom.registrations.create

enum_FeedFeedType := [ "FEED_TYPE_UNSPECIFIED", "DOMAIN_ROSTER_CHANGES", "COURSE_ROSTER_CHANGES", "COURSE_WORK_CHANGES" ]

valid {
    input.Body.cloudPubsubTopic.topicName == STRING
    input.Body.expiryTime == STRING
    input.Body.feed.courseRosterChangesInfo.courseId == STRING
    input.Body.feed.courseWorkChangesInfo.courseId == STRING
    input.Body.feed.feedType == enum_FeedFeedType[_]
    input.Body.registrationId == STRING
    input.ProviderMetadata.Region == STRING
}

classroom.registrations.delete

valid {
    input.ReqMap.registrationId == STRING
    input.ProviderMetadata.Region == STRING
}

classroom.userProfiles.get

valid {
    input.ReqMap.userId == STRING
    input.ProviderMetadata.Region == STRING
}

classroom.userProfiles.guardianInvitations.create

enum_GuardianInvitationState := [ "GUARDIAN_INVITATION_STATE_UNSPECIFIED", "PENDING", "COMPLETE" ]

valid {
    input.Body.creationTime == STRING
    input.Body.invitationId == STRING
    input.Body.invitedEmailAddress == STRING
    input.Body.state == enum_GuardianInvitationState[_]
    input.Body.studentId == STRING
    input.ReqMap.studentId == STRING
    input.ProviderMetadata.Region == STRING
}

classroom.userProfiles.guardianInvitations.get

valid {
    input.ReqMap.invitationId == STRING
    input.ReqMap.studentId == STRING
    input.ProviderMetadata.Region == STRING
}

classroom.userProfiles.guardianInvitations.list

enum_StatesParameter := [ "GUARDIAN_INVITATION_STATE_UNSPECIFIED", "PENDING", "COMPLETE" ]

valid {
    input.ReqMap.studentId == STRING
    input.Qs.invitedEmailAddress == STRING
    input.Qs.pageSize == INTEGER
    input.Qs.pageToken == STRING
    input.Qs.states == enum_StatesParameter[_]
    input.ProviderMetadata.Region == STRING
}

classroom.userProfiles.guardianInvitations.patch

enum_GuardianInvitationState := [ "GUARDIAN_INVITATION_STATE_UNSPECIFIED", "PENDING", "COMPLETE" ]

valid {
    input.Body.creationTime == STRING
    input.Body.invitationId == STRING
    input.Body.invitedEmailAddress == STRING
    input.Body.state == enum_GuardianInvitationState[_]
    input.Body.studentId == STRING
    input.ReqMap.invitationId == STRING
    input.ReqMap.studentId == STRING
    input.Qs.updateMask == STRING
    input.ProviderMetadata.Region == STRING
}

classroom.userProfiles.guardians.delete

valid {
    input.ReqMap.guardianId == STRING
    input.ReqMap.studentId == STRING
    input.ProviderMetadata.Region == STRING
}

classroom.userProfiles.guardians.get

valid {
    input.ReqMap.guardianId == STRING
    input.ReqMap.studentId == STRING
    input.ProviderMetadata.Region == STRING
}

classroom.userProfiles.guardians.list

valid {
    input.ReqMap.studentId == STRING
    input.Qs.invitedEmailAddress == STRING
    input.Qs.pageSize == INTEGER
    input.Qs.pageToken == STRING
    input.ProviderMetadata.Region == STRING
}