-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | Google Classroom SDK.
--   
--   Manages classes, rosters, and invitations in Google Classroom.
--   
--   <i>Warning:</i> This is an experimental prototype/preview release
--   which is still under exploratory development and not intended for
--   public use, caveat emptor!
--   
--   This library is compatible with version <tt>v1</tt> of the API.
@package gogol-classroom
@version 0.3.0


module Network.Google.Classroom.Types

-- | Default request referring to version <tt>v1</tt> of the Google
--   Classroom API. This contains the host and root path used as a starting
--   point for constructing service requests.
classroomService :: ServiceConfig

-- | View your Google Classroom class rosters
classroomRostersReadOnlyScope :: Proxy '["https://www.googleapis.com/auth/classroom.rosters.readonly"]

-- | Manage your Google Classroom classes
classroomCoursesScope :: Proxy '["https://www.googleapis.com/auth/classroom.courses"]

-- | View course work and grades for students in the Google Classroom
--   classes you teach or administer
classroomCourseworkStudentsReadOnlyScope :: Proxy '["https://www.googleapis.com/auth/classroom.coursework.students.readonly"]

-- | View the email addresses of people in your classes
classroomProFileEmailsScope :: Proxy '["https://www.googleapis.com/auth/classroom.profile.emails"]

-- | View the profile photos of people in your classes
classroomProFilePhotosScope :: Proxy '["https://www.googleapis.com/auth/classroom.profile.photos"]

-- | Manage your course work and view your grades in Google Classroom
classroomCourseworkMeScope :: Proxy '["https://www.googleapis.com/auth/classroom.coursework.me"]

-- | View instructions for teacher-assigned work in your Google Classroom
--   classes
classroomCourseWorkReadOnlyScope :: Proxy '["https://www.googleapis.com/auth/classroom.course-work.readonly"]

-- | View course work and grades for students in the Google Classroom
--   classes you teach or administer
classroomStudentSubmissionsStudentsReadOnlyScope :: Proxy '["https://www.googleapis.com/auth/classroom.student-submissions.students.readonly"]

-- | Manage your Google Classroom class rosters
classroomRostersScope :: Proxy '["https://www.googleapis.com/auth/classroom.rosters"]

-- | View your Google Classroom classes
classroomCoursesReadOnlyScope :: Proxy '["https://www.googleapis.com/auth/classroom.courses.readonly"]

-- | Manage course work and grades for students in the Google Classroom
--   classes you teach and view the course work and grades for classes you
--   administer
classroomCourseworkStudentsScope :: Proxy '["https://www.googleapis.com/auth/classroom.coursework.students"]

-- | View your course work and grades in Google Classroom
classroomCourseworkMeReadOnlyScope :: Proxy '["https://www.googleapis.com/auth/classroom.coursework.me.readonly"]

-- | View your course work and grades in Google Classroom
classroomStudentSubmissionsMeReadOnlyScope :: Proxy '["https://www.googleapis.com/auth/classroom.student-submissions.me.readonly"]

-- | Response when listing course aliases.
--   
--   <i>See:</i> <a>listCourseAliasesResponse</a> smart constructor.
data ListCourseAliasesResponse

-- | Creates a value of <a>ListCourseAliasesResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lcarNextPageToken</a></li>
--   <li><a>lcarAliases</a></li>
--   </ul>
listCourseAliasesResponse :: ListCourseAliasesResponse

-- | Token identifying the next page of results to return. If empty, no
--   further results are available.
lcarNextPageToken :: Lens' ListCourseAliasesResponse (Maybe Text)

-- | The course aliases.
lcarAliases :: Lens' ListCourseAliasesResponse [CourseAlias]

-- | Course work created by a teacher for students of the course.
--   
--   <i>See:</i> <a>courseWork</a> smart constructor.
data CourseWork

-- | Creates a value of <a>CourseWork</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cwCreationTime</a></li>
--   <li><a>cwState</a></li>
--   <li><a>cwMaterials</a></li>
--   <li><a>cwCourseId</a></li>
--   <li><a>cwMaxPoints</a></li>
--   <li><a>cwWorkType</a></li>
--   <li><a>cwDueTime</a></li>
--   <li><a>cwAssociatedWithDeveloper</a></li>
--   <li><a>cwUpdateTime</a></li>
--   <li><a>cwMultipleChoiceQuestion</a></li>
--   <li><a>cwId</a></li>
--   <li><a>cwSubmissionModificationMode</a></li>
--   <li><a>cwDueDate</a></li>
--   <li><a>cwTitle</a></li>
--   <li><a>cwAlternateLink</a></li>
--   <li><a>cwAssignment</a></li>
--   <li><a>cwDescription</a></li>
--   </ul>
courseWork :: CourseWork

-- | Timestamp when this course work was created. Read-only.
cwCreationTime :: Lens' CourseWork (Maybe Text)

-- | Status of this course work. If unspecified, the default state is
--   `DRAFT`.
cwState :: Lens' CourseWork (Maybe Text)

-- | Additional materials. CourseWork must have no more than 20 material
--   items.
cwMaterials :: Lens' CourseWork [Material]

-- | Identifier of the course. Read-only.
cwCourseId :: Lens' CourseWork (Maybe Text)

-- | Maximum grade for this course work. If zero or unspecified, this
--   assignment is considered ungraded. This must be a non-negative integer
--   value.
cwMaxPoints :: Lens' CourseWork (Maybe Double)

-- | Type of this course work. The type is set when the course work is
--   created and cannot be changed.
cwWorkType :: Lens' CourseWork (Maybe Text)

-- | Optional time of day, in UTC, that submissions for this this course
--   work are due. This must be specified if `due_date` is specified.
cwDueTime :: Lens' CourseWork (Maybe TimeOfDay')

-- | Whether this course work item is associated with the Developer Console
--   project making the request. See google.classroom.Work.CreateCourseWork
--   for more details. Read-only.
cwAssociatedWithDeveloper :: Lens' CourseWork (Maybe Bool)

-- | Timestamp of the most recent change to this course work. Read-only.
cwUpdateTime :: Lens' CourseWork (Maybe Text)

-- | Multiple choice question details. For read operations, this field is
--   populated only when `work_type` is `MULTIPLE_CHOICE_QUESTION`. For
--   write operations, this field must be specified when creating course
--   work with a `work_type` of `MULTIPLE_CHOICE_QUESTION`, and it must not
--   be set otherwise.
cwMultipleChoiceQuestion :: Lens' CourseWork (Maybe MultipleChoiceQuestion)

-- | Classroom-assigned identifier of this course work, unique per course.
--   Read-only.
cwId :: Lens' CourseWork (Maybe Text)

-- | Setting to determine when students are allowed to modify submissions.
--   If unspecified, the default value is `MODIFIABLE_UNTIL_TURNED_IN`.
cwSubmissionModificationMode :: Lens' CourseWork (Maybe Text)

-- | Optional date, in UTC, that submissions for this this course work are
--   due. This must be specified if `due_time` is specified.
cwDueDate :: Lens' CourseWork (Maybe Date)

-- | Title of this course work. The title must be a valid UTF-8 string
--   containing between 1 and 3000 characters.
cwTitle :: Lens' CourseWork (Maybe Text)

-- | Absolute link to this course work in the Classroom web UI. This is
--   only populated if `state` is `PUBLISHED`. Read-only.
cwAlternateLink :: Lens' CourseWork (Maybe Text)

-- | Assignment details. This is populated only when `work_type` is
--   `ASSIGNMENT`. Read-only.
cwAssignment :: Lens' CourseWork (Maybe Assignment)

-- | Optional description of this course work. If set, the description must
--   be a valid UTF-8 string containing no more than 30,000 characters.
cwDescription :: Lens' CourseWork (Maybe Text)

-- | Representation of a Google Drive file.
--   
--   <i>See:</i> <a>driveFile</a> smart constructor.
data DriveFile

-- | Creates a value of <a>DriveFile</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dfThumbnailURL</a></li>
--   <li><a>dfId</a></li>
--   <li><a>dfTitle</a></li>
--   <li><a>dfAlternateLink</a></li>
--   </ul>
driveFile :: DriveFile

-- | URL of a thumbnail image of the Drive item. Read-only.
dfThumbnailURL :: Lens' DriveFile (Maybe Text)

-- | Drive API resource ID.
dfId :: Lens' DriveFile (Maybe Text)

-- | Title of the Drive item. Read-only.
dfTitle :: Lens' DriveFile (Maybe Text)

-- | URL that can be used to access the Drive item. Read-only.
dfAlternateLink :: Lens' DriveFile (Maybe Text)

-- | An invitation to become the guardian of a specified user, sent to a
--   specified email address.
--   
--   <i>See:</i> <a>guardianInvitation</a> smart constructor.
data GuardianInvitation

-- | Creates a value of <a>GuardianInvitation</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>giCreationTime</a></li>
--   <li><a>giStudentId</a></li>
--   <li><a>giState</a></li>
--   <li><a>giInvitationId</a></li>
--   <li><a>giInvitedEmailAddress</a></li>
--   </ul>
guardianInvitation :: GuardianInvitation

-- | The time that this invitation was created. Read-only.
giCreationTime :: Lens' GuardianInvitation (Maybe Text)

-- | ID of the student (in standard format)
giStudentId :: Lens' GuardianInvitation (Maybe Text)

-- | The state that this invitation is in.
giState :: Lens' GuardianInvitation (Maybe Text)

-- | Unique identifier for this invitation. Read-only.
giInvitationId :: Lens' GuardianInvitation (Maybe Text)

-- | Email address that the invitation was sent to. This field is only
--   visible to domain administrators.
giInvitedEmailAddress :: Lens' GuardianInvitation (Maybe Text)

-- | Request to return a student submission.
--   
--   <i>See:</i> <a>returnStudentSubmissionRequest</a> smart constructor.
data ReturnStudentSubmissionRequest

-- | Creates a value of <a>ReturnStudentSubmissionRequest</a> with the
--   minimum fields required to make a request.
returnStudentSubmissionRequest :: ReturnStudentSubmissionRequest

-- | Request to reclaim a student submission.
--   
--   <i>See:</i> <a>reclaimStudentSubmissionRequest</a> smart constructor.
data ReclaimStudentSubmissionRequest

-- | Creates a value of <a>ReclaimStudentSubmissionRequest</a> with the
--   minimum fields required to make a request.
reclaimStudentSubmissionRequest :: ReclaimStudentSubmissionRequest

-- | Response when listing course work.
--   
--   <i>See:</i> <a>listCourseWorkResponse</a> smart constructor.
data ListCourseWorkResponse

-- | Creates a value of <a>ListCourseWorkResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lcwrCourseWork</a></li>
--   <li><a>lcwrNextPageToken</a></li>
--   </ul>
listCourseWorkResponse :: ListCourseWorkResponse

-- | Course work items that match the request.
lcwrCourseWork :: Lens' ListCourseWorkResponse [CourseWork]

-- | Token identifying the next page of results to return. If empty, no
--   further results are available.
lcwrNextPageToken :: Lens' ListCourseWorkResponse (Maybe Text)

-- | A generic empty message that you can re-use to avoid defining
--   duplicated empty messages in your APIs. A typical example is to use it
--   as the request or the response type of an API method. For instance:
--   service Foo { rpc Bar(google.protobuf.Empty) returns
--   (google.protobuf.Empty); } The JSON representation for `Empty` is
--   empty JSON object `{}`.
--   
--   <i>See:</i> <a>empty</a> smart constructor.
data Empty

-- | Creates a value of <a>Empty</a> with the minimum fields required to
--   make a request.
empty :: Empty

-- | Global user permission description.
--   
--   <i>See:</i> <a>globalPermission</a> smart constructor.
data GlobalPermission

-- | Creates a value of <a>GlobalPermission</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>gpPermission</a></li>
--   </ul>
globalPermission :: GlobalPermission

-- | Permission value.
gpPermission :: Lens' GlobalPermission (Maybe Text)

-- | URL item.
--   
--   <i>See:</i> <a>link</a> smart constructor.
data Link

-- | Creates a value of <a>Link</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lThumbnailURL</a></li>
--   <li><a>lURL</a></li>
--   <li><a>lTitle</a></li>
--   </ul>
link :: Link

-- | URL of a thumbnail image of the target URL. Read-only.
lThumbnailURL :: Lens' Link (Maybe Text)

-- | URL to link to. This must be a valid UTF-8 string containing between 1
--   and 2024 characters.
lURL :: Lens' Link (Maybe Text)

-- | Title of the target of the URL. Read-only.
lTitle :: Lens' Link (Maybe Text)

-- | Student work for an assignment.
--   
--   <i>See:</i> <a>assignmentSubmission</a> smart constructor.
data AssignmentSubmission

-- | Creates a value of <a>AssignmentSubmission</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>asAttachments</a></li>
--   </ul>
assignmentSubmission :: AssignmentSubmission

-- | Attachments added by the student. Drive files that correspond to
--   materials with a share mode of STUDENT_COPY may not exist yet if the
--   student has not accessed the assignment in Classroom. Some attachment
--   metadata is only populated if the requesting user has permission to
--   access it. Identifier and alternate_link fields are always available,
--   but others (e.g. title) may not be.
asAttachments :: Lens' AssignmentSubmission [Attachment]

-- | Request to modify the attachments of a student submission.
--   
--   <i>See:</i> <a>modifyAttachmentsRequest</a> smart constructor.
data ModifyAttachmentsRequest

-- | Creates a value of <a>ModifyAttachmentsRequest</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>marAddAttachments</a></li>
--   </ul>
modifyAttachmentsRequest :: ModifyAttachmentsRequest

-- | Attachments to add. A student submission may not have more than 20
--   attachments. Form attachments are not supported.
marAddAttachments :: Lens' ModifyAttachmentsRequest [Attachment]

-- | Response when listing student submissions.
--   
--   <i>See:</i> <a>listStudentSubmissionsResponse</a> smart constructor.
data ListStudentSubmissionsResponse

-- | Creates a value of <a>ListStudentSubmissionsResponse</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lssrNextPageToken</a></li>
--   <li><a>lssrStudentSubmissions</a></li>
--   </ul>
listStudentSubmissionsResponse :: ListStudentSubmissionsResponse

-- | Token identifying the next page of results to return. If empty, no
--   further results are available.
lssrNextPageToken :: Lens' ListStudentSubmissionsResponse (Maybe Text)

-- | Student work that matches the request.
lssrStudentSubmissions :: Lens' ListStudentSubmissionsResponse [StudentSubmission]

-- | Material attached to course work. When creating attachments, setting
--   the `form` field is not supported.
--   
--   <i>See:</i> <a>material</a> smart constructor.
data Material

-- | Creates a value of <a>Material</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>mDriveFile</a></li>
--   <li><a>mLink</a></li>
--   <li><a>mYouTubeVideo</a></li>
--   <li><a>mForm</a></li>
--   </ul>
material :: Material

-- | Google Drive file material.
mDriveFile :: Lens' Material (Maybe SharedDriveFile)

-- | Link material. On creation, will be upgraded to a more appropriate
--   type if possible, and this will be reflected in the response.
mLink :: Lens' Material (Maybe Link)

-- | YouTube video material.
mYouTubeVideo :: Lens' Material (Maybe YouTubeVideo)

-- | Google Forms material.
mForm :: Lens' Material (Maybe Form)

-- | Student work for a multiple-choice question.
--   
--   <i>See:</i> <a>multipleChoiceSubmission</a> smart constructor.
data MultipleChoiceSubmission

-- | Creates a value of <a>MultipleChoiceSubmission</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>mcsAnswer</a></li>
--   </ul>
multipleChoiceSubmission :: MultipleChoiceSubmission

-- | Student's select choice.
mcsAnswer :: Lens' MultipleChoiceSubmission (Maybe Text)

-- | Response when listing invitations.
--   
--   <i>See:</i> <a>listInvitationsResponse</a> smart constructor.
data ListInvitationsResponse

-- | Creates a value of <a>ListInvitationsResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lirNextPageToken</a></li>
--   <li><a>lirInvitations</a></li>
--   </ul>
listInvitationsResponse :: ListInvitationsResponse

-- | Token identifying the next page of results to return. If empty, no
--   further results are available.
lirNextPageToken :: Lens' ListInvitationsResponse (Maybe Text)

-- | Invitations that match the list request.
lirInvitations :: Lens' ListInvitationsResponse [Invitation]

-- | Association between a student and a guardian of that student. The
--   guardian may receive information about the student's course work.
--   
--   <i>See:</i> <a>guardian</a> smart constructor.
data Guardian

-- | Creates a value of <a>Guardian</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>gStudentId</a></li>
--   <li><a>gGuardianId</a></li>
--   <li><a>gInvitedEmailAddress</a></li>
--   <li><a>gGuardianProFile</a></li>
--   </ul>
guardian :: Guardian

-- | Identifier for the student to whom the guardian relationship applies.
gStudentId :: Lens' Guardian (Maybe Text)

-- | Identifier for the guardian.
gGuardianId :: Lens' Guardian (Maybe Text)

-- | The email address to which the initial guardian invitation was sent.
--   This field is only visible to domain administrators.
gInvitedEmailAddress :: Lens' Guardian (Maybe Text)

-- | User profile for the guardian.
gGuardianProFile :: Lens' Guardian (Maybe UserProFile)

-- | A material attached to a course as part of a material set.
--   
--   <i>See:</i> <a>courseMaterial</a> smart constructor.
data CourseMaterial

-- | Creates a value of <a>CourseMaterial</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cmDriveFile</a></li>
--   <li><a>cmLink</a></li>
--   <li><a>cmYouTubeVideo</a></li>
--   <li><a>cmForm</a></li>
--   </ul>
courseMaterial :: CourseMaterial

-- | Google Drive file attachment.
cmDriveFile :: Lens' CourseMaterial (Maybe DriveFile)

-- | Link atatchment.
cmLink :: Lens' CourseMaterial (Maybe Link)

-- | Youtube video attachment.
cmYouTubeVideo :: Lens' CourseMaterial (Maybe YouTubeVideo)

-- | Google Forms attachment.
cmForm :: Lens' CourseMaterial (Maybe Form)

-- | Student work for a short answer question.
--   
--   <i>See:</i> <a>shortAnswerSubmission</a> smart constructor.
data ShortAnswerSubmission

-- | Creates a value of <a>ShortAnswerSubmission</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>sasAnswer</a></li>
--   </ul>
shortAnswerSubmission :: ShortAnswerSubmission

-- | Student response to a short-answer question.
sasAnswer :: Lens' ShortAnswerSubmission (Maybe Text)

-- | An invitation to join a course.
--   
--   <i>See:</i> <a>invitation</a> smart constructor.
data Invitation

-- | Creates a value of <a>Invitation</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>iCourseId</a></li>
--   <li><a>iUserId</a></li>
--   <li><a>iRole</a></li>
--   <li><a>iId</a></li>
--   </ul>
invitation :: Invitation

-- | Identifier of the course to invite the user to.
iCourseId :: Lens' Invitation (Maybe Text)

-- | Identifier of the invited user. When specified as a parameter of a
--   request, this identifier can be set to one of the following: * the
--   numeric identifier for the user * the email address of the user * the
--   string literal `"me"`, indicating the requesting user
iUserId :: Lens' Invitation (Maybe Text)

-- | Role to invite the user to have. Must not be
--   `COURSE_ROLE_UNSPECIFIED`.
iRole :: Lens' Invitation (Maybe Text)

-- | Identifier assigned by Classroom. Read-only.
iId :: Lens' Invitation (Maybe Text)

-- | Attachment added to student assignment work. When creating
--   attachments, setting the `form` field is not supported.
--   
--   <i>See:</i> <a>attachment</a> smart constructor.
data Attachment

-- | Creates a value of <a>Attachment</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>aDriveFile</a></li>
--   <li><a>aLink</a></li>
--   <li><a>aYouTubeVideo</a></li>
--   <li><a>aForm</a></li>
--   </ul>
attachment :: Attachment

-- | Google Drive file attachment.
aDriveFile :: Lens' Attachment (Maybe DriveFile)

-- | Link attachment.
aLink :: Lens' Attachment (Maybe Link)

-- | Youtube video attachment.
aYouTubeVideo :: Lens' Attachment (Maybe YouTubeVideo)

-- | Google Forms attachment.
aForm :: Lens' Attachment (Maybe Form)

-- | Student submission for course work. StudentSubmission items are
--   generated when a CourseWork item is created. StudentSubmissions that
--   have never been accessed (i.e. with `state` = NEW) may not have a
--   creation time or update time.
--   
--   <i>See:</i> <a>studentSubmission</a> smart constructor.
data StudentSubmission

-- | Creates a value of <a>StudentSubmission</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ssCreationTime</a></li>
--   <li><a>ssLate</a></li>
--   <li><a>ssState</a></li>
--   <li><a>ssCourseId</a></li>
--   <li><a>ssMultipleChoiceSubmission</a></li>
--   <li><a>ssAssignmentSubmission</a></li>
--   <li><a>ssShortAnswerSubmission</a></li>
--   <li><a>ssAssociatedWithDeveloper</a></li>
--   <li><a>ssUserId</a></li>
--   <li><a>ssUpdateTime</a></li>
--   <li><a>ssCourseWorkType</a></li>
--   <li><a>ssAssignedGrade</a></li>
--   <li><a>ssId</a></li>
--   <li><a>ssDraftGrade</a></li>
--   <li><a>ssAlternateLink</a></li>
--   <li><a>ssCourseWorkId</a></li>
--   </ul>
studentSubmission :: StudentSubmission

-- | Creation time of this submission. This may be unset if the student has
--   not accessed this item. Read-only.
ssCreationTime :: Lens' StudentSubmission (Maybe Text)

-- | Whether this submission is late. Read-only.
ssLate :: Lens' StudentSubmission (Maybe Bool)

-- | State of this submission. Read-only.
ssState :: Lens' StudentSubmission (Maybe Text)

-- | Identifier of the course. Read-only.
ssCourseId :: Lens' StudentSubmission (Maybe Text)

-- | Submission content when course_work_type is MULTIPLE_CHOICE_QUESTION.
ssMultipleChoiceSubmission :: Lens' StudentSubmission (Maybe MultipleChoiceSubmission)

-- | Submission content when course_work_type is ASSIGNMENT .
ssAssignmentSubmission :: Lens' StudentSubmission (Maybe AssignmentSubmission)

-- | Submission content when course_work_type is SHORT_ANSWER_QUESTION.
ssShortAnswerSubmission :: Lens' StudentSubmission (Maybe ShortAnswerSubmission)

-- | Whether this student submission is associated with the Developer
--   Console project making the request. See
--   google.classroom.Work.CreateCourseWork for more details. Read-only.
ssAssociatedWithDeveloper :: Lens' StudentSubmission (Maybe Bool)

-- | Identifier for the student that owns this submission. Read-only.
ssUserId :: Lens' StudentSubmission (Maybe Text)

-- | Last update time of this submission. This may be unset if the student
--   has not accessed this item. Read-only.
ssUpdateTime :: Lens' StudentSubmission (Maybe Text)

-- | Type of course work this submission is for. Read-only.
ssCourseWorkType :: Lens' StudentSubmission (Maybe Text)

-- | Optional grade. If unset, no grade was set. This must be a
--   non-negative integer value. This may be modified only by course
--   teachers.
ssAssignedGrade :: Lens' StudentSubmission (Maybe Double)

-- | Classroom-assigned Identifier for the student submission. This is
--   unique among submissions for the relevant course work. Read-only.
ssId :: Lens' StudentSubmission (Maybe Text)

-- | Optional pending grade. If unset, no grade was set. This must be a
--   non-negative integer value. This is only visible to and modifiable by
--   course teachers.
ssDraftGrade :: Lens' StudentSubmission (Maybe Double)

-- | Absolute link to the submission in the Classroom web UI. Read-only.
ssAlternateLink :: Lens' StudentSubmission (Maybe Text)

-- | Identifier for the course work this corresponds to. Read-only.
ssCourseWorkId :: Lens' StudentSubmission (Maybe Text)

-- | Response when listing guardians.
--   
--   <i>See:</i> <a>listGuardiansResponse</a> smart constructor.
data ListGuardiansResponse

-- | Creates a value of <a>ListGuardiansResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lgrNextPageToken</a></li>
--   <li><a>lgrGuardians</a></li>
--   </ul>
listGuardiansResponse :: ListGuardiansResponse

-- | Token identifying the next page of results to return. If empty, no
--   further results are available.
lgrNextPageToken :: Lens' ListGuardiansResponse (Maybe Text)

-- | Guardians on this page of results that met the criteria specified in
--   the request.
lgrGuardians :: Lens' ListGuardiansResponse [Guardian]

-- | Represents a whole calendar date, e.g. date of birth. The time of day
--   and time zone are either specified elsewhere or are not significant.
--   The date is relative to the Proleptic Gregorian Calendar. The day may
--   be 0 to represent a year and month where the day is not significant,
--   e.g. credit card expiration date. The year may be 0 to represent a
--   month and day independent of year, e.g. anniversary date. Related
--   types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
--   
--   <i>See:</i> <a>date</a> smart constructor.
data Date

-- | Creates a value of <a>Date</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dDay</a></li>
--   <li><a>dYear</a></li>
--   <li><a>dMonth</a></li>
--   </ul>
date :: Date

-- | Day of month. Must be from 1 to 31 and valid for the year and month,
--   or 0 if specifying a year/month where the day is not significant.
dDay :: Lens' Date (Maybe Int32)

-- | Year of date. Must be from 1 to 9999, or 0 if specifying a date
--   without a year.
dYear :: Lens' Date (Maybe Int32)

-- | Month of year. Must be from 1 to 12.
dMonth :: Lens' Date (Maybe Int32)

-- | YouTube video item.
--   
--   <i>See:</i> <a>youTubeVideo</a> smart constructor.
data YouTubeVideo

-- | Creates a value of <a>YouTubeVideo</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ytvThumbnailURL</a></li>
--   <li><a>ytvId</a></li>
--   <li><a>ytvTitle</a></li>
--   <li><a>ytvAlternateLink</a></li>
--   </ul>
youTubeVideo :: YouTubeVideo

-- | URL of a thumbnail image of the YouTube video. Read-only.
ytvThumbnailURL :: Lens' YouTubeVideo (Maybe Text)

-- | YouTube API resource ID.
ytvId :: Lens' YouTubeVideo (Maybe Text)

-- | Title of the YouTube video. Read-only.
ytvTitle :: Lens' YouTubeVideo (Maybe Text)

-- | URL that can be used to view the YouTube video. Read-only.
ytvAlternateLink :: Lens' YouTubeVideo (Maybe Text)

-- | Teacher of a course.
--   
--   <i>See:</i> <a>teacher</a> smart constructor.
data Teacher

-- | Creates a value of <a>Teacher</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tCourseId</a></li>
--   <li><a>tProFile</a></li>
--   <li><a>tUserId</a></li>
--   </ul>
teacher :: Teacher

-- | Identifier of the course. Read-only.
tCourseId :: Lens' Teacher (Maybe Text)

-- | Global user information for the teacher. Read-only.
tProFile :: Lens' Teacher (Maybe UserProFile)

-- | Identifier of the user. When specified as a parameter of a request,
--   this identifier can be one of the following: * the numeric identifier
--   for the user * the email address of the user * the string literal
--   `"me"`, indicating the requesting user
tUserId :: Lens' Teacher (Maybe Text)

-- | A set of materials that appears on the "About" page of the course.
--   These materials might include a syllabus, schedule, or other
--   background information relating to the course as a whole.
--   
--   <i>See:</i> <a>courseMaterialSet</a> smart constructor.
data CourseMaterialSet

-- | Creates a value of <a>CourseMaterialSet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cmsMaterials</a></li>
--   <li><a>cmsTitle</a></li>
--   </ul>
courseMaterialSet :: CourseMaterialSet

-- | Materials attached to this set.
cmsMaterials :: Lens' CourseMaterialSet [CourseMaterial]

-- | Title for this set.
cmsTitle :: Lens' CourseMaterialSet (Maybe Text)

-- | Details of the user's name.
--   
--   <i>See:</i> <a>name</a> smart constructor.
data Name

-- | Creates a value of <a>Name</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>nGivenName</a></li>
--   <li><a>nFullName</a></li>
--   <li><a>nFamilyName</a></li>
--   </ul>
name :: Name

-- | The user's first name. Read-only.
nGivenName :: Lens' Name (Maybe Text)

-- | The user's full name formed by concatenating the first and last name
--   values. Read-only.
nFullName :: Lens' Name (Maybe Text)

-- | The user's last name. Read-only.
nFamilyName :: Lens' Name (Maybe Text)

-- | Response when listing courses.
--   
--   <i>See:</i> <a>listCoursesResponse</a> smart constructor.
data ListCoursesResponse

-- | Creates a value of <a>ListCoursesResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lcrNextPageToken</a></li>
--   <li><a>lcrCourses</a></li>
--   </ul>
listCoursesResponse :: ListCoursesResponse

-- | Token identifying the next page of results to return. If empty, no
--   further results are available.
lcrNextPageToken :: Lens' ListCoursesResponse (Maybe Text)

-- | Courses that match the list request.
lcrCourses :: Lens' ListCoursesResponse [Course]

-- | Request to turn in a student submission.
--   
--   <i>See:</i> <a>turnInStudentSubmissionRequest</a> smart constructor.
data TurnInStudentSubmissionRequest

-- | Creates a value of <a>TurnInStudentSubmissionRequest</a> with the
--   minimum fields required to make a request.
turnInStudentSubmissionRequest :: TurnInStudentSubmissionRequest

-- | Global information for a user.
--   
--   <i>See:</i> <a>userProFile</a> smart constructor.
data UserProFile

-- | Creates a value of <a>UserProFile</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>upfPhotoURL</a></li>
--   <li><a>upfName</a></li>
--   <li><a>upfEmailAddress</a></li>
--   <li><a>upfId</a></li>
--   <li><a>upfPermissions</a></li>
--   </ul>
userProFile :: UserProFile

-- | URL of user's profile photo. Read-only.
upfPhotoURL :: Lens' UserProFile (Maybe Text)

-- | Name of the user. Read-only.
upfName :: Lens' UserProFile (Maybe Name)

-- | Email address of the user. Read-only.
upfEmailAddress :: Lens' UserProFile (Maybe Text)

-- | Identifier of the user. Read-only.
upfId :: Lens' UserProFile (Maybe Text)

-- | Global permissions of the user. Read-only.
upfPermissions :: Lens' UserProFile [GlobalPermission]

-- | Representation of a Google Drive folder.
--   
--   <i>See:</i> <a>driveFolder</a> smart constructor.
data DriveFolder

-- | Creates a value of <a>DriveFolder</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dId</a></li>
--   <li><a>dTitle</a></li>
--   <li><a>dAlternateLink</a></li>
--   </ul>
driveFolder :: DriveFolder

-- | Drive API resource ID.
dId :: Lens' DriveFolder (Maybe Text)

-- | Title of the Drive folder. Read-only.
dTitle :: Lens' DriveFolder (Maybe Text)

-- | URL that can be used to access the Drive folder. Read-only.
dAlternateLink :: Lens' DriveFolder (Maybe Text)

-- | Additional details for multiple-choice questions.
--   
--   <i>See:</i> <a>multipleChoiceQuestion</a> smart constructor.
data MultipleChoiceQuestion

-- | Creates a value of <a>MultipleChoiceQuestion</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>mcqChoices</a></li>
--   </ul>
multipleChoiceQuestion :: MultipleChoiceQuestion

-- | Possible choices.
mcqChoices :: Lens' MultipleChoiceQuestion [Text]

-- | A Course in Classroom.
--   
--   <i>See:</i> <a>course</a> smart constructor.
data Course

-- | Creates a value of <a>Course</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cCreationTime</a></li>
--   <li><a>cRoom</a></li>
--   <li><a>cCourseMaterialSets</a></li>
--   <li><a>cTeacherGroupEmail</a></li>
--   <li><a>cTeacherFolder</a></li>
--   <li><a>cCourseState</a></li>
--   <li><a>cGuardiansEnabled</a></li>
--   <li><a>cEnrollmentCode</a></li>
--   <li><a>cUpdateTime</a></li>
--   <li><a>cOwnerId</a></li>
--   <li><a>cName</a></li>
--   <li><a>cId</a></li>
--   <li><a>cAlternateLink</a></li>
--   <li><a>cCourseGroupEmail</a></li>
--   <li><a>cDescription</a></li>
--   <li><a>cDescriptionHeading</a></li>
--   <li><a>cSection</a></li>
--   </ul>
course :: Course

-- | Creation time of the course. Specifying this field in a course update
--   mask results in an error. Read-only.
cCreationTime :: Lens' Course (Maybe Text)

-- | Optional room location. For example, "301". If set, this field must be
--   a valid UTF-8 string and no longer than 650 characters.
cRoom :: Lens' Course (Maybe Text)

-- | Sets of materials that appear on the "about" page of this course.
--   Read-only.
cCourseMaterialSets :: Lens' Course [CourseMaterialSet]

-- | The email address of a Google group containing all teachers of the
--   course. This group does not accept email and can only be used for
--   permissions. Read-only.
cTeacherGroupEmail :: Lens' Course (Maybe Text)

-- | Information about a Drive Folder that is shared with all teachers of
--   the course. This field will only be set for teachers of the course and
--   domain administrators. Read-only.
cTeacherFolder :: Lens' Course (Maybe DriveFolder)

-- | State of the course. If unspecified, the default state is
--   `PROVISIONED`.
cCourseState :: Lens' Course (Maybe Text)

-- | Whether or not guardian notifications are enabled for this course.
--   Read-only.
cGuardiansEnabled :: Lens' Course (Maybe Bool)

-- | Enrollment code to use when joining this course. Specifying this field
--   in a course update mask results in an error. Read-only.
cEnrollmentCode :: Lens' Course (Maybe Text)

-- | Time of the most recent update to this course. Specifying this field
--   in a course update mask results in an error. Read-only.
cUpdateTime :: Lens' Course (Maybe Text)

-- | The identifier of the owner of a course. When specified as a parameter
--   of a create course request, this field is required. The identifier can
--   be one of the following: * the numeric identifier for the user * the
--   email address of the user * the string literal `"me"`, indicating the
--   requesting user This must be set in a create request. Specifying this
--   field in a course update mask results in an `INVALID_ARGUMENT` error.
cOwnerId :: Lens' Course (Maybe Text)

-- | Name of the course. For example, "10th Grade Biology". The name is
--   required. It must be between 1 and 750 characters and a valid UTF-8
--   string.
cName :: Lens' Course (Maybe Text)

-- | Identifier for this course assigned by Classroom. When creating a
--   course, you may optionally set this identifier to an alias string in
--   the request to create a corresponding alias. The `id` is still
--   assigned by Classroom and cannot be updated after the course is
--   created. Specifying this field in a course update mask results in an
--   error.
cId :: Lens' Course (Maybe Text)

-- | Absolute link to this course in the Classroom web UI. Read-only.
cAlternateLink :: Lens' Course (Maybe Text)

-- | The email address of a Google group containing all members of the
--   course. This group does not accept email and can only be used for
--   permissions. Read-only.
cCourseGroupEmail :: Lens' Course (Maybe Text)

-- | Optional description. For example, "We'll be learning about the
--   structure of living creatures from a combination of textbooks, guest
--   lectures, and lab work. Expect to be excited!" If set, this field must
--   be a valid UTF-8 string and no longer than 30,000 characters.
cDescription :: Lens' Course (Maybe Text)

-- | Optional heading for the description. For example, "Welcome to 10th
--   Grade Biology." If set, this field must be a valid UTF-8 string and no
--   longer than 3600 characters.
cDescriptionHeading :: Lens' Course (Maybe Text)

-- | Section of the course. For example, "Period 2". If set, this field
--   must be a valid UTF-8 string and no longer than 2800 characters.
cSection :: Lens' Course (Maybe Text)

-- | Represents a time of day. The date and time zone are either not
--   significant or are specified elsewhere. An API may chose to allow leap
--   seconds. Related types are google.type.Date and
--   `google.protobuf.Timestamp`.
--   
--   <i>See:</i> <a>timeOfDay</a> smart constructor.
data TimeOfDay'

-- | Creates a value of <a>TimeOfDay</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>todNanos</a></li>
--   <li><a>todHours</a></li>
--   <li><a>todMinutes</a></li>
--   <li><a>todSeconds</a></li>
--   </ul>
timeOfDay :: TimeOfDay'

-- | Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
todNanos :: Lens' TimeOfDay' (Maybe Int32)

-- | Hours of day in 24 hour format. Should be from 0 to 23. An API may
--   choose to allow the value "24:00:00" for scenarios like business
--   closing time.
todHours :: Lens' TimeOfDay' (Maybe Int32)

-- | Minutes of hour of day. Must be from 0 to 59.
todMinutes :: Lens' TimeOfDay' (Maybe Int32)

-- | Seconds of minutes of the time. Must normally be from 0 to 59. An API
--   may allow the value 60 if it allows leap-seconds.
todSeconds :: Lens' TimeOfDay' (Maybe Int32)

-- | Response when listing guardian invitations.
--   
--   <i>See:</i> <a>listGuardianInvitationsResponse</a> smart constructor.
data ListGuardianInvitationsResponse

-- | Creates a value of <a>ListGuardianInvitationsResponse</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lgirNextPageToken</a></li>
--   <li><a>lgirGuardianInvitations</a></li>
--   </ul>
listGuardianInvitationsResponse :: ListGuardianInvitationsResponse

-- | Token identifying the next page of results to return. If empty, no
--   further results are available.
lgirNextPageToken :: Lens' ListGuardianInvitationsResponse (Maybe Text)

-- | Guardian invitations that matched the list request.
lgirGuardianInvitations :: Lens' ListGuardianInvitationsResponse [GuardianInvitation]

-- | Additional details for assignments.
--   
--   <i>See:</i> <a>assignment</a> smart constructor.
data Assignment

-- | Creates a value of <a>Assignment</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>aStudentWorkFolder</a></li>
--   </ul>
assignment :: Assignment

-- | Drive folder where attachments from student submissions are placed.
--   This is only populated for course teachers.
aStudentWorkFolder :: Lens' Assignment (Maybe DriveFolder)

-- | Response when listing students.
--   
--   <i>See:</i> <a>listStudentsResponse</a> smart constructor.
data ListStudentsResponse

-- | Creates a value of <a>ListStudentsResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lsrNextPageToken</a></li>
--   <li><a>lsrStudents</a></li>
--   </ul>
listStudentsResponse :: ListStudentsResponse

-- | Token identifying the next page of results to return. If empty, no
--   further results are available.
lsrNextPageToken :: Lens' ListStudentsResponse (Maybe Text)

-- | Students who match the list request.
lsrStudents :: Lens' ListStudentsResponse [Student]

-- | Drive file that is used as material for course work.
--   
--   <i>See:</i> <a>sharedDriveFile</a> smart constructor.
data SharedDriveFile

-- | Creates a value of <a>SharedDriveFile</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>sdfDriveFile</a></li>
--   <li><a>sdfShareMode</a></li>
--   </ul>
sharedDriveFile :: SharedDriveFile

-- | Drive file details.
sdfDriveFile :: Lens' SharedDriveFile (Maybe DriveFile)

-- | Mechanism by which students access the Drive item.
sdfShareMode :: Lens' SharedDriveFile (Maybe Text)

-- | Alternative identifier for a course. An alias uniquely identifies a
--   course. It must be unique within one of the following scopes: *
--   domain: A domain-scoped alias is visible to all users within the alias
--   creator's domain and can be created only by a domain admin. A
--   domain-scoped alias is often used when a course has an identifier
--   external to Classroom. * project: A project-scoped alias is visible to
--   any request from an application using the Developer Console project ID
--   that created the alias and can be created by any project. A
--   project-scoped alias is often used when an application has alternative
--   identifiers. A random value can also be used to avoid duplicate
--   courses in the event of transmission failures, as retrying a request
--   will return `ALREADY_EXISTS` if a previous one has succeeded.
--   
--   <i>See:</i> <a>courseAlias</a> smart constructor.
data CourseAlias

-- | Creates a value of <a>CourseAlias</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>caAlias</a></li>
--   </ul>
courseAlias :: CourseAlias

-- | Alias string. The format of the string indicates the desired alias
--   scoping. * `d:` indicates a domain-scoped alias. Example: `d:math_101`
--   * `p:` indicates a project-scoped alias. Example: `p:abc123` This
--   field has a maximum length of 256 characters.
caAlias :: Lens' CourseAlias (Maybe Text)

-- | Google Forms item.
--   
--   <i>See:</i> <a>form</a> smart constructor.
data Form

-- | Creates a value of <a>Form</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>fThumbnailURL</a></li>
--   <li><a>fFormURL</a></li>
--   <li><a>fTitle</a></li>
--   <li><a>fResponseURL</a></li>
--   </ul>
form :: Form

-- | URL of a thumbnail image of the Form. Read-only.
fThumbnailURL :: Lens' Form (Maybe Text)

-- | URL of the form.
fFormURL :: Lens' Form (Maybe Text)

-- | Title of the Form. Read-only.
fTitle :: Lens' Form (Maybe Text)

-- | URL of the form responses document. Only set if respsonses have been
--   recorded and only when the requesting user is an editor of the form.
--   Read-only.
fResponseURL :: Lens' Form (Maybe Text)

-- | Response when listing teachers.
--   
--   <i>See:</i> <a>listTeachersResponse</a> smart constructor.
data ListTeachersResponse

-- | Creates a value of <a>ListTeachersResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ltrNextPageToken</a></li>
--   <li><a>ltrTeachers</a></li>
--   </ul>
listTeachersResponse :: ListTeachersResponse

-- | Token identifying the next page of results to return. If empty, no
--   further results are available.
ltrNextPageToken :: Lens' ListTeachersResponse (Maybe Text)

-- | Teachers who match the list request.
ltrTeachers :: Lens' ListTeachersResponse [Teacher]

-- | Student in a course.
--   
--   <i>See:</i> <a>student</a> smart constructor.
data Student

-- | Creates a value of <a>Student</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>sCourseId</a></li>
--   <li><a>sProFile</a></li>
--   <li><a>sStudentWorkFolder</a></li>
--   <li><a>sUserId</a></li>
--   </ul>
student :: Student

-- | Identifier of the course. Read-only.
sCourseId :: Lens' Student (Maybe Text)

-- | Global user information for the student. Read-only.
sProFile :: Lens' Student (Maybe UserProFile)

-- | Information about a Drive Folder for this student's work in this
--   course. Only visible to the student and domain administrators.
--   Read-only.
sStudentWorkFolder :: Lens' Student (Maybe DriveFolder)

-- | Identifier of the user. When specified as a parameter of a request,
--   this identifier can be one of the following: * the numeric identifier
--   for the user * the email address of the user * the string literal
--   `"me"`, indicating the requesting user
sUserId :: Lens' Student (Maybe Text)


-- | Creates an alias for a course. This method returns the following error
--   codes: * `PERMISSION_DENIED` if the requesting user is not permitted
--   to create the alias or for access errors. * `NOT_FOUND` if the course
--   does not exist. * `ALREADY_EXISTS` if the alias already exists.
--   
--   <i>See:</i> <a>Google Classroom API Reference</a> for
--   <tt>classroom.courses.aliases.create</tt>.
module Network.Google.Resource.Classroom.Courses.Aliases.Create

-- | A resource alias for <tt>classroom.courses.aliases.create</tt> method
--   which the <a>CoursesAliasesCreate</a> request conforms to.
type CoursesAliasesCreateResource = "v1" :> ("courses" :> (Capture "courseId" Text :> ("aliases" :> (QueryParam "$.xgafv" Text :> (QueryParam "upload_protocol" Text :> (QueryParam "pp" Bool :> (QueryParam "access_token" Text :> (QueryParam "uploadType" Text :> (QueryParam "bearer_token" Text :> (QueryParam "callback" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] CourseAlias :> Post '[JSON] CourseAlias))))))))))))

-- | Creates a value of <a>CoursesAliasesCreate</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cacXgafv</a></li>
--   <li><a>cacUploadProtocol</a></li>
--   <li><a>cacPp</a></li>
--   <li><a>cacCourseId</a></li>
--   <li><a>cacAccessToken</a></li>
--   <li><a>cacUploadType</a></li>
--   <li><a>cacPayload</a></li>
--   <li><a>cacBearerToken</a></li>
--   <li><a>cacCallback</a></li>
--   </ul>
coursesAliasesCreate :: Text -> CourseAlias -> CoursesAliasesCreate

-- | Creates an alias for a course. This method returns the following error
--   codes: * `PERMISSION_DENIED` if the requesting user is not permitted
--   to create the alias or for access errors. * `NOT_FOUND` if the course
--   does not exist. * `ALREADY_EXISTS` if the alias already exists.
--   
--   <i>See:</i> <a>coursesAliasesCreate</a> smart constructor.
data CoursesAliasesCreate

-- | V1 error format.
cacXgafv :: Lens' CoursesAliasesCreate (Maybe Text)

-- | Upload protocol for media (e.g. "raw", "multipart").
cacUploadProtocol :: Lens' CoursesAliasesCreate (Maybe Text)

-- | Pretty-print response.
cacPp :: Lens' CoursesAliasesCreate Bool

-- | Identifier of the course to alias. This identifier can be either the
--   Classroom-assigned identifier or an alias.
cacCourseId :: Lens' CoursesAliasesCreate Text

-- | OAuth access token.
cacAccessToken :: Lens' CoursesAliasesCreate (Maybe Text)

-- | Legacy upload protocol for media (e.g. "media", "multipart").
cacUploadType :: Lens' CoursesAliasesCreate (Maybe Text)

-- | Multipart request metadata.
cacPayload :: Lens' CoursesAliasesCreate CourseAlias

-- | OAuth bearer token.
cacBearerToken :: Lens' CoursesAliasesCreate (Maybe Text)

-- | JSONP
cacCallback :: Lens' CoursesAliasesCreate (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.Classroom.Courses.Aliases.Create.CoursesAliasesCreate
instance Data.Data.Data Network.Google.Resource.Classroom.Courses.Aliases.Create.CoursesAliasesCreate
instance GHC.Show.Show Network.Google.Resource.Classroom.Courses.Aliases.Create.CoursesAliasesCreate
instance GHC.Classes.Eq Network.Google.Resource.Classroom.Courses.Aliases.Create.CoursesAliasesCreate
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Classroom.Courses.Aliases.Create.CoursesAliasesCreate


-- | Deletes an alias of a course. This method returns the following error
--   codes: * `PERMISSION_DENIED` if the requesting user is not permitted
--   to remove the alias or for access errors. * `NOT_FOUND` if the alias
--   does not exist.
--   
--   <i>See:</i> <a>Google Classroom API Reference</a> for
--   <tt>classroom.courses.aliases.delete</tt>.
module Network.Google.Resource.Classroom.Courses.Aliases.Delete

-- | A resource alias for <tt>classroom.courses.aliases.delete</tt> method
--   which the <a>CoursesAliasesDelete</a> request conforms to.
type CoursesAliasesDeleteResource = "v1" :> ("courses" :> (Capture "courseId" Text :> ("aliases" :> (Capture "alias" Text :> (QueryParam "$.xgafv" Text :> (QueryParam "upload_protocol" Text :> (QueryParam "pp" Bool :> (QueryParam "access_token" Text :> (QueryParam "uploadType" Text :> (QueryParam "bearer_token" Text :> (QueryParam "callback" Text :> (QueryParam "alt" AltJSON :> Delete '[JSON] Empty))))))))))))

-- | Creates a value of <a>CoursesAliasesDelete</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cadXgafv</a></li>
--   <li><a>cadUploadProtocol</a></li>
--   <li><a>cadPp</a></li>
--   <li><a>cadCourseId</a></li>
--   <li><a>cadAccessToken</a></li>
--   <li><a>cadUploadType</a></li>
--   <li><a>cadAlias</a></li>
--   <li><a>cadBearerToken</a></li>
--   <li><a>cadCallback</a></li>
--   </ul>
coursesAliasesDelete :: Text -> Text -> CoursesAliasesDelete

-- | Deletes an alias of a course. This method returns the following error
--   codes: * `PERMISSION_DENIED` if the requesting user is not permitted
--   to remove the alias or for access errors. * `NOT_FOUND` if the alias
--   does not exist.
--   
--   <i>See:</i> <a>coursesAliasesDelete</a> smart constructor.
data CoursesAliasesDelete

-- | V1 error format.
cadXgafv :: Lens' CoursesAliasesDelete (Maybe Text)

-- | Upload protocol for media (e.g. "raw", "multipart").
cadUploadProtocol :: Lens' CoursesAliasesDelete (Maybe Text)

-- | Pretty-print response.
cadPp :: Lens' CoursesAliasesDelete Bool

-- | Identifier of the course whose alias should be deleted. This
--   identifier can be either the Classroom-assigned identifier or an
--   alias.
cadCourseId :: Lens' CoursesAliasesDelete Text

-- | OAuth access token.
cadAccessToken :: Lens' CoursesAliasesDelete (Maybe Text)

-- | Legacy upload protocol for media (e.g. "media", "multipart").
cadUploadType :: Lens' CoursesAliasesDelete (Maybe Text)

-- | Alias to delete. This may not be the Classroom-assigned identifier.
cadAlias :: Lens' CoursesAliasesDelete Text

-- | OAuth bearer token.
cadBearerToken :: Lens' CoursesAliasesDelete (Maybe Text)

-- | JSONP
cadCallback :: Lens' CoursesAliasesDelete (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.Classroom.Courses.Aliases.Delete.CoursesAliasesDelete
instance Data.Data.Data Network.Google.Resource.Classroom.Courses.Aliases.Delete.CoursesAliasesDelete
instance GHC.Show.Show Network.Google.Resource.Classroom.Courses.Aliases.Delete.CoursesAliasesDelete
instance GHC.Classes.Eq Network.Google.Resource.Classroom.Courses.Aliases.Delete.CoursesAliasesDelete
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Classroom.Courses.Aliases.Delete.CoursesAliasesDelete


-- | Returns a list of aliases for a course. This method returns the
--   following error codes: * `PERMISSION_DENIED` if the requesting user is
--   not permitted to access the course or for access errors. * `NOT_FOUND`
--   if the course does not exist.
--   
--   <i>See:</i> <a>Google Classroom API Reference</a> for
--   <tt>classroom.courses.aliases.list</tt>.
module Network.Google.Resource.Classroom.Courses.Aliases.List

-- | A resource alias for <tt>classroom.courses.aliases.list</tt> method
--   which the <a>CoursesAliasesList</a> request conforms to.
type CoursesAliasesListResource = "v1" :> ("courses" :> (Capture "courseId" Text :> ("aliases" :> (QueryParam "$.xgafv" Text :> (QueryParam "upload_protocol" Text :> (QueryParam "pp" Bool :> (QueryParam "access_token" Text :> (QueryParam "uploadType" Text :> (QueryParam "bearer_token" Text :> (QueryParam "pageToken" Text :> (QueryParam "pageSize" (Textual Int32) :> (QueryParam "callback" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] ListCourseAliasesResponse)))))))))))))

-- | Creates a value of <a>CoursesAliasesList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>calXgafv</a></li>
--   <li><a>calUploadProtocol</a></li>
--   <li><a>calPp</a></li>
--   <li><a>calCourseId</a></li>
--   <li><a>calAccessToken</a></li>
--   <li><a>calUploadType</a></li>
--   <li><a>calBearerToken</a></li>
--   <li><a>calPageToken</a></li>
--   <li><a>calPageSize</a></li>
--   <li><a>calCallback</a></li>
--   </ul>
coursesAliasesList :: Text -> CoursesAliasesList

-- | Returns a list of aliases for a course. This method returns the
--   following error codes: * `PERMISSION_DENIED` if the requesting user is
--   not permitted to access the course or for access errors. * `NOT_FOUND`
--   if the course does not exist.
--   
--   <i>See:</i> <a>coursesAliasesList</a> smart constructor.
data CoursesAliasesList

-- | V1 error format.
calXgafv :: Lens' CoursesAliasesList (Maybe Text)

-- | Upload protocol for media (e.g. "raw", "multipart").
calUploadProtocol :: Lens' CoursesAliasesList (Maybe Text)

-- | Pretty-print response.
calPp :: Lens' CoursesAliasesList Bool

-- | The identifier of the course. This identifier can be either the
--   Classroom-assigned identifier or an alias.
calCourseId :: Lens' CoursesAliasesList Text

-- | OAuth access token.
calAccessToken :: Lens' CoursesAliasesList (Maybe Text)

-- | Legacy upload protocol for media (e.g. "media", "multipart").
calUploadType :: Lens' CoursesAliasesList (Maybe Text)

-- | OAuth bearer token.
calBearerToken :: Lens' CoursesAliasesList (Maybe Text)

-- | nextPageToken value returned from a previous list call, indicating
--   that the subsequent page of results should be returned. The list
--   request must be otherwise identical to the one that resulted in this
--   token.
calPageToken :: Lens' CoursesAliasesList (Maybe Text)

-- | Maximum number of items to return. Zero or unspecified indicates that
--   the server may assign a maximum. The server may return fewer than the
--   specified number of results.
calPageSize :: Lens' CoursesAliasesList (Maybe Int32)

-- | JSONP
calCallback :: Lens' CoursesAliasesList (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.Classroom.Courses.Aliases.List.CoursesAliasesList
instance Data.Data.Data Network.Google.Resource.Classroom.Courses.Aliases.List.CoursesAliasesList
instance GHC.Show.Show Network.Google.Resource.Classroom.Courses.Aliases.List.CoursesAliasesList
instance GHC.Classes.Eq Network.Google.Resource.Classroom.Courses.Aliases.List.CoursesAliasesList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Classroom.Courses.Aliases.List.CoursesAliasesList


-- | Creates course work. The resulting course work (and corresponding
--   student submissions) are associated with the Developer Console project
--   of the <a>OAuth client ID</a> used to make the request. Classroom API
--   requests to modify course work and student submissions must be made
--   with an OAuth client ID from the associated Developer Console project.
--   This method returns the following error codes: * `PERMISSION_DENIED`
--   if the requesting user is not permitted to access the requested
--   course, create course work in the requested course, share a Drive
--   attachment, or for access errors. * `INVALID_ARGUMENT` if the request
--   is malformed. * `NOT_FOUND` if the requested course does not exist. *
--   `FAILED_PRECONDITION` for the following request error: *
--   AttachmentNotVisible
--   
--   <i>See:</i> <a>Google Classroom API Reference</a> for
--   <tt>classroom.courses.courseWork.create</tt>.
module Network.Google.Resource.Classroom.Courses.CourseWork.Create

-- | A resource alias for <tt>classroom.courses.courseWork.create</tt>
--   method which the <a>CoursesCourseWorkCreate</a> request conforms to.
type CoursesCourseWorkCreateResource = "v1" :> ("courses" :> (Capture "courseId" Text :> ("courseWork" :> (QueryParam "$.xgafv" Text :> (QueryParam "upload_protocol" Text :> (QueryParam "pp" Bool :> (QueryParam "access_token" Text :> (QueryParam "uploadType" Text :> (QueryParam "bearer_token" Text :> (QueryParam "callback" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] CourseWork :> Post '[JSON] CourseWork))))))))))))

-- | Creates a value of <a>CoursesCourseWorkCreate</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ccwcXgafv</a></li>
--   <li><a>ccwcUploadProtocol</a></li>
--   <li><a>ccwcPp</a></li>
--   <li><a>ccwcCourseId</a></li>
--   <li><a>ccwcAccessToken</a></li>
--   <li><a>ccwcUploadType</a></li>
--   <li><a>ccwcPayload</a></li>
--   <li><a>ccwcBearerToken</a></li>
--   <li><a>ccwcCallback</a></li>
--   </ul>
coursesCourseWorkCreate :: Text -> CourseWork -> CoursesCourseWorkCreate

-- | Creates course work. The resulting course work (and corresponding
--   student submissions) are associated with the Developer Console project
--   of the <a>OAuth client ID</a> used to make the request. Classroom API
--   requests to modify course work and student submissions must be made
--   with an OAuth client ID from the associated Developer Console project.
--   This method returns the following error codes: * `PERMISSION_DENIED`
--   if the requesting user is not permitted to access the requested
--   course, create course work in the requested course, share a Drive
--   attachment, or for access errors. * `INVALID_ARGUMENT` if the request
--   is malformed. * `NOT_FOUND` if the requested course does not exist. *
--   `FAILED_PRECONDITION` for the following request error: *
--   AttachmentNotVisible
--   
--   <i>See:</i> <a>coursesCourseWorkCreate</a> smart constructor.
data CoursesCourseWorkCreate

-- | V1 error format.
ccwcXgafv :: Lens' CoursesCourseWorkCreate (Maybe Text)

-- | Upload protocol for media (e.g. "raw", "multipart").
ccwcUploadProtocol :: Lens' CoursesCourseWorkCreate (Maybe Text)

-- | Pretty-print response.
ccwcPp :: Lens' CoursesCourseWorkCreate Bool

-- | Identifier of the course. This identifier can be either the
--   Classroom-assigned identifier or an alias.
ccwcCourseId :: Lens' CoursesCourseWorkCreate Text

-- | OAuth access token.
ccwcAccessToken :: Lens' CoursesCourseWorkCreate (Maybe Text)

-- | Legacy upload protocol for media (e.g. "media", "multipart").
ccwcUploadType :: Lens' CoursesCourseWorkCreate (Maybe Text)

-- | Multipart request metadata.
ccwcPayload :: Lens' CoursesCourseWorkCreate CourseWork

-- | OAuth bearer token.
ccwcBearerToken :: Lens' CoursesCourseWorkCreate (Maybe Text)

-- | JSONP
ccwcCallback :: Lens' CoursesCourseWorkCreate (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.Classroom.Courses.CourseWork.Create.CoursesCourseWorkCreate
instance Data.Data.Data Network.Google.Resource.Classroom.Courses.CourseWork.Create.CoursesCourseWorkCreate
instance GHC.Show.Show Network.Google.Resource.Classroom.Courses.CourseWork.Create.CoursesCourseWorkCreate
instance GHC.Classes.Eq Network.Google.Resource.Classroom.Courses.CourseWork.Create.CoursesCourseWorkCreate
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Classroom.Courses.CourseWork.Create.CoursesCourseWorkCreate


-- | Deletes a course work. This request must be made by the Developer
--   Console project of the <a>OAuth client ID</a> used to create the
--   corresponding course work item. This method returns the following
--   error codes: * `PERMISSION_DENIED` if the requesting developer project
--   did not create the corresponding course work, if the requesting user
--   is not permitted to delete the requested course or for access errors.
--   * `FAILED_PRECONDITION` if the requested course work has already been
--   deleted. * `NOT_FOUND` if no course exists with the requested ID.
--   
--   <i>See:</i> <a>Google Classroom API Reference</a> for
--   <tt>classroom.courses.courseWork.delete</tt>.
module Network.Google.Resource.Classroom.Courses.CourseWork.Delete

-- | A resource alias for <tt>classroom.courses.courseWork.delete</tt>
--   method which the <a>CoursesCourseWorkDelete</a> request conforms to.
type CoursesCourseWorkDeleteResource = "v1" :> ("courses" :> (Capture "courseId" Text :> ("courseWork" :> (Capture "id" Text :> (QueryParam "$.xgafv" Text :> (QueryParam "upload_protocol" Text :> (QueryParam "pp" Bool :> (QueryParam "access_token" Text :> (QueryParam "uploadType" Text :> (QueryParam "bearer_token" Text :> (QueryParam "callback" Text :> (QueryParam "alt" AltJSON :> Delete '[JSON] Empty))))))))))))

-- | Creates a value of <a>CoursesCourseWorkDelete</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ccwdXgafv</a></li>
--   <li><a>ccwdUploadProtocol</a></li>
--   <li><a>ccwdPp</a></li>
--   <li><a>ccwdCourseId</a></li>
--   <li><a>ccwdAccessToken</a></li>
--   <li><a>ccwdUploadType</a></li>
--   <li><a>ccwdBearerToken</a></li>
--   <li><a>ccwdId</a></li>
--   <li><a>ccwdCallback</a></li>
--   </ul>
coursesCourseWorkDelete :: Text -> Text -> CoursesCourseWorkDelete

-- | Deletes a course work. This request must be made by the Developer
--   Console project of the <a>OAuth client ID</a> used to create the
--   corresponding course work item. This method returns the following
--   error codes: * `PERMISSION_DENIED` if the requesting developer project
--   did not create the corresponding course work, if the requesting user
--   is not permitted to delete the requested course or for access errors.
--   * `FAILED_PRECONDITION` if the requested course work has already been
--   deleted. * `NOT_FOUND` if no course exists with the requested ID.
--   
--   <i>See:</i> <a>coursesCourseWorkDelete</a> smart constructor.
data CoursesCourseWorkDelete

-- | V1 error format.
ccwdXgafv :: Lens' CoursesCourseWorkDelete (Maybe Text)

-- | Upload protocol for media (e.g. "raw", "multipart").
ccwdUploadProtocol :: Lens' CoursesCourseWorkDelete (Maybe Text)

-- | Pretty-print response.
ccwdPp :: Lens' CoursesCourseWorkDelete Bool

-- | Identifier of the course. This identifier can be either the
--   Classroom-assigned identifier or an alias.
ccwdCourseId :: Lens' CoursesCourseWorkDelete Text

-- | OAuth access token.
ccwdAccessToken :: Lens' CoursesCourseWorkDelete (Maybe Text)

-- | Legacy upload protocol for media (e.g. "media", "multipart").
ccwdUploadType :: Lens' CoursesCourseWorkDelete (Maybe Text)

-- | OAuth bearer token.
ccwdBearerToken :: Lens' CoursesCourseWorkDelete (Maybe Text)

-- | Identifier of the course work to delete. This identifier is a
--   Classroom-assigned identifier.
ccwdId :: Lens' CoursesCourseWorkDelete Text

-- | JSONP
ccwdCallback :: Lens' CoursesCourseWorkDelete (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.Classroom.Courses.CourseWork.Delete.CoursesCourseWorkDelete
instance Data.Data.Data Network.Google.Resource.Classroom.Courses.CourseWork.Delete.CoursesCourseWorkDelete
instance GHC.Show.Show Network.Google.Resource.Classroom.Courses.CourseWork.Delete.CoursesCourseWorkDelete
instance GHC.Classes.Eq Network.Google.Resource.Classroom.Courses.CourseWork.Delete.CoursesCourseWorkDelete
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Classroom.Courses.CourseWork.Delete.CoursesCourseWorkDelete


-- | Returns course work. This method returns the following error codes: *
--   `PERMISSION_DENIED` if the requesting user is not permitted to access
--   the requested course or course work, or for access errors. *
--   `INVALID_ARGUMENT` if the request is malformed. * `NOT_FOUND` if the
--   requested course or course work does not exist.
--   
--   <i>See:</i> <a>Google Classroom API Reference</a> for
--   <tt>classroom.courses.courseWork.get</tt>.
module Network.Google.Resource.Classroom.Courses.CourseWork.Get

-- | A resource alias for <tt>classroom.courses.courseWork.get</tt> method
--   which the <a>CoursesCourseWorkGet</a> request conforms to.
type CoursesCourseWorkGetResource = "v1" :> ("courses" :> (Capture "courseId" Text :> ("courseWork" :> (Capture "id" Text :> (QueryParam "$.xgafv" Text :> (QueryParam "upload_protocol" Text :> (QueryParam "pp" Bool :> (QueryParam "access_token" Text :> (QueryParam "uploadType" Text :> (QueryParam "bearer_token" Text :> (QueryParam "callback" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] CourseWork))))))))))))

-- | Creates a value of <a>CoursesCourseWorkGet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ccwgXgafv</a></li>
--   <li><a>ccwgUploadProtocol</a></li>
--   <li><a>ccwgPp</a></li>
--   <li><a>ccwgCourseId</a></li>
--   <li><a>ccwgAccessToken</a></li>
--   <li><a>ccwgUploadType</a></li>
--   <li><a>ccwgBearerToken</a></li>
--   <li><a>ccwgId</a></li>
--   <li><a>ccwgCallback</a></li>
--   </ul>
coursesCourseWorkGet :: Text -> Text -> CoursesCourseWorkGet

-- | Returns course work. This method returns the following error codes: *
--   `PERMISSION_DENIED` if the requesting user is not permitted to access
--   the requested course or course work, or for access errors. *
--   `INVALID_ARGUMENT` if the request is malformed. * `NOT_FOUND` if the
--   requested course or course work does not exist.
--   
--   <i>See:</i> <a>coursesCourseWorkGet</a> smart constructor.
data CoursesCourseWorkGet

-- | V1 error format.
ccwgXgafv :: Lens' CoursesCourseWorkGet (Maybe Text)

-- | Upload protocol for media (e.g. "raw", "multipart").
ccwgUploadProtocol :: Lens' CoursesCourseWorkGet (Maybe Text)

-- | Pretty-print response.
ccwgPp :: Lens' CoursesCourseWorkGet Bool

-- | Identifier of the course. This identifier can be either the
--   Classroom-assigned identifier or an alias.
ccwgCourseId :: Lens' CoursesCourseWorkGet Text

-- | OAuth access token.
ccwgAccessToken :: Lens' CoursesCourseWorkGet (Maybe Text)

-- | Legacy upload protocol for media (e.g. "media", "multipart").
ccwgUploadType :: Lens' CoursesCourseWorkGet (Maybe Text)

-- | OAuth bearer token.
ccwgBearerToken :: Lens' CoursesCourseWorkGet (Maybe Text)

-- | Identifier of the course work.
ccwgId :: Lens' CoursesCourseWorkGet Text

-- | JSONP
ccwgCallback :: Lens' CoursesCourseWorkGet (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.Classroom.Courses.CourseWork.Get.CoursesCourseWorkGet
instance Data.Data.Data Network.Google.Resource.Classroom.Courses.CourseWork.Get.CoursesCourseWorkGet
instance GHC.Show.Show Network.Google.Resource.Classroom.Courses.CourseWork.Get.CoursesCourseWorkGet
instance GHC.Classes.Eq Network.Google.Resource.Classroom.Courses.CourseWork.Get.CoursesCourseWorkGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Classroom.Courses.CourseWork.Get.CoursesCourseWorkGet


-- | Returns a list of course work that the requester is permitted to view.
--   Course students may only view `PUBLISHED` course work. Course teachers
--   and domain administrators may view all course work. This method
--   returns the following error codes: * `PERMISSION_DENIED` if the
--   requesting user is not permitted to access the requested course or for
--   access errors. * `INVALID_ARGUMENT` if the request is malformed. *
--   `NOT_FOUND` if the requested course does not exist.
--   
--   <i>See:</i> <a>Google Classroom API Reference</a> for
--   <tt>classroom.courses.courseWork.list</tt>.
module Network.Google.Resource.Classroom.Courses.CourseWork.List

-- | A resource alias for <tt>classroom.courses.courseWork.list</tt> method
--   which the <a>CoursesCourseWorkList</a> request conforms to.
type CoursesCourseWorkListResource = "v1" :> ("courses" :> (Capture "courseId" Text :> ("courseWork" :> (QueryParam "$.xgafv" Text :> (QueryParam "upload_protocol" Text :> (QueryParam "orderBy" Text :> (QueryParam "pp" Bool :> (QueryParam "access_token" Text :> (QueryParams "courseWorkStates" Text :> (QueryParam "uploadType" Text :> (QueryParam "bearer_token" Text :> (QueryParam "pageToken" Text :> (QueryParam "pageSize" (Textual Int32) :> (QueryParam "callback" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] ListCourseWorkResponse)))))))))))))))

-- | Creates a value of <a>CoursesCourseWorkList</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ccwlXgafv</a></li>
--   <li><a>ccwlUploadProtocol</a></li>
--   <li><a>ccwlOrderBy</a></li>
--   <li><a>ccwlPp</a></li>
--   <li><a>ccwlCourseId</a></li>
--   <li><a>ccwlAccessToken</a></li>
--   <li><a>ccwlCourseWorkStates</a></li>
--   <li><a>ccwlUploadType</a></li>
--   <li><a>ccwlBearerToken</a></li>
--   <li><a>ccwlPageToken</a></li>
--   <li><a>ccwlPageSize</a></li>
--   <li><a>ccwlCallback</a></li>
--   </ul>
coursesCourseWorkList :: Text -> CoursesCourseWorkList

-- | Returns a list of course work that the requester is permitted to view.
--   Course students may only view `PUBLISHED` course work. Course teachers
--   and domain administrators may view all course work. This method
--   returns the following error codes: * `PERMISSION_DENIED` if the
--   requesting user is not permitted to access the requested course or for
--   access errors. * `INVALID_ARGUMENT` if the request is malformed. *
--   `NOT_FOUND` if the requested course does not exist.
--   
--   <i>See:</i> <a>coursesCourseWorkList</a> smart constructor.
data CoursesCourseWorkList

-- | V1 error format.
ccwlXgafv :: Lens' CoursesCourseWorkList (Maybe Text)

-- | Upload protocol for media (e.g. "raw", "multipart").
ccwlUploadProtocol :: Lens' CoursesCourseWorkList (Maybe Text)

-- | Optional sort ordering for results. A comma-separated list of fields
--   with an optional sort direction keyword. Supported fields are
--   `updateTime` and `dueDate`. Supported direction keywords are `asc` and
--   `desc`. If not specified, `updateTime desc` is the default behavior.
--   Examples: `dueDate asc,updateTime desc`, `updateTime,dueDate desc`
ccwlOrderBy :: Lens' CoursesCourseWorkList (Maybe Text)

-- | Pretty-print response.
ccwlPp :: Lens' CoursesCourseWorkList Bool

-- | Identifier of the course. This identifier can be either the
--   Classroom-assigned identifier or an alias.
ccwlCourseId :: Lens' CoursesCourseWorkList Text

-- | OAuth access token.
ccwlAccessToken :: Lens' CoursesCourseWorkList (Maybe Text)

-- | Restriction on the work status to return. Only courseWork that matches
--   is returned. If unspecified, items with a work status of `PUBLISHED`
--   is returned.
ccwlCourseWorkStates :: Lens' CoursesCourseWorkList [Text]

-- | Legacy upload protocol for media (e.g. "media", "multipart").
ccwlUploadType :: Lens' CoursesCourseWorkList (Maybe Text)

-- | OAuth bearer token.
ccwlBearerToken :: Lens' CoursesCourseWorkList (Maybe Text)

-- | nextPageToken value returned from a previous list call, indicating
--   that the subsequent page of results should be returned. The list
--   request must be otherwise identical to the one that resulted in this
--   token.
ccwlPageToken :: Lens' CoursesCourseWorkList (Maybe Text)

-- | Maximum number of items to return. Zero or unspecified indicates that
--   the server may assign a maximum. The server may return fewer than the
--   specified number of results.
ccwlPageSize :: Lens' CoursesCourseWorkList (Maybe Int32)

-- | JSONP
ccwlCallback :: Lens' CoursesCourseWorkList (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.Classroom.Courses.CourseWork.List.CoursesCourseWorkList
instance Data.Data.Data Network.Google.Resource.Classroom.Courses.CourseWork.List.CoursesCourseWorkList
instance GHC.Show.Show Network.Google.Resource.Classroom.Courses.CourseWork.List.CoursesCourseWorkList
instance GHC.Classes.Eq Network.Google.Resource.Classroom.Courses.CourseWork.List.CoursesCourseWorkList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Classroom.Courses.CourseWork.List.CoursesCourseWorkList


-- | Updates one or more fields of a course work. See
--   google.classroom.v1.CourseWork for details of which fields may be
--   updated and who may change them. This request must be made by the
--   Developer Console project of the <a>OAuth client ID</a> used to create
--   the corresponding course work item. This method returns the following
--   error codes: * `PERMISSION_DENIED` if the requesting developer project
--   did not create the corresponding course work, if the user is not
--   permitted to make the requested modification to the student
--   submission, or for access errors. * `INVALID_ARGUMENT` if the request
--   is malformed. * `FAILED_PRECONDITION` if the requested course work has
--   already been deleted. * `NOT_FOUND` if the requested course, course
--   work, or student submission does not exist.
--   
--   <i>See:</i> <a>Google Classroom API Reference</a> for
--   <tt>classroom.courses.courseWork.patch</tt>.
module Network.Google.Resource.Classroom.Courses.CourseWork.Patch

-- | A resource alias for <tt>classroom.courses.courseWork.patch</tt>
--   method which the <a>CoursesCourseWorkPatch</a> request conforms to.
type CoursesCourseWorkPatchResource = "v1" :> ("courses" :> (Capture "courseId" Text :> ("courseWork" :> (Capture "id" Text :> (QueryParam "$.xgafv" Text :> (QueryParam "upload_protocol" Text :> (QueryParam "updateMask" Text :> (QueryParam "pp" Bool :> (QueryParam "access_token" Text :> (QueryParam "uploadType" Text :> (QueryParam "bearer_token" Text :> (QueryParam "callback" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] CourseWork :> Patch '[JSON] CourseWork))))))))))))))

-- | Creates a value of <a>CoursesCourseWorkPatch</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ccwpXgafv</a></li>
--   <li><a>ccwpUploadProtocol</a></li>
--   <li><a>ccwpUpdateMask</a></li>
--   <li><a>ccwpPp</a></li>
--   <li><a>ccwpCourseId</a></li>
--   <li><a>ccwpAccessToken</a></li>
--   <li><a>ccwpUploadType</a></li>
--   <li><a>ccwpPayload</a></li>
--   <li><a>ccwpBearerToken</a></li>
--   <li><a>ccwpId</a></li>
--   <li><a>ccwpCallback</a></li>
--   </ul>
coursesCourseWorkPatch :: Text -> CourseWork -> Text -> CoursesCourseWorkPatch

-- | Updates one or more fields of a course work. See
--   google.classroom.v1.CourseWork for details of which fields may be
--   updated and who may change them. This request must be made by the
--   Developer Console project of the <a>OAuth client ID</a> used to create
--   the corresponding course work item. This method returns the following
--   error codes: * `PERMISSION_DENIED` if the requesting developer project
--   did not create the corresponding course work, if the user is not
--   permitted to make the requested modification to the student
--   submission, or for access errors. * `INVALID_ARGUMENT` if the request
--   is malformed. * `FAILED_PRECONDITION` if the requested course work has
--   already been deleted. * `NOT_FOUND` if the requested course, course
--   work, or student submission does not exist.
--   
--   <i>See:</i> <a>coursesCourseWorkPatch</a> smart constructor.
data CoursesCourseWorkPatch

-- | V1 error format.
ccwpXgafv :: Lens' CoursesCourseWorkPatch (Maybe Text)

-- | Upload protocol for media (e.g. "raw", "multipart").
ccwpUploadProtocol :: Lens' CoursesCourseWorkPatch (Maybe Text)

-- | Mask that identifies which fields on the course work to update. This
--   field is required to do an update. The update fails if invalid fields
--   are specified. If a field supports empty values, it can be cleared by
--   specifying it in the update mask and not in the CourseWork object. If
--   a field that does not support empty values is included in the update
--   mask and not set in the CourseWork object, an `INVALID_ARGUMENT` error
--   will be returned. The following fields may be specified by teachers: *
--   `title` * `description` * `state` * `due_date` * `due_time` *
--   `max_points` * `submission_modification_mode`
ccwpUpdateMask :: Lens' CoursesCourseWorkPatch (Maybe Text)

-- | Pretty-print response.
ccwpPp :: Lens' CoursesCourseWorkPatch Bool

-- | Identifier of the course. This identifier can be either the
--   Classroom-assigned identifier or an alias.
ccwpCourseId :: Lens' CoursesCourseWorkPatch Text

-- | OAuth access token.
ccwpAccessToken :: Lens' CoursesCourseWorkPatch (Maybe Text)

-- | Legacy upload protocol for media (e.g. "media", "multipart").
ccwpUploadType :: Lens' CoursesCourseWorkPatch (Maybe Text)

-- | Multipart request metadata.
ccwpPayload :: Lens' CoursesCourseWorkPatch CourseWork

-- | OAuth bearer token.
ccwpBearerToken :: Lens' CoursesCourseWorkPatch (Maybe Text)

-- | Identifier of the course work.
ccwpId :: Lens' CoursesCourseWorkPatch Text

-- | JSONP
ccwpCallback :: Lens' CoursesCourseWorkPatch (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.Classroom.Courses.CourseWork.Patch.CoursesCourseWorkPatch
instance Data.Data.Data Network.Google.Resource.Classroom.Courses.CourseWork.Patch.CoursesCourseWorkPatch
instance GHC.Show.Show Network.Google.Resource.Classroom.Courses.CourseWork.Patch.CoursesCourseWorkPatch
instance GHC.Classes.Eq Network.Google.Resource.Classroom.Courses.CourseWork.Patch.CoursesCourseWorkPatch
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Classroom.Courses.CourseWork.Patch.CoursesCourseWorkPatch


-- | Returns a student submission. * `PERMISSION_DENIED` if the requesting
--   user is not permitted to access the requested course, course work, or
--   student submission or for access errors. * `INVALID_ARGUMENT` if the
--   request is malformed. * `NOT_FOUND` if the requested course, course
--   work, or student submission does not exist.
--   
--   <i>See:</i> <a>Google Classroom API Reference</a> for
--   <tt>classroom.courses.courseWork.studentSubmissions.get</tt>.
module Network.Google.Resource.Classroom.Courses.CourseWork.StudentSubmissions.Get

-- | A resource alias for
--   <tt>classroom.courses.courseWork.studentSubmissions.get</tt> method
--   which the <a>CoursesCourseWorkStudentSubmissionsGet</a> request
--   conforms to.
type CoursesCourseWorkStudentSubmissionsGetResource = "v1" :> ("courses" :> (Capture "courseId" Text :> ("courseWork" :> (Capture "courseWorkId" Text :> ("studentSubmissions" :> (Capture "id" Text :> (QueryParam "$.xgafv" Text :> (QueryParam "upload_protocol" Text :> (QueryParam "pp" Bool :> (QueryParam "access_token" Text :> (QueryParam "uploadType" Text :> (QueryParam "bearer_token" Text :> (QueryParam "callback" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] StudentSubmission))))))))))))))

-- | Creates a value of <a>CoursesCourseWorkStudentSubmissionsGet</a> with
--   the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ccwssgXgafv</a></li>
--   <li><a>ccwssgUploadProtocol</a></li>
--   <li><a>ccwssgPp</a></li>
--   <li><a>ccwssgCourseId</a></li>
--   <li><a>ccwssgAccessToken</a></li>
--   <li><a>ccwssgUploadType</a></li>
--   <li><a>ccwssgBearerToken</a></li>
--   <li><a>ccwssgId</a></li>
--   <li><a>ccwssgCallback</a></li>
--   <li><a>ccwssgCourseWorkId</a></li>
--   </ul>
coursesCourseWorkStudentSubmissionsGet :: Text -> Text -> Text -> CoursesCourseWorkStudentSubmissionsGet

-- | Returns a student submission. * `PERMISSION_DENIED` if the requesting
--   user is not permitted to access the requested course, course work, or
--   student submission or for access errors. * `INVALID_ARGUMENT` if the
--   request is malformed. * `NOT_FOUND` if the requested course, course
--   work, or student submission does not exist.
--   
--   <i>See:</i> <a>coursesCourseWorkStudentSubmissionsGet</a> smart
--   constructor.
data CoursesCourseWorkStudentSubmissionsGet

-- | V1 error format.
ccwssgXgafv :: Lens' CoursesCourseWorkStudentSubmissionsGet (Maybe Text)

-- | Upload protocol for media (e.g. "raw", "multipart").
ccwssgUploadProtocol :: Lens' CoursesCourseWorkStudentSubmissionsGet (Maybe Text)

-- | Pretty-print response.
ccwssgPp :: Lens' CoursesCourseWorkStudentSubmissionsGet Bool

-- | Identifier of the course. This identifier can be either the
--   Classroom-assigned identifier or an alias.
ccwssgCourseId :: Lens' CoursesCourseWorkStudentSubmissionsGet Text

-- | OAuth access token.
ccwssgAccessToken :: Lens' CoursesCourseWorkStudentSubmissionsGet (Maybe Text)

-- | Legacy upload protocol for media (e.g. "media", "multipart").
ccwssgUploadType :: Lens' CoursesCourseWorkStudentSubmissionsGet (Maybe Text)

-- | OAuth bearer token.
ccwssgBearerToken :: Lens' CoursesCourseWorkStudentSubmissionsGet (Maybe Text)

-- | Identifier of the student submission.
ccwssgId :: Lens' CoursesCourseWorkStudentSubmissionsGet Text

-- | JSONP
ccwssgCallback :: Lens' CoursesCourseWorkStudentSubmissionsGet (Maybe Text)

-- | Identifier of the course work.
ccwssgCourseWorkId :: Lens' CoursesCourseWorkStudentSubmissionsGet Text
instance GHC.Generics.Generic Network.Google.Resource.Classroom.Courses.CourseWork.StudentSubmissions.Get.CoursesCourseWorkStudentSubmissionsGet
instance Data.Data.Data Network.Google.Resource.Classroom.Courses.CourseWork.StudentSubmissions.Get.CoursesCourseWorkStudentSubmissionsGet
instance GHC.Show.Show Network.Google.Resource.Classroom.Courses.CourseWork.StudentSubmissions.Get.CoursesCourseWorkStudentSubmissionsGet
instance GHC.Classes.Eq Network.Google.Resource.Classroom.Courses.CourseWork.StudentSubmissions.Get.CoursesCourseWorkStudentSubmissionsGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Classroom.Courses.CourseWork.StudentSubmissions.Get.CoursesCourseWorkStudentSubmissionsGet


-- | Returns a list of student submissions that the requester is permitted
--   to view, factoring in the OAuth scopes of the request. `-` may be
--   specified as the `course_work_id` to include student submissions for
--   multiple course work items. Course students may only view their own
--   work. Course teachers and domain administrators may view all student
--   submissions. This method returns the following error codes: *
--   `PERMISSION_DENIED` if the requesting user is not permitted to access
--   the requested course or course work, or for access errors. *
--   `INVALID_ARGUMENT` if the request is malformed. * `NOT_FOUND` if the
--   requested course does not exist.
--   
--   <i>See:</i> <a>Google Classroom API Reference</a> for
--   <tt>classroom.courses.courseWork.studentSubmissions.list</tt>.
module Network.Google.Resource.Classroom.Courses.CourseWork.StudentSubmissions.List

-- | A resource alias for
--   <tt>classroom.courses.courseWork.studentSubmissions.list</tt> method
--   which the <a>CoursesCourseWorkStudentSubmissionsList</a> request
--   conforms to.
type CoursesCourseWorkStudentSubmissionsListResource = "v1" :> ("courses" :> (Capture "courseId" Text :> ("courseWork" :> (Capture "courseWorkId" Text :> ("studentSubmissions" :> (QueryParams "states" Text :> (QueryParam "$.xgafv" Text :> (QueryParam "late" Text :> (QueryParam "upload_protocol" Text :> (QueryParam "pp" Bool :> (QueryParam "access_token" Text :> (QueryParam "uploadType" Text :> (QueryParam "userId" Text :> (QueryParam "bearer_token" Text :> (QueryParam "pageToken" Text :> (QueryParam "pageSize" (Textual Int32) :> (QueryParam "callback" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] ListStudentSubmissionsResponse))))))))))))))))))

-- | Creates a value of <a>CoursesCourseWorkStudentSubmissionsList</a> with
--   the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ccwsslStates</a></li>
--   <li><a>ccwsslXgafv</a></li>
--   <li><a>ccwsslLate</a></li>
--   <li><a>ccwsslUploadProtocol</a></li>
--   <li><a>ccwsslPp</a></li>
--   <li><a>ccwsslCourseId</a></li>
--   <li><a>ccwsslAccessToken</a></li>
--   <li><a>ccwsslUploadType</a></li>
--   <li><a>ccwsslUserId</a></li>
--   <li><a>ccwsslBearerToken</a></li>
--   <li><a>ccwsslPageToken</a></li>
--   <li><a>ccwsslPageSize</a></li>
--   <li><a>ccwsslCallback</a></li>
--   <li><a>ccwsslCourseWorkId</a></li>
--   </ul>
coursesCourseWorkStudentSubmissionsList :: Text -> Text -> CoursesCourseWorkStudentSubmissionsList

-- | Returns a list of student submissions that the requester is permitted
--   to view, factoring in the OAuth scopes of the request. `-` may be
--   specified as the `course_work_id` to include student submissions for
--   multiple course work items. Course students may only view their own
--   work. Course teachers and domain administrators may view all student
--   submissions. This method returns the following error codes: *
--   `PERMISSION_DENIED` if the requesting user is not permitted to access
--   the requested course or course work, or for access errors. *
--   `INVALID_ARGUMENT` if the request is malformed. * `NOT_FOUND` if the
--   requested course does not exist.
--   
--   <i>See:</i> <a>coursesCourseWorkStudentSubmissionsList</a> smart
--   constructor.
data CoursesCourseWorkStudentSubmissionsList

-- | Requested submission states. If specified, returned student
--   submissions match one of the specified submission states.
ccwsslStates :: Lens' CoursesCourseWorkStudentSubmissionsList [Text]

-- | V1 error format.
ccwsslXgafv :: Lens' CoursesCourseWorkStudentSubmissionsList (Maybe Text)

-- | Requested lateness value. If specified, returned student submissions
--   are restricted by the requested value. If unspecified, submissions are
--   returned regardless of `late` value.
ccwsslLate :: Lens' CoursesCourseWorkStudentSubmissionsList (Maybe Text)

-- | Upload protocol for media (e.g. "raw", "multipart").
ccwsslUploadProtocol :: Lens' CoursesCourseWorkStudentSubmissionsList (Maybe Text)

-- | Pretty-print response.
ccwsslPp :: Lens' CoursesCourseWorkStudentSubmissionsList Bool

-- | Identifier of the course. This identifier can be either the
--   Classroom-assigned identifier or an alias.
ccwsslCourseId :: Lens' CoursesCourseWorkStudentSubmissionsList Text

-- | OAuth access token.
ccwsslAccessToken :: Lens' CoursesCourseWorkStudentSubmissionsList (Maybe Text)

-- | Legacy upload protocol for media (e.g. "media", "multipart").
ccwsslUploadType :: Lens' CoursesCourseWorkStudentSubmissionsList (Maybe Text)

-- | Optional argument to restrict returned student work to those owned by
--   the student with the specified identifier. The identifier can be one
--   of the following: * the numeric identifier for the user * the email
--   address of the user * the string literal `"me"`, indicating the
--   requesting user
ccwsslUserId :: Lens' CoursesCourseWorkStudentSubmissionsList (Maybe Text)

-- | OAuth bearer token.
ccwsslBearerToken :: Lens' CoursesCourseWorkStudentSubmissionsList (Maybe Text)

-- | nextPageToken value returned from a previous list call, indicating
--   that the subsequent page of results should be returned. The list
--   request must be otherwise identical to the one that resulted in this
--   token.
ccwsslPageToken :: Lens' CoursesCourseWorkStudentSubmissionsList (Maybe Text)

-- | Maximum number of items to return. Zero or unspecified indicates that
--   the server may assign a maximum. The server may return fewer than the
--   specified number of results.
ccwsslPageSize :: Lens' CoursesCourseWorkStudentSubmissionsList (Maybe Int32)

-- | JSONP
ccwsslCallback :: Lens' CoursesCourseWorkStudentSubmissionsList (Maybe Text)

-- | Identifer of the student work to request. This may be set to the
--   string literal `"-"` to request student work for all course work in
--   the specified course.
ccwsslCourseWorkId :: Lens' CoursesCourseWorkStudentSubmissionsList Text
instance GHC.Generics.Generic Network.Google.Resource.Classroom.Courses.CourseWork.StudentSubmissions.List.CoursesCourseWorkStudentSubmissionsList
instance Data.Data.Data Network.Google.Resource.Classroom.Courses.CourseWork.StudentSubmissions.List.CoursesCourseWorkStudentSubmissionsList
instance GHC.Show.Show Network.Google.Resource.Classroom.Courses.CourseWork.StudentSubmissions.List.CoursesCourseWorkStudentSubmissionsList
instance GHC.Classes.Eq Network.Google.Resource.Classroom.Courses.CourseWork.StudentSubmissions.List.CoursesCourseWorkStudentSubmissionsList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Classroom.Courses.CourseWork.StudentSubmissions.List.CoursesCourseWorkStudentSubmissionsList


-- | Modifies attachments of student submission. Attachments may only be
--   added to student submissions belonging to course work objects with a
--   `workType` of `ASSIGNMENT`. This request must be made by the Developer
--   Console project of the <a>OAuth client ID</a> used to create the
--   corresponding course work item. This method returns the following
--   error codes: * `PERMISSION_DENIED` if the requesting user is not
--   permitted to access the requested course or course work, if the user
--   is not permitted to modify attachments on the requested student
--   submission, or for access errors. * `INVALID_ARGUMENT` if the request
--   is malformed. * `NOT_FOUND` if the requested course, course work, or
--   student submission does not exist.
--   
--   <i>See:</i> <a>Google Classroom API Reference</a> for
--   <tt>classroom.courses.courseWork.studentSubmissions.modifyAttachments</tt>.
module Network.Google.Resource.Classroom.Courses.CourseWork.StudentSubmissions.ModifyAttachments

-- | A resource alias for
--   <tt>classroom.courses.courseWork.studentSubmissions.modifyAttachments</tt>
--   method which the
--   <a>CoursesCourseWorkStudentSubmissionsModifyAttachments</a> request
--   conforms to.
type CoursesCourseWorkStudentSubmissionsModifyAttachmentsResource = "v1" :> ("courses" :> (Capture "courseId" Text :> ("courseWork" :> (Capture "courseWorkId" Text :> ("studentSubmissions" :> (CaptureMode "id" "modifyAttachments" Text :> (QueryParam "$.xgafv" Text :> (QueryParam "upload_protocol" Text :> (QueryParam "pp" Bool :> (QueryParam "access_token" Text :> (QueryParam "uploadType" Text :> (QueryParam "bearer_token" Text :> (QueryParam "callback" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] ModifyAttachmentsRequest :> Post '[JSON] StudentSubmission)))))))))))))))

-- | Creates a value of
--   <a>CoursesCourseWorkStudentSubmissionsModifyAttachments</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ccwssmaXgafv</a></li>
--   <li><a>ccwssmaUploadProtocol</a></li>
--   <li><a>ccwssmaPp</a></li>
--   <li><a>ccwssmaCourseId</a></li>
--   <li><a>ccwssmaAccessToken</a></li>
--   <li><a>ccwssmaUploadType</a></li>
--   <li><a>ccwssmaPayload</a></li>
--   <li><a>ccwssmaBearerToken</a></li>
--   <li><a>ccwssmaId</a></li>
--   <li><a>ccwssmaCallback</a></li>
--   <li><a>ccwssmaCourseWorkId</a></li>
--   </ul>
coursesCourseWorkStudentSubmissionsModifyAttachments :: Text -> ModifyAttachmentsRequest -> Text -> Text -> CoursesCourseWorkStudentSubmissionsModifyAttachments

-- | Modifies attachments of student submission. Attachments may only be
--   added to student submissions belonging to course work objects with a
--   `workType` of `ASSIGNMENT`. This request must be made by the Developer
--   Console project of the <a>OAuth client ID</a> used to create the
--   corresponding course work item. This method returns the following
--   error codes: * `PERMISSION_DENIED` if the requesting user is not
--   permitted to access the requested course or course work, if the user
--   is not permitted to modify attachments on the requested student
--   submission, or for access errors. * `INVALID_ARGUMENT` if the request
--   is malformed. * `NOT_FOUND` if the requested course, course work, or
--   student submission does not exist.
--   
--   <i>See:</i>
--   <a>coursesCourseWorkStudentSubmissionsModifyAttachments</a> smart
--   constructor.
data CoursesCourseWorkStudentSubmissionsModifyAttachments

-- | V1 error format.
ccwssmaXgafv :: Lens' CoursesCourseWorkStudentSubmissionsModifyAttachments (Maybe Text)

-- | Upload protocol for media (e.g. "raw", "multipart").
ccwssmaUploadProtocol :: Lens' CoursesCourseWorkStudentSubmissionsModifyAttachments (Maybe Text)

-- | Pretty-print response.
ccwssmaPp :: Lens' CoursesCourseWorkStudentSubmissionsModifyAttachments Bool

-- | Identifier of the course. This identifier can be either the
--   Classroom-assigned identifier or an alias.
ccwssmaCourseId :: Lens' CoursesCourseWorkStudentSubmissionsModifyAttachments Text

-- | OAuth access token.
ccwssmaAccessToken :: Lens' CoursesCourseWorkStudentSubmissionsModifyAttachments (Maybe Text)

-- | Legacy upload protocol for media (e.g. "media", "multipart").
ccwssmaUploadType :: Lens' CoursesCourseWorkStudentSubmissionsModifyAttachments (Maybe Text)

-- | Multipart request metadata.
ccwssmaPayload :: Lens' CoursesCourseWorkStudentSubmissionsModifyAttachments ModifyAttachmentsRequest

-- | OAuth bearer token.
ccwssmaBearerToken :: Lens' CoursesCourseWorkStudentSubmissionsModifyAttachments (Maybe Text)

-- | Identifier of the student submission.
ccwssmaId :: Lens' CoursesCourseWorkStudentSubmissionsModifyAttachments Text

-- | JSONP
ccwssmaCallback :: Lens' CoursesCourseWorkStudentSubmissionsModifyAttachments (Maybe Text)

-- | Identifier of the course work.
ccwssmaCourseWorkId :: Lens' CoursesCourseWorkStudentSubmissionsModifyAttachments Text
instance GHC.Generics.Generic Network.Google.Resource.Classroom.Courses.CourseWork.StudentSubmissions.ModifyAttachments.CoursesCourseWorkStudentSubmissionsModifyAttachments
instance Data.Data.Data Network.Google.Resource.Classroom.Courses.CourseWork.StudentSubmissions.ModifyAttachments.CoursesCourseWorkStudentSubmissionsModifyAttachments
instance GHC.Show.Show Network.Google.Resource.Classroom.Courses.CourseWork.StudentSubmissions.ModifyAttachments.CoursesCourseWorkStudentSubmissionsModifyAttachments
instance GHC.Classes.Eq Network.Google.Resource.Classroom.Courses.CourseWork.StudentSubmissions.ModifyAttachments.CoursesCourseWorkStudentSubmissionsModifyAttachments
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Classroom.Courses.CourseWork.StudentSubmissions.ModifyAttachments.CoursesCourseWorkStudentSubmissionsModifyAttachments


-- | Updates one or more fields of a student submission. See
--   google.classroom.v1.StudentSubmission for details of which fields may
--   be updated and who may change them. This request must be made by the
--   Developer Console project of the <a>OAuth client ID</a> used to create
--   the corresponding course work item. This method returns the following
--   error codes: * `PERMISSION_DENIED` if the requesting developer project
--   did not create the corresponding course work, if the user is not
--   permitted to make the requested modification to the student
--   submission, or for access errors. * `INVALID_ARGUMENT` if the request
--   is malformed. * `NOT_FOUND` if the requested course, course work, or
--   student submission does not exist.
--   
--   <i>See:</i> <a>Google Classroom API Reference</a> for
--   <tt>classroom.courses.courseWork.studentSubmissions.patch</tt>.
module Network.Google.Resource.Classroom.Courses.CourseWork.StudentSubmissions.Patch

-- | A resource alias for
--   <tt>classroom.courses.courseWork.studentSubmissions.patch</tt> method
--   which the <a>CoursesCourseWorkStudentSubmissionsPatch</a> request
--   conforms to.
type CoursesCourseWorkStudentSubmissionsPatchResource = "v1" :> ("courses" :> (Capture "courseId" Text :> ("courseWork" :> (Capture "courseWorkId" Text :> ("studentSubmissions" :> (Capture "id" Text :> (QueryParam "$.xgafv" Text :> (QueryParam "upload_protocol" Text :> (QueryParam "updateMask" Text :> (QueryParam "pp" Bool :> (QueryParam "access_token" Text :> (QueryParam "uploadType" Text :> (QueryParam "bearer_token" Text :> (QueryParam "callback" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] StudentSubmission :> Patch '[JSON] StudentSubmission))))))))))))))))

-- | Creates a value of <a>CoursesCourseWorkStudentSubmissionsPatch</a>
--   with the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ccwsspXgafv</a></li>
--   <li><a>ccwsspUploadProtocol</a></li>
--   <li><a>ccwsspUpdateMask</a></li>
--   <li><a>ccwsspPp</a></li>
--   <li><a>ccwsspCourseId</a></li>
--   <li><a>ccwsspAccessToken</a></li>
--   <li><a>ccwsspUploadType</a></li>
--   <li><a>ccwsspPayload</a></li>
--   <li><a>ccwsspBearerToken</a></li>
--   <li><a>ccwsspId</a></li>
--   <li><a>ccwsspCallback</a></li>
--   <li><a>ccwsspCourseWorkId</a></li>
--   </ul>
coursesCourseWorkStudentSubmissionsPatch :: Text -> StudentSubmission -> Text -> Text -> CoursesCourseWorkStudentSubmissionsPatch

-- | Updates one or more fields of a student submission. See
--   google.classroom.v1.StudentSubmission for details of which fields may
--   be updated and who may change them. This request must be made by the
--   Developer Console project of the <a>OAuth client ID</a> used to create
--   the corresponding course work item. This method returns the following
--   error codes: * `PERMISSION_DENIED` if the requesting developer project
--   did not create the corresponding course work, if the user is not
--   permitted to make the requested modification to the student
--   submission, or for access errors. * `INVALID_ARGUMENT` if the request
--   is malformed. * `NOT_FOUND` if the requested course, course work, or
--   student submission does not exist.
--   
--   <i>See:</i> <a>coursesCourseWorkStudentSubmissionsPatch</a> smart
--   constructor.
data CoursesCourseWorkStudentSubmissionsPatch

-- | V1 error format.
ccwsspXgafv :: Lens' CoursesCourseWorkStudentSubmissionsPatch (Maybe Text)

-- | Upload protocol for media (e.g. "raw", "multipart").
ccwsspUploadProtocol :: Lens' CoursesCourseWorkStudentSubmissionsPatch (Maybe Text)

-- | Mask that identifies which fields on the student submission to update.
--   This field is required to do an update. The update fails if invalid
--   fields are specified. The following fields may be specified by
--   teachers: * `draft_grade` * `assigned_grade`
ccwsspUpdateMask :: Lens' CoursesCourseWorkStudentSubmissionsPatch (Maybe Text)

-- | Pretty-print response.
ccwsspPp :: Lens' CoursesCourseWorkStudentSubmissionsPatch Bool

-- | Identifier of the course. This identifier can be either the
--   Classroom-assigned identifier or an alias.
ccwsspCourseId :: Lens' CoursesCourseWorkStudentSubmissionsPatch Text

-- | OAuth access token.
ccwsspAccessToken :: Lens' CoursesCourseWorkStudentSubmissionsPatch (Maybe Text)

-- | Legacy upload protocol for media (e.g. "media", "multipart").
ccwsspUploadType :: Lens' CoursesCourseWorkStudentSubmissionsPatch (Maybe Text)

-- | Multipart request metadata.
ccwsspPayload :: Lens' CoursesCourseWorkStudentSubmissionsPatch StudentSubmission

-- | OAuth bearer token.
ccwsspBearerToken :: Lens' CoursesCourseWorkStudentSubmissionsPatch (Maybe Text)

-- | Identifier of the student submission.
ccwsspId :: Lens' CoursesCourseWorkStudentSubmissionsPatch Text

-- | JSONP
ccwsspCallback :: Lens' CoursesCourseWorkStudentSubmissionsPatch (Maybe Text)

-- | Identifier of the course work.
ccwsspCourseWorkId :: Lens' CoursesCourseWorkStudentSubmissionsPatch Text
instance GHC.Generics.Generic Network.Google.Resource.Classroom.Courses.CourseWork.StudentSubmissions.Patch.CoursesCourseWorkStudentSubmissionsPatch
instance Data.Data.Data Network.Google.Resource.Classroom.Courses.CourseWork.StudentSubmissions.Patch.CoursesCourseWorkStudentSubmissionsPatch
instance GHC.Show.Show Network.Google.Resource.Classroom.Courses.CourseWork.StudentSubmissions.Patch.CoursesCourseWorkStudentSubmissionsPatch
instance GHC.Classes.Eq Network.Google.Resource.Classroom.Courses.CourseWork.StudentSubmissions.Patch.CoursesCourseWorkStudentSubmissionsPatch
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Classroom.Courses.CourseWork.StudentSubmissions.Patch.CoursesCourseWorkStudentSubmissionsPatch


-- | Reclaims a student submission on behalf of the student that owns it.
--   Reclaiming a student submission transfers ownership of attached Drive
--   files to the student and update the submission state. Only the student
--   that owns the requested student submission may call this method, and
--   only for a student submission that has been turned in. This request
--   must be made by the Developer Console project of the <a>OAuth client
--   ID</a> used to create the corresponding course work item. This method
--   returns the following error codes: * `PERMISSION_DENIED` if the
--   requesting user is not permitted to access the requested course or
--   course work, unsubmit the requested student submission, or for access
--   errors. * `FAILED_PRECONDITION` if the student submission has not been
--   turned in. * `INVALID_ARGUMENT` if the request is malformed. *
--   `NOT_FOUND` if the requested course, course work, or student
--   submission does not exist.
--   
--   <i>See:</i> <a>Google Classroom API Reference</a> for
--   <tt>classroom.courses.courseWork.studentSubmissions.reclaim</tt>.
module Network.Google.Resource.Classroom.Courses.CourseWork.StudentSubmissions.Reclaim

-- | A resource alias for
--   <tt>classroom.courses.courseWork.studentSubmissions.reclaim</tt>
--   method which the <a>CoursesCourseWorkStudentSubmissionsReclaim</a>
--   request conforms to.
type CoursesCourseWorkStudentSubmissionsReclaimResource = "v1" :> ("courses" :> (Capture "courseId" Text :> ("courseWork" :> (Capture "courseWorkId" Text :> ("studentSubmissions" :> (CaptureMode "id" "reclaim" Text :> (QueryParam "$.xgafv" Text :> (QueryParam "upload_protocol" Text :> (QueryParam "pp" Bool :> (QueryParam "access_token" Text :> (QueryParam "uploadType" Text :> (QueryParam "bearer_token" Text :> (QueryParam "callback" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] ReclaimStudentSubmissionRequest :> Post '[JSON] Empty)))))))))))))))

-- | Creates a value of <a>CoursesCourseWorkStudentSubmissionsReclaim</a>
--   with the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>couXgafv</a></li>
--   <li><a>couUploadProtocol</a></li>
--   <li><a>couPp</a></li>
--   <li><a>couCourseId</a></li>
--   <li><a>couAccessToken</a></li>
--   <li><a>couUploadType</a></li>
--   <li><a>couPayload</a></li>
--   <li><a>couBearerToken</a></li>
--   <li><a>couId</a></li>
--   <li><a>couCallback</a></li>
--   <li><a>couCourseWorkId</a></li>
--   </ul>
coursesCourseWorkStudentSubmissionsReclaim :: Text -> ReclaimStudentSubmissionRequest -> Text -> Text -> CoursesCourseWorkStudentSubmissionsReclaim

-- | Reclaims a student submission on behalf of the student that owns it.
--   Reclaiming a student submission transfers ownership of attached Drive
--   files to the student and update the submission state. Only the student
--   that owns the requested student submission may call this method, and
--   only for a student submission that has been turned in. This request
--   must be made by the Developer Console project of the <a>OAuth client
--   ID</a> used to create the corresponding course work item. This method
--   returns the following error codes: * `PERMISSION_DENIED` if the
--   requesting user is not permitted to access the requested course or
--   course work, unsubmit the requested student submission, or for access
--   errors. * `FAILED_PRECONDITION` if the student submission has not been
--   turned in. * `INVALID_ARGUMENT` if the request is malformed. *
--   `NOT_FOUND` if the requested course, course work, or student
--   submission does not exist.
--   
--   <i>See:</i> <a>coursesCourseWorkStudentSubmissionsReclaim</a> smart
--   constructor.
data CoursesCourseWorkStudentSubmissionsReclaim

-- | V1 error format.
couXgafv :: Lens' CoursesCourseWorkStudentSubmissionsReclaim (Maybe Text)

-- | Upload protocol for media (e.g. "raw", "multipart").
couUploadProtocol :: Lens' CoursesCourseWorkStudentSubmissionsReclaim (Maybe Text)

-- | Pretty-print response.
couPp :: Lens' CoursesCourseWorkStudentSubmissionsReclaim Bool

-- | Identifier of the course. This identifier can be either the
--   Classroom-assigned identifier or an alias.
couCourseId :: Lens' CoursesCourseWorkStudentSubmissionsReclaim Text

-- | OAuth access token.
couAccessToken :: Lens' CoursesCourseWorkStudentSubmissionsReclaim (Maybe Text)

-- | Legacy upload protocol for media (e.g. "media", "multipart").
couUploadType :: Lens' CoursesCourseWorkStudentSubmissionsReclaim (Maybe Text)

-- | Multipart request metadata.
couPayload :: Lens' CoursesCourseWorkStudentSubmissionsReclaim ReclaimStudentSubmissionRequest

-- | OAuth bearer token.
couBearerToken :: Lens' CoursesCourseWorkStudentSubmissionsReclaim (Maybe Text)

-- | Identifier of the student submission.
couId :: Lens' CoursesCourseWorkStudentSubmissionsReclaim Text

-- | JSONP
couCallback :: Lens' CoursesCourseWorkStudentSubmissionsReclaim (Maybe Text)

-- | Identifier of the course work.
couCourseWorkId :: Lens' CoursesCourseWorkStudentSubmissionsReclaim Text
instance GHC.Generics.Generic Network.Google.Resource.Classroom.Courses.CourseWork.StudentSubmissions.Reclaim.CoursesCourseWorkStudentSubmissionsReclaim
instance Data.Data.Data Network.Google.Resource.Classroom.Courses.CourseWork.StudentSubmissions.Reclaim.CoursesCourseWorkStudentSubmissionsReclaim
instance GHC.Show.Show Network.Google.Resource.Classroom.Courses.CourseWork.StudentSubmissions.Reclaim.CoursesCourseWorkStudentSubmissionsReclaim
instance GHC.Classes.Eq Network.Google.Resource.Classroom.Courses.CourseWork.StudentSubmissions.Reclaim.CoursesCourseWorkStudentSubmissionsReclaim
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Classroom.Courses.CourseWork.StudentSubmissions.Reclaim.CoursesCourseWorkStudentSubmissionsReclaim


-- | Returns a student submission. Returning a student submission transfers
--   ownership of attached Drive files to the student and may also update
--   the submission state. Unlike the Classroom application, returning a
--   student submission does not set assignedGrade to the draftGrade value.
--   Only a teacher of the course that contains the requested student
--   submission may call this method. This request must be made by the
--   Developer Console project of the <a>OAuth client ID</a> used to create
--   the corresponding course work item. This method returns the following
--   error codes: * `PERMISSION_DENIED` if the requesting user is not
--   permitted to access the requested course or course work, return the
--   requested student submission, or for access errors. *
--   `INVALID_ARGUMENT` if the request is malformed. * `NOT_FOUND` if the
--   requested course, course work, or student submission does not exist.
--   
--   <i>See:</i> <a>Google Classroom API Reference</a> for
--   <tt>classroom.courses.courseWork.studentSubmissions.return</tt>.
module Network.Google.Resource.Classroom.Courses.CourseWork.StudentSubmissions.Return

-- | A resource alias for
--   <tt>classroom.courses.courseWork.studentSubmissions.return</tt> method
--   which the <a>CoursesCourseWorkStudentSubmissionsReturn</a> request
--   conforms to.
type CoursesCourseWorkStudentSubmissionsReturnResource = "v1" :> ("courses" :> (Capture "courseId" Text :> ("courseWork" :> (Capture "courseWorkId" Text :> ("studentSubmissions" :> (CaptureMode "id" "return" Text :> (QueryParam "$.xgafv" Text :> (QueryParam "upload_protocol" Text :> (QueryParam "pp" Bool :> (QueryParam "access_token" Text :> (QueryParam "uploadType" Text :> (QueryParam "bearer_token" Text :> (QueryParam "callback" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] ReturnStudentSubmissionRequest :> Post '[JSON] Empty)))))))))))))))

-- | Creates a value of <a>CoursesCourseWorkStudentSubmissionsReturn</a>
--   with the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ccwssrXgafv</a></li>
--   <li><a>ccwssrUploadProtocol</a></li>
--   <li><a>ccwssrPp</a></li>
--   <li><a>ccwssrCourseId</a></li>
--   <li><a>ccwssrAccessToken</a></li>
--   <li><a>ccwssrUploadType</a></li>
--   <li><a>ccwssrPayload</a></li>
--   <li><a>ccwssrBearerToken</a></li>
--   <li><a>ccwssrId</a></li>
--   <li><a>ccwssrCallback</a></li>
--   <li><a>ccwssrCourseWorkId</a></li>
--   </ul>
coursesCourseWorkStudentSubmissionsReturn :: Text -> ReturnStudentSubmissionRequest -> Text -> Text -> CoursesCourseWorkStudentSubmissionsReturn

-- | Returns a student submission. Returning a student submission transfers
--   ownership of attached Drive files to the student and may also update
--   the submission state. Unlike the Classroom application, returning a
--   student submission does not set assignedGrade to the draftGrade value.
--   Only a teacher of the course that contains the requested student
--   submission may call this method. This request must be made by the
--   Developer Console project of the <a>OAuth client ID</a> used to create
--   the corresponding course work item. This method returns the following
--   error codes: * `PERMISSION_DENIED` if the requesting user is not
--   permitted to access the requested course or course work, return the
--   requested student submission, or for access errors. *
--   `INVALID_ARGUMENT` if the request is malformed. * `NOT_FOUND` if the
--   requested course, course work, or student submission does not exist.
--   
--   <i>See:</i> <a>coursesCourseWorkStudentSubmissionsReturn</a> smart
--   constructor.
data CoursesCourseWorkStudentSubmissionsReturn

-- | V1 error format.
ccwssrXgafv :: Lens' CoursesCourseWorkStudentSubmissionsReturn (Maybe Text)

-- | Upload protocol for media (e.g. "raw", "multipart").
ccwssrUploadProtocol :: Lens' CoursesCourseWorkStudentSubmissionsReturn (Maybe Text)

-- | Pretty-print response.
ccwssrPp :: Lens' CoursesCourseWorkStudentSubmissionsReturn Bool

-- | Identifier of the course. This identifier can be either the
--   Classroom-assigned identifier or an alias.
ccwssrCourseId :: Lens' CoursesCourseWorkStudentSubmissionsReturn Text

-- | OAuth access token.
ccwssrAccessToken :: Lens' CoursesCourseWorkStudentSubmissionsReturn (Maybe Text)

-- | Legacy upload protocol for media (e.g. "media", "multipart").
ccwssrUploadType :: Lens' CoursesCourseWorkStudentSubmissionsReturn (Maybe Text)

-- | Multipart request metadata.
ccwssrPayload :: Lens' CoursesCourseWorkStudentSubmissionsReturn ReturnStudentSubmissionRequest

-- | OAuth bearer token.
ccwssrBearerToken :: Lens' CoursesCourseWorkStudentSubmissionsReturn (Maybe Text)

-- | Identifier of the student submission.
ccwssrId :: Lens' CoursesCourseWorkStudentSubmissionsReturn Text

-- | JSONP
ccwssrCallback :: Lens' CoursesCourseWorkStudentSubmissionsReturn (Maybe Text)

-- | Identifier of the course work.
ccwssrCourseWorkId :: Lens' CoursesCourseWorkStudentSubmissionsReturn Text
instance GHC.Generics.Generic Network.Google.Resource.Classroom.Courses.CourseWork.StudentSubmissions.Return.CoursesCourseWorkStudentSubmissionsReturn
instance Data.Data.Data Network.Google.Resource.Classroom.Courses.CourseWork.StudentSubmissions.Return.CoursesCourseWorkStudentSubmissionsReturn
instance GHC.Show.Show Network.Google.Resource.Classroom.Courses.CourseWork.StudentSubmissions.Return.CoursesCourseWorkStudentSubmissionsReturn
instance GHC.Classes.Eq Network.Google.Resource.Classroom.Courses.CourseWork.StudentSubmissions.Return.CoursesCourseWorkStudentSubmissionsReturn
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Classroom.Courses.CourseWork.StudentSubmissions.Return.CoursesCourseWorkStudentSubmissionsReturn


-- | Turns in a student submission. Turning in a student submission
--   transfers ownership of attached Drive files to the teacher and may
--   also update the submission state. This may only be called by the
--   student that owns the specified student submission. This request must
--   be made by the Developer Console project of the <a>OAuth client ID</a>
--   used to create the corresponding course work item. This method returns
--   the following error codes: * `PERMISSION_DENIED` if the requesting
--   user is not permitted to access the requested course or course work,
--   turn in the requested student submission, or for access errors. *
--   `INVALID_ARGUMENT` if the request is malformed. * `NOT_FOUND` if the
--   requested course, course work, or student submission does not exist.
--   
--   <i>See:</i> <a>Google Classroom API Reference</a> for
--   <tt>classroom.courses.courseWork.studentSubmissions.turnIn</tt>.
module Network.Google.Resource.Classroom.Courses.CourseWork.StudentSubmissions.TurnIn

-- | A resource alias for
--   <tt>classroom.courses.courseWork.studentSubmissions.turnIn</tt> method
--   which the <a>CoursesCourseWorkStudentSubmissionsTurnIn</a> request
--   conforms to.
type CoursesCourseWorkStudentSubmissionsTurnInResource = "v1" :> ("courses" :> (Capture "courseId" Text :> ("courseWork" :> (Capture "courseWorkId" Text :> ("studentSubmissions" :> (CaptureMode "id" "turnIn" Text :> (QueryParam "$.xgafv" Text :> (QueryParam "upload_protocol" Text :> (QueryParam "pp" Bool :> (QueryParam "access_token" Text :> (QueryParam "uploadType" Text :> (QueryParam "bearer_token" Text :> (QueryParam "callback" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] TurnInStudentSubmissionRequest :> Post '[JSON] Empty)))))))))))))))

-- | Creates a value of <a>CoursesCourseWorkStudentSubmissionsTurnIn</a>
--   with the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ccwsstiXgafv</a></li>
--   <li><a>ccwsstiUploadProtocol</a></li>
--   <li><a>ccwsstiPp</a></li>
--   <li><a>ccwsstiCourseId</a></li>
--   <li><a>ccwsstiAccessToken</a></li>
--   <li><a>ccwsstiUploadType</a></li>
--   <li><a>ccwsstiPayload</a></li>
--   <li><a>ccwsstiBearerToken</a></li>
--   <li><a>ccwsstiId</a></li>
--   <li><a>ccwsstiCallback</a></li>
--   <li><a>ccwsstiCourseWorkId</a></li>
--   </ul>
coursesCourseWorkStudentSubmissionsTurnIn :: Text -> TurnInStudentSubmissionRequest -> Text -> Text -> CoursesCourseWorkStudentSubmissionsTurnIn

-- | Turns in a student submission. Turning in a student submission
--   transfers ownership of attached Drive files to the teacher and may
--   also update the submission state. This may only be called by the
--   student that owns the specified student submission. This request must
--   be made by the Developer Console project of the <a>OAuth client ID</a>
--   used to create the corresponding course work item. This method returns
--   the following error codes: * `PERMISSION_DENIED` if the requesting
--   user is not permitted to access the requested course or course work,
--   turn in the requested student submission, or for access errors. *
--   `INVALID_ARGUMENT` if the request is malformed. * `NOT_FOUND` if the
--   requested course, course work, or student submission does not exist.
--   
--   <i>See:</i> <a>coursesCourseWorkStudentSubmissionsTurnIn</a> smart
--   constructor.
data CoursesCourseWorkStudentSubmissionsTurnIn

-- | V1 error format.
ccwsstiXgafv :: Lens' CoursesCourseWorkStudentSubmissionsTurnIn (Maybe Text)

-- | Upload protocol for media (e.g. "raw", "multipart").
ccwsstiUploadProtocol :: Lens' CoursesCourseWorkStudentSubmissionsTurnIn (Maybe Text)

-- | Pretty-print response.
ccwsstiPp :: Lens' CoursesCourseWorkStudentSubmissionsTurnIn Bool

-- | Identifier of the course. This identifier can be either the
--   Classroom-assigned identifier or an alias.
ccwsstiCourseId :: Lens' CoursesCourseWorkStudentSubmissionsTurnIn Text

-- | OAuth access token.
ccwsstiAccessToken :: Lens' CoursesCourseWorkStudentSubmissionsTurnIn (Maybe Text)

-- | Legacy upload protocol for media (e.g. "media", "multipart").
ccwsstiUploadType :: Lens' CoursesCourseWorkStudentSubmissionsTurnIn (Maybe Text)

-- | Multipart request metadata.
ccwsstiPayload :: Lens' CoursesCourseWorkStudentSubmissionsTurnIn TurnInStudentSubmissionRequest

-- | OAuth bearer token.
ccwsstiBearerToken :: Lens' CoursesCourseWorkStudentSubmissionsTurnIn (Maybe Text)

-- | Identifier of the student submission.
ccwsstiId :: Lens' CoursesCourseWorkStudentSubmissionsTurnIn Text

-- | JSONP
ccwsstiCallback :: Lens' CoursesCourseWorkStudentSubmissionsTurnIn (Maybe Text)

-- | Identifier of the course work.
ccwsstiCourseWorkId :: Lens' CoursesCourseWorkStudentSubmissionsTurnIn Text
instance GHC.Generics.Generic Network.Google.Resource.Classroom.Courses.CourseWork.StudentSubmissions.TurnIn.CoursesCourseWorkStudentSubmissionsTurnIn
instance Data.Data.Data Network.Google.Resource.Classroom.Courses.CourseWork.StudentSubmissions.TurnIn.CoursesCourseWorkStudentSubmissionsTurnIn
instance GHC.Show.Show Network.Google.Resource.Classroom.Courses.CourseWork.StudentSubmissions.TurnIn.CoursesCourseWorkStudentSubmissionsTurnIn
instance GHC.Classes.Eq Network.Google.Resource.Classroom.Courses.CourseWork.StudentSubmissions.TurnIn.CoursesCourseWorkStudentSubmissionsTurnIn
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Classroom.Courses.CourseWork.StudentSubmissions.TurnIn.CoursesCourseWorkStudentSubmissionsTurnIn


-- | Creates a course. The user specified in `ownerId` is the owner of the
--   created course and added as a teacher. This method returns the
--   following error codes: * `PERMISSION_DENIED` if the requesting user is
--   not permitted to create courses or for access errors. * `NOT_FOUND` if
--   the primary teacher is not a valid user. * `FAILED_PRECONDITION` if
--   the course owner's account is disabled or for the following request
--   errors: * UserGroupsMembershipLimitReached * `ALREADY_EXISTS` if an
--   alias was specified in the `id` and already exists.
--   
--   <i>See:</i> <a>Google Classroom API Reference</a> for
--   <tt>classroom.courses.create</tt>.
module Network.Google.Resource.Classroom.Courses.Create

-- | A resource alias for <tt>classroom.courses.create</tt> method which
--   the <a>CoursesCreate</a> request conforms to.
type CoursesCreateResource = "v1" :> ("courses" :> (QueryParam "$.xgafv" Text :> (QueryParam "upload_protocol" Text :> (QueryParam "pp" Bool :> (QueryParam "access_token" Text :> (QueryParam "uploadType" Text :> (QueryParam "bearer_token" Text :> (QueryParam "callback" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Course :> Post '[JSON] Course))))))))))

-- | Creates a value of <a>CoursesCreate</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ccXgafv</a></li>
--   <li><a>ccUploadProtocol</a></li>
--   <li><a>ccPp</a></li>
--   <li><a>ccAccessToken</a></li>
--   <li><a>ccUploadType</a></li>
--   <li><a>ccPayload</a></li>
--   <li><a>ccBearerToken</a></li>
--   <li><a>ccCallback</a></li>
--   </ul>
coursesCreate :: Course -> CoursesCreate

-- | Creates a course. The user specified in `ownerId` is the owner of the
--   created course and added as a teacher. This method returns the
--   following error codes: * `PERMISSION_DENIED` if the requesting user is
--   not permitted to create courses or for access errors. * `NOT_FOUND` if
--   the primary teacher is not a valid user. * `FAILED_PRECONDITION` if
--   the course owner's account is disabled or for the following request
--   errors: * UserGroupsMembershipLimitReached * `ALREADY_EXISTS` if an
--   alias was specified in the `id` and already exists.
--   
--   <i>See:</i> <a>coursesCreate</a> smart constructor.
data CoursesCreate

-- | V1 error format.
ccXgafv :: Lens' CoursesCreate (Maybe Text)

-- | Upload protocol for media (e.g. "raw", "multipart").
ccUploadProtocol :: Lens' CoursesCreate (Maybe Text)

-- | Pretty-print response.
ccPp :: Lens' CoursesCreate Bool

-- | OAuth access token.
ccAccessToken :: Lens' CoursesCreate (Maybe Text)

-- | Legacy upload protocol for media (e.g. "media", "multipart").
ccUploadType :: Lens' CoursesCreate (Maybe Text)

-- | Multipart request metadata.
ccPayload :: Lens' CoursesCreate Course

-- | OAuth bearer token.
ccBearerToken :: Lens' CoursesCreate (Maybe Text)

-- | JSONP
ccCallback :: Lens' CoursesCreate (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.Classroom.Courses.Create.CoursesCreate
instance Data.Data.Data Network.Google.Resource.Classroom.Courses.Create.CoursesCreate
instance GHC.Show.Show Network.Google.Resource.Classroom.Courses.Create.CoursesCreate
instance GHC.Classes.Eq Network.Google.Resource.Classroom.Courses.Create.CoursesCreate
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Classroom.Courses.Create.CoursesCreate


-- | Deletes a course. This method returns the following error codes: *
--   `PERMISSION_DENIED` if the requesting user is not permitted to delete
--   the requested course or for access errors. * `NOT_FOUND` if no course
--   exists with the requested ID.
--   
--   <i>See:</i> <a>Google Classroom API Reference</a> for
--   <tt>classroom.courses.delete</tt>.
module Network.Google.Resource.Classroom.Courses.Delete

-- | A resource alias for <tt>classroom.courses.delete</tt> method which
--   the <a>CoursesDelete</a> request conforms to.
type CoursesDeleteResource = "v1" :> ("courses" :> (Capture "id" Text :> (QueryParam "$.xgafv" Text :> (QueryParam "upload_protocol" Text :> (QueryParam "pp" Bool :> (QueryParam "access_token" Text :> (QueryParam "uploadType" Text :> (QueryParam "bearer_token" Text :> (QueryParam "callback" Text :> (QueryParam "alt" AltJSON :> Delete '[JSON] Empty))))))))))

-- | Creates a value of <a>CoursesDelete</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cdXgafv</a></li>
--   <li><a>cdUploadProtocol</a></li>
--   <li><a>cdPp</a></li>
--   <li><a>cdAccessToken</a></li>
--   <li><a>cdUploadType</a></li>
--   <li><a>cdBearerToken</a></li>
--   <li><a>cdId</a></li>
--   <li><a>cdCallback</a></li>
--   </ul>
coursesDelete :: Text -> CoursesDelete

-- | Deletes a course. This method returns the following error codes: *
--   `PERMISSION_DENIED` if the requesting user is not permitted to delete
--   the requested course or for access errors. * `NOT_FOUND` if no course
--   exists with the requested ID.
--   
--   <i>See:</i> <a>coursesDelete</a> smart constructor.
data CoursesDelete

-- | V1 error format.
cdXgafv :: Lens' CoursesDelete (Maybe Text)

-- | Upload protocol for media (e.g. "raw", "multipart").
cdUploadProtocol :: Lens' CoursesDelete (Maybe Text)

-- | Pretty-print response.
cdPp :: Lens' CoursesDelete Bool

-- | OAuth access token.
cdAccessToken :: Lens' CoursesDelete (Maybe Text)

-- | Legacy upload protocol for media (e.g. "media", "multipart").
cdUploadType :: Lens' CoursesDelete (Maybe Text)

-- | OAuth bearer token.
cdBearerToken :: Lens' CoursesDelete (Maybe Text)

-- | Identifier of the course to delete. This identifier can be either the
--   Classroom-assigned identifier or an alias.
cdId :: Lens' CoursesDelete Text

-- | JSONP
cdCallback :: Lens' CoursesDelete (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.Classroom.Courses.Delete.CoursesDelete
instance Data.Data.Data Network.Google.Resource.Classroom.Courses.Delete.CoursesDelete
instance GHC.Show.Show Network.Google.Resource.Classroom.Courses.Delete.CoursesDelete
instance GHC.Classes.Eq Network.Google.Resource.Classroom.Courses.Delete.CoursesDelete
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Classroom.Courses.Delete.CoursesDelete


-- | Returns a course. This method returns the following error codes: *
--   `PERMISSION_DENIED` if the requesting user is not permitted to access
--   the requested course or for access errors. * `NOT_FOUND` if no course
--   exists with the requested ID.
--   
--   <i>See:</i> <a>Google Classroom API Reference</a> for
--   <tt>classroom.courses.get</tt>.
module Network.Google.Resource.Classroom.Courses.Get

-- | A resource alias for <tt>classroom.courses.get</tt> method which the
--   <a>CoursesGet</a> request conforms to.
type CoursesGetResource = "v1" :> ("courses" :> (Capture "id" Text :> (QueryParam "$.xgafv" Text :> (QueryParam "upload_protocol" Text :> (QueryParam "pp" Bool :> (QueryParam "access_token" Text :> (QueryParam "uploadType" Text :> (QueryParam "bearer_token" Text :> (QueryParam "callback" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] Course))))))))))

-- | Creates a value of <a>CoursesGet</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cgXgafv</a></li>
--   <li><a>cgUploadProtocol</a></li>
--   <li><a>cgPp</a></li>
--   <li><a>cgAccessToken</a></li>
--   <li><a>cgUploadType</a></li>
--   <li><a>cgBearerToken</a></li>
--   <li><a>cgId</a></li>
--   <li><a>cgCallback</a></li>
--   </ul>
coursesGet :: Text -> CoursesGet

-- | Returns a course. This method returns the following error codes: *
--   `PERMISSION_DENIED` if the requesting user is not permitted to access
--   the requested course or for access errors. * `NOT_FOUND` if no course
--   exists with the requested ID.
--   
--   <i>See:</i> <a>coursesGet</a> smart constructor.
data CoursesGet

-- | V1 error format.
cgXgafv :: Lens' CoursesGet (Maybe Text)

-- | Upload protocol for media (e.g. "raw", "multipart").
cgUploadProtocol :: Lens' CoursesGet (Maybe Text)

-- | Pretty-print response.
cgPp :: Lens' CoursesGet Bool

-- | OAuth access token.
cgAccessToken :: Lens' CoursesGet (Maybe Text)

-- | Legacy upload protocol for media (e.g. "media", "multipart").
cgUploadType :: Lens' CoursesGet (Maybe Text)

-- | OAuth bearer token.
cgBearerToken :: Lens' CoursesGet (Maybe Text)

-- | Identifier of the course to return. This identifier can be either the
--   Classroom-assigned identifier or an alias.
cgId :: Lens' CoursesGet Text

-- | JSONP
cgCallback :: Lens' CoursesGet (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.Classroom.Courses.Get.CoursesGet
instance Data.Data.Data Network.Google.Resource.Classroom.Courses.Get.CoursesGet
instance GHC.Show.Show Network.Google.Resource.Classroom.Courses.Get.CoursesGet
instance GHC.Classes.Eq Network.Google.Resource.Classroom.Courses.Get.CoursesGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Classroom.Courses.Get.CoursesGet


-- | Returns a list of courses that the requesting user is permitted to
--   view, restricted to those that match the request. This method returns
--   the following error codes: * `PERMISSION_DENIED` for access errors. *
--   `INVALID_ARGUMENT` if the query argument is malformed. * `NOT_FOUND`
--   if any users specified in the query arguments do not exist.
--   
--   <i>See:</i> <a>Google Classroom API Reference</a> for
--   <tt>classroom.courses.list</tt>.
module Network.Google.Resource.Classroom.Courses.List

-- | A resource alias for <tt>classroom.courses.list</tt> method which the
--   <a>CoursesList</a> request conforms to.
type CoursesListResource = "v1" :> ("courses" :> (QueryParam "studentId" Text :> (QueryParam "$.xgafv" Text :> (QueryParam "upload_protocol" Text :> (QueryParam "pp" Bool :> (QueryParam "access_token" Text :> (QueryParam "uploadType" Text :> (QueryParam "teacherId" Text :> (QueryParam "bearer_token" Text :> (QueryParam "pageToken" Text :> (QueryParam "pageSize" (Textual Int32) :> (QueryParams "courseStates" Text :> (QueryParam "callback" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] ListCoursesResponse))))))))))))))

-- | Creates a value of <a>CoursesList</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>clStudentId</a></li>
--   <li><a>clXgafv</a></li>
--   <li><a>clUploadProtocol</a></li>
--   <li><a>clPp</a></li>
--   <li><a>clAccessToken</a></li>
--   <li><a>clUploadType</a></li>
--   <li><a>clTeacherId</a></li>
--   <li><a>clBearerToken</a></li>
--   <li><a>clPageToken</a></li>
--   <li><a>clPageSize</a></li>
--   <li><a>clCourseStates</a></li>
--   <li><a>clCallback</a></li>
--   </ul>
coursesList :: CoursesList

-- | Returns a list of courses that the requesting user is permitted to
--   view, restricted to those that match the request. This method returns
--   the following error codes: * `PERMISSION_DENIED` for access errors. *
--   `INVALID_ARGUMENT` if the query argument is malformed. * `NOT_FOUND`
--   if any users specified in the query arguments do not exist.
--   
--   <i>See:</i> <a>coursesList</a> smart constructor.
data CoursesList

-- | Restricts returned courses to those having a student with the
--   specified identifier. The identifier can be one of the following: *
--   the numeric identifier for the user * the email address of the user *
--   the string literal `"me"`, indicating the requesting user
clStudentId :: Lens' CoursesList (Maybe Text)

-- | V1 error format.
clXgafv :: Lens' CoursesList (Maybe Text)

-- | Upload protocol for media (e.g. "raw", "multipart").
clUploadProtocol :: Lens' CoursesList (Maybe Text)

-- | Pretty-print response.
clPp :: Lens' CoursesList Bool

-- | OAuth access token.
clAccessToken :: Lens' CoursesList (Maybe Text)

-- | Legacy upload protocol for media (e.g. "media", "multipart").
clUploadType :: Lens' CoursesList (Maybe Text)

-- | Restricts returned courses to those having a teacher with the
--   specified identifier. The identifier can be one of the following: *
--   the numeric identifier for the user * the email address of the user *
--   the string literal `"me"`, indicating the requesting user
clTeacherId :: Lens' CoursesList (Maybe Text)

-- | OAuth bearer token.
clBearerToken :: Lens' CoursesList (Maybe Text)

-- | nextPageToken value returned from a previous list call, indicating
--   that the subsequent page of results should be returned. The list
--   request must be otherwise identical to the one that resulted in this
--   token.
clPageToken :: Lens' CoursesList (Maybe Text)

-- | Maximum number of items to return. Zero or unspecified indicates that
--   the server may assign a maximum. The server may return fewer than the
--   specified number of results.
clPageSize :: Lens' CoursesList (Maybe Int32)

-- | Restricts returned courses to those in one of the specified states
clCourseStates :: Lens' CoursesList [Text]

-- | JSONP
clCallback :: Lens' CoursesList (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.Classroom.Courses.List.CoursesList
instance Data.Data.Data Network.Google.Resource.Classroom.Courses.List.CoursesList
instance GHC.Show.Show Network.Google.Resource.Classroom.Courses.List.CoursesList
instance GHC.Classes.Eq Network.Google.Resource.Classroom.Courses.List.CoursesList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Classroom.Courses.List.CoursesList


-- | Updates one or more fields in a course. This method returns the
--   following error codes: * `PERMISSION_DENIED` if the requesting user is
--   not permitted to modify the requested course or for access errors. *
--   `NOT_FOUND` if no course exists with the requested ID. *
--   `INVALID_ARGUMENT` if invalid fields are specified in the update mask
--   or if no update mask is supplied. * `FAILED_PRECONDITION` for the
--   following request errors: * CourseNotModifiable
--   
--   <i>See:</i> <a>Google Classroom API Reference</a> for
--   <tt>classroom.courses.patch</tt>.
module Network.Google.Resource.Classroom.Courses.Patch

-- | A resource alias for <tt>classroom.courses.patch</tt> method which the
--   <a>CoursesPatch</a> request conforms to.
type CoursesPatchResource = "v1" :> ("courses" :> (Capture "id" Text :> (QueryParam "$.xgafv" Text :> (QueryParam "upload_protocol" Text :> (QueryParam "updateMask" Text :> (QueryParam "pp" Bool :> (QueryParam "access_token" Text :> (QueryParam "uploadType" Text :> (QueryParam "bearer_token" Text :> (QueryParam "callback" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Course :> Patch '[JSON] Course))))))))))))

-- | Creates a value of <a>CoursesPatch</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cpXgafv</a></li>
--   <li><a>cpUploadProtocol</a></li>
--   <li><a>cpUpdateMask</a></li>
--   <li><a>cpPp</a></li>
--   <li><a>cpAccessToken</a></li>
--   <li><a>cpUploadType</a></li>
--   <li><a>cpPayload</a></li>
--   <li><a>cpBearerToken</a></li>
--   <li><a>cpId</a></li>
--   <li><a>cpCallback</a></li>
--   </ul>
coursesPatch :: Course -> Text -> CoursesPatch

-- | Updates one or more fields in a course. This method returns the
--   following error codes: * `PERMISSION_DENIED` if the requesting user is
--   not permitted to modify the requested course or for access errors. *
--   `NOT_FOUND` if no course exists with the requested ID. *
--   `INVALID_ARGUMENT` if invalid fields are specified in the update mask
--   or if no update mask is supplied. * `FAILED_PRECONDITION` for the
--   following request errors: * CourseNotModifiable
--   
--   <i>See:</i> <a>coursesPatch</a> smart constructor.
data CoursesPatch

-- | V1 error format.
cpXgafv :: Lens' CoursesPatch (Maybe Text)

-- | Upload protocol for media (e.g. "raw", "multipart").
cpUploadProtocol :: Lens' CoursesPatch (Maybe Text)

-- | Mask that identifies which fields on the course to update. This field
--   is required to do an update. The update will fail if invalid fields
--   are specified. The following fields are valid: * `name` * `section` *
--   `descriptionHeading` * `description` * `room` * `courseState` When set
--   in a query parameter, this field should be specified as
--   `updateMask=,,...`
cpUpdateMask :: Lens' CoursesPatch (Maybe Text)

-- | Pretty-print response.
cpPp :: Lens' CoursesPatch Bool

-- | OAuth access token.
cpAccessToken :: Lens' CoursesPatch (Maybe Text)

-- | Legacy upload protocol for media (e.g. "media", "multipart").
cpUploadType :: Lens' CoursesPatch (Maybe Text)

-- | Multipart request metadata.
cpPayload :: Lens' CoursesPatch Course

-- | OAuth bearer token.
cpBearerToken :: Lens' CoursesPatch (Maybe Text)

-- | Identifier of the course to update. This identifier can be either the
--   Classroom-assigned identifier or an alias.
cpId :: Lens' CoursesPatch Text

-- | JSONP
cpCallback :: Lens' CoursesPatch (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.Classroom.Courses.Patch.CoursesPatch
instance Data.Data.Data Network.Google.Resource.Classroom.Courses.Patch.CoursesPatch
instance GHC.Show.Show Network.Google.Resource.Classroom.Courses.Patch.CoursesPatch
instance GHC.Classes.Eq Network.Google.Resource.Classroom.Courses.Patch.CoursesPatch
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Classroom.Courses.Patch.CoursesPatch


-- | Adds a user as a student of a course. This method returns the
--   following error codes: * `PERMISSION_DENIED` if the requesting user is
--   not permitted to create students in this course or for access errors.
--   * `NOT_FOUND` if the requested course ID does not exist. *
--   `FAILED_PRECONDITION` if the requested user's account is disabled, for
--   the following request errors: * CourseMemberLimitReached *
--   CourseNotModifiable * UserGroupsMembershipLimitReached *
--   `ALREADY_EXISTS` if the user is already a student or teacher in the
--   course.
--   
--   <i>See:</i> <a>Google Classroom API Reference</a> for
--   <tt>classroom.courses.students.create</tt>.
module Network.Google.Resource.Classroom.Courses.Students.Create

-- | A resource alias for <tt>classroom.courses.students.create</tt> method
--   which the <a>CoursesStudentsCreate</a> request conforms to.
type CoursesStudentsCreateResource = "v1" :> ("courses" :> (Capture "courseId" Text :> ("students" :> (QueryParam "$.xgafv" Text :> (QueryParam "upload_protocol" Text :> (QueryParam "pp" Bool :> (QueryParam "access_token" Text :> (QueryParam "uploadType" Text :> (QueryParam "enrollmentCode" Text :> (QueryParam "bearer_token" Text :> (QueryParam "callback" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Student :> Post '[JSON] Student)))))))))))))

-- | Creates a value of <a>CoursesStudentsCreate</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cscXgafv</a></li>
--   <li><a>cscUploadProtocol</a></li>
--   <li><a>cscPp</a></li>
--   <li><a>cscCourseId</a></li>
--   <li><a>cscAccessToken</a></li>
--   <li><a>cscUploadType</a></li>
--   <li><a>cscPayload</a></li>
--   <li><a>cscEnrollmentCode</a></li>
--   <li><a>cscBearerToken</a></li>
--   <li><a>cscCallback</a></li>
--   </ul>
coursesStudentsCreate :: Text -> Student -> CoursesStudentsCreate

-- | Adds a user as a student of a course. This method returns the
--   following error codes: * `PERMISSION_DENIED` if the requesting user is
--   not permitted to create students in this course or for access errors.
--   * `NOT_FOUND` if the requested course ID does not exist. *
--   `FAILED_PRECONDITION` if the requested user's account is disabled, for
--   the following request errors: * CourseMemberLimitReached *
--   CourseNotModifiable * UserGroupsMembershipLimitReached *
--   `ALREADY_EXISTS` if the user is already a student or teacher in the
--   course.
--   
--   <i>See:</i> <a>coursesStudentsCreate</a> smart constructor.
data CoursesStudentsCreate

-- | V1 error format.
cscXgafv :: Lens' CoursesStudentsCreate (Maybe Text)

-- | Upload protocol for media (e.g. "raw", "multipart").
cscUploadProtocol :: Lens' CoursesStudentsCreate (Maybe Text)

-- | Pretty-print response.
cscPp :: Lens' CoursesStudentsCreate Bool

-- | Identifier of the course to create the student in. This identifier can
--   be either the Classroom-assigned identifier or an alias.
cscCourseId :: Lens' CoursesStudentsCreate Text

-- | OAuth access token.
cscAccessToken :: Lens' CoursesStudentsCreate (Maybe Text)

-- | Legacy upload protocol for media (e.g. "media", "multipart").
cscUploadType :: Lens' CoursesStudentsCreate (Maybe Text)

-- | Multipart request metadata.
cscPayload :: Lens' CoursesStudentsCreate Student

-- | Enrollment code of the course to create the student in. This code is
--   required if userId corresponds to the requesting user; it may be
--   omitted if the requesting user has administrative permissions to
--   create students for any user.
cscEnrollmentCode :: Lens' CoursesStudentsCreate (Maybe Text)

-- | OAuth bearer token.
cscBearerToken :: Lens' CoursesStudentsCreate (Maybe Text)

-- | JSONP
cscCallback :: Lens' CoursesStudentsCreate (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.Classroom.Courses.Students.Create.CoursesStudentsCreate
instance Data.Data.Data Network.Google.Resource.Classroom.Courses.Students.Create.CoursesStudentsCreate
instance GHC.Show.Show Network.Google.Resource.Classroom.Courses.Students.Create.CoursesStudentsCreate
instance GHC.Classes.Eq Network.Google.Resource.Classroom.Courses.Students.Create.CoursesStudentsCreate
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Classroom.Courses.Students.Create.CoursesStudentsCreate


-- | Deletes a student of a course. This method returns the following error
--   codes: * `PERMISSION_DENIED` if the requesting user is not permitted
--   to delete students of this course or for access errors. * `NOT_FOUND`
--   if no student of this course has the requested ID or if the course
--   does not exist.
--   
--   <i>See:</i> <a>Google Classroom API Reference</a> for
--   <tt>classroom.courses.students.delete</tt>.
module Network.Google.Resource.Classroom.Courses.Students.Delete

-- | A resource alias for <tt>classroom.courses.students.delete</tt> method
--   which the <a>CoursesStudentsDelete</a> request conforms to.
type CoursesStudentsDeleteResource = "v1" :> ("courses" :> (Capture "courseId" Text :> ("students" :> (Capture "userId" Text :> (QueryParam "$.xgafv" Text :> (QueryParam "upload_protocol" Text :> (QueryParam "pp" Bool :> (QueryParam "access_token" Text :> (QueryParam "uploadType" Text :> (QueryParam "bearer_token" Text :> (QueryParam "callback" Text :> (QueryParam "alt" AltJSON :> Delete '[JSON] Empty))))))))))))

-- | Creates a value of <a>CoursesStudentsDelete</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>csdXgafv</a></li>
--   <li><a>csdUploadProtocol</a></li>
--   <li><a>csdPp</a></li>
--   <li><a>csdCourseId</a></li>
--   <li><a>csdAccessToken</a></li>
--   <li><a>csdUploadType</a></li>
--   <li><a>csdUserId</a></li>
--   <li><a>csdBearerToken</a></li>
--   <li><a>csdCallback</a></li>
--   </ul>
coursesStudentsDelete :: Text -> Text -> CoursesStudentsDelete

-- | Deletes a student of a course. This method returns the following error
--   codes: * `PERMISSION_DENIED` if the requesting user is not permitted
--   to delete students of this course or for access errors. * `NOT_FOUND`
--   if no student of this course has the requested ID or if the course
--   does not exist.
--   
--   <i>See:</i> <a>coursesStudentsDelete</a> smart constructor.
data CoursesStudentsDelete

-- | V1 error format.
csdXgafv :: Lens' CoursesStudentsDelete (Maybe Text)

-- | Upload protocol for media (e.g. "raw", "multipart").
csdUploadProtocol :: Lens' CoursesStudentsDelete (Maybe Text)

-- | Pretty-print response.
csdPp :: Lens' CoursesStudentsDelete Bool

-- | Identifier of the course. This identifier can be either the
--   Classroom-assigned identifier or an alias.
csdCourseId :: Lens' CoursesStudentsDelete Text

-- | OAuth access token.
csdAccessToken :: Lens' CoursesStudentsDelete (Maybe Text)

-- | Legacy upload protocol for media (e.g. "media", "multipart").
csdUploadType :: Lens' CoursesStudentsDelete (Maybe Text)

-- | Identifier of the student to delete. The identifier can be one of the
--   following: * the numeric identifier for the user * the email address
--   of the user * the string literal `"me"`, indicating the requesting
--   user
csdUserId :: Lens' CoursesStudentsDelete Text

-- | OAuth bearer token.
csdBearerToken :: Lens' CoursesStudentsDelete (Maybe Text)

-- | JSONP
csdCallback :: Lens' CoursesStudentsDelete (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.Classroom.Courses.Students.Delete.CoursesStudentsDelete
instance Data.Data.Data Network.Google.Resource.Classroom.Courses.Students.Delete.CoursesStudentsDelete
instance GHC.Show.Show Network.Google.Resource.Classroom.Courses.Students.Delete.CoursesStudentsDelete
instance GHC.Classes.Eq Network.Google.Resource.Classroom.Courses.Students.Delete.CoursesStudentsDelete
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Classroom.Courses.Students.Delete.CoursesStudentsDelete


-- | Returns a student of a course. This method returns the following error
--   codes: * `PERMISSION_DENIED` if the requesting user is not permitted
--   to view students of this course or for access errors. * `NOT_FOUND` if
--   no student of this course has the requested ID or if the course does
--   not exist.
--   
--   <i>See:</i> <a>Google Classroom API Reference</a> for
--   <tt>classroom.courses.students.get</tt>.
module Network.Google.Resource.Classroom.Courses.Students.Get

-- | A resource alias for <tt>classroom.courses.students.get</tt> method
--   which the <a>CoursesStudentsGet</a> request conforms to.
type CoursesStudentsGetResource = "v1" :> ("courses" :> (Capture "courseId" Text :> ("students" :> (Capture "userId" Text :> (QueryParam "$.xgafv" Text :> (QueryParam "upload_protocol" Text :> (QueryParam "pp" Bool :> (QueryParam "access_token" Text :> (QueryParam "uploadType" Text :> (QueryParam "bearer_token" Text :> (QueryParam "callback" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] Student))))))))))))

-- | Creates a value of <a>CoursesStudentsGet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>csgXgafv</a></li>
--   <li><a>csgUploadProtocol</a></li>
--   <li><a>csgPp</a></li>
--   <li><a>csgCourseId</a></li>
--   <li><a>csgAccessToken</a></li>
--   <li><a>csgUploadType</a></li>
--   <li><a>csgUserId</a></li>
--   <li><a>csgBearerToken</a></li>
--   <li><a>csgCallback</a></li>
--   </ul>
coursesStudentsGet :: Text -> Text -> CoursesStudentsGet

-- | Returns a student of a course. This method returns the following error
--   codes: * `PERMISSION_DENIED` if the requesting user is not permitted
--   to view students of this course or for access errors. * `NOT_FOUND` if
--   no student of this course has the requested ID or if the course does
--   not exist.
--   
--   <i>See:</i> <a>coursesStudentsGet</a> smart constructor.
data CoursesStudentsGet

-- | V1 error format.
csgXgafv :: Lens' CoursesStudentsGet (Maybe Text)

-- | Upload protocol for media (e.g. "raw", "multipart").
csgUploadProtocol :: Lens' CoursesStudentsGet (Maybe Text)

-- | Pretty-print response.
csgPp :: Lens' CoursesStudentsGet Bool

-- | Identifier of the course. This identifier can be either the
--   Classroom-assigned identifier or an alias.
csgCourseId :: Lens' CoursesStudentsGet Text

-- | OAuth access token.
csgAccessToken :: Lens' CoursesStudentsGet (Maybe Text)

-- | Legacy upload protocol for media (e.g. "media", "multipart").
csgUploadType :: Lens' CoursesStudentsGet (Maybe Text)

-- | Identifier of the student to return. The identifier can be one of the
--   following: * the numeric identifier for the user * the email address
--   of the user * the string literal `"me"`, indicating the requesting
--   user
csgUserId :: Lens' CoursesStudentsGet Text

-- | OAuth bearer token.
csgBearerToken :: Lens' CoursesStudentsGet (Maybe Text)

-- | JSONP
csgCallback :: Lens' CoursesStudentsGet (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.Classroom.Courses.Students.Get.CoursesStudentsGet
instance Data.Data.Data Network.Google.Resource.Classroom.Courses.Students.Get.CoursesStudentsGet
instance GHC.Show.Show Network.Google.Resource.Classroom.Courses.Students.Get.CoursesStudentsGet
instance GHC.Classes.Eq Network.Google.Resource.Classroom.Courses.Students.Get.CoursesStudentsGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Classroom.Courses.Students.Get.CoursesStudentsGet


-- | Returns a list of students of this course that the requester is
--   permitted to view. This method returns the following error codes: *
--   `NOT_FOUND` if the course does not exist. * `PERMISSION_DENIED` for
--   access errors.
--   
--   <i>See:</i> <a>Google Classroom API Reference</a> for
--   <tt>classroom.courses.students.list</tt>.
module Network.Google.Resource.Classroom.Courses.Students.List

-- | A resource alias for <tt>classroom.courses.students.list</tt> method
--   which the <a>CoursesStudentsList</a> request conforms to.
type CoursesStudentsListResource = "v1" :> ("courses" :> (Capture "courseId" Text :> ("students" :> (QueryParam "$.xgafv" Text :> (QueryParam "upload_protocol" Text :> (QueryParam "pp" Bool :> (QueryParam "access_token" Text :> (QueryParam "uploadType" Text :> (QueryParam "bearer_token" Text :> (QueryParam "pageToken" Text :> (QueryParam "pageSize" (Textual Int32) :> (QueryParam "callback" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] ListStudentsResponse)))))))))))))

-- | Creates a value of <a>CoursesStudentsList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cslXgafv</a></li>
--   <li><a>cslUploadProtocol</a></li>
--   <li><a>cslPp</a></li>
--   <li><a>cslCourseId</a></li>
--   <li><a>cslAccessToken</a></li>
--   <li><a>cslUploadType</a></li>
--   <li><a>cslBearerToken</a></li>
--   <li><a>cslPageToken</a></li>
--   <li><a>cslPageSize</a></li>
--   <li><a>cslCallback</a></li>
--   </ul>
coursesStudentsList :: Text -> CoursesStudentsList

-- | Returns a list of students of this course that the requester is
--   permitted to view. This method returns the following error codes: *
--   `NOT_FOUND` if the course does not exist. * `PERMISSION_DENIED` for
--   access errors.
--   
--   <i>See:</i> <a>coursesStudentsList</a> smart constructor.
data CoursesStudentsList

-- | V1 error format.
cslXgafv :: Lens' CoursesStudentsList (Maybe Text)

-- | Upload protocol for media (e.g. "raw", "multipart").
cslUploadProtocol :: Lens' CoursesStudentsList (Maybe Text)

-- | Pretty-print response.
cslPp :: Lens' CoursesStudentsList Bool

-- | Identifier of the course. This identifier can be either the
--   Classroom-assigned identifier or an alias.
cslCourseId :: Lens' CoursesStudentsList Text

-- | OAuth access token.
cslAccessToken :: Lens' CoursesStudentsList (Maybe Text)

-- | Legacy upload protocol for media (e.g. "media", "multipart").
cslUploadType :: Lens' CoursesStudentsList (Maybe Text)

-- | OAuth bearer token.
cslBearerToken :: Lens' CoursesStudentsList (Maybe Text)

-- | nextPageToken value returned from a previous list call, indicating
--   that the subsequent page of results should be returned. The list
--   request must be otherwise identical to the one that resulted in this
--   token.
cslPageToken :: Lens' CoursesStudentsList (Maybe Text)

-- | Maximum number of items to return. Zero means no maximum. The server
--   may return fewer than the specified number of results.
cslPageSize :: Lens' CoursesStudentsList (Maybe Int32)

-- | JSONP
cslCallback :: Lens' CoursesStudentsList (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.Classroom.Courses.Students.List.CoursesStudentsList
instance Data.Data.Data Network.Google.Resource.Classroom.Courses.Students.List.CoursesStudentsList
instance GHC.Show.Show Network.Google.Resource.Classroom.Courses.Students.List.CoursesStudentsList
instance GHC.Classes.Eq Network.Google.Resource.Classroom.Courses.Students.List.CoursesStudentsList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Classroom.Courses.Students.List.CoursesStudentsList


-- | Creates a teacher of a course. This method returns the following error
--   codes: * `PERMISSION_DENIED` if the requesting user is not permitted
--   to create teachers in this course or for access errors. * `NOT_FOUND`
--   if the requested course ID does not exist. * `FAILED_PRECONDITION` if
--   the requested user's account is disabled, for the following request
--   errors: * CourseMemberLimitReached * CourseNotModifiable *
--   CourseTeacherLimitReached * UserGroupsMembershipLimitReached *
--   `ALREADY_EXISTS` if the user is already a teacher or student in the
--   course.
--   
--   <i>See:</i> <a>Google Classroom API Reference</a> for
--   <tt>classroom.courses.teachers.create</tt>.
module Network.Google.Resource.Classroom.Courses.Teachers.Create

-- | A resource alias for <tt>classroom.courses.teachers.create</tt> method
--   which the <a>CoursesTeachersCreate</a> request conforms to.
type CoursesTeachersCreateResource = "v1" :> ("courses" :> (Capture "courseId" Text :> ("teachers" :> (QueryParam "$.xgafv" Text :> (QueryParam "upload_protocol" Text :> (QueryParam "pp" Bool :> (QueryParam "access_token" Text :> (QueryParam "uploadType" Text :> (QueryParam "bearer_token" Text :> (QueryParam "callback" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Teacher :> Post '[JSON] Teacher))))))))))))

-- | Creates a value of <a>CoursesTeachersCreate</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ctcXgafv</a></li>
--   <li><a>ctcUploadProtocol</a></li>
--   <li><a>ctcPp</a></li>
--   <li><a>ctcCourseId</a></li>
--   <li><a>ctcAccessToken</a></li>
--   <li><a>ctcUploadType</a></li>
--   <li><a>ctcPayload</a></li>
--   <li><a>ctcBearerToken</a></li>
--   <li><a>ctcCallback</a></li>
--   </ul>
coursesTeachersCreate :: Text -> Teacher -> CoursesTeachersCreate

-- | Creates a teacher of a course. This method returns the following error
--   codes: * `PERMISSION_DENIED` if the requesting user is not permitted
--   to create teachers in this course or for access errors. * `NOT_FOUND`
--   if the requested course ID does not exist. * `FAILED_PRECONDITION` if
--   the requested user's account is disabled, for the following request
--   errors: * CourseMemberLimitReached * CourseNotModifiable *
--   CourseTeacherLimitReached * UserGroupsMembershipLimitReached *
--   `ALREADY_EXISTS` if the user is already a teacher or student in the
--   course.
--   
--   <i>See:</i> <a>coursesTeachersCreate</a> smart constructor.
data CoursesTeachersCreate

-- | V1 error format.
ctcXgafv :: Lens' CoursesTeachersCreate (Maybe Text)

-- | Upload protocol for media (e.g. "raw", "multipart").
ctcUploadProtocol :: Lens' CoursesTeachersCreate (Maybe Text)

-- | Pretty-print response.
ctcPp :: Lens' CoursesTeachersCreate Bool

-- | Identifier of the course. This identifier can be either the
--   Classroom-assigned identifier or an alias.
ctcCourseId :: Lens' CoursesTeachersCreate Text

-- | OAuth access token.
ctcAccessToken :: Lens' CoursesTeachersCreate (Maybe Text)

-- | Legacy upload protocol for media (e.g. "media", "multipart").
ctcUploadType :: Lens' CoursesTeachersCreate (Maybe Text)

-- | Multipart request metadata.
ctcPayload :: Lens' CoursesTeachersCreate Teacher

-- | OAuth bearer token.
ctcBearerToken :: Lens' CoursesTeachersCreate (Maybe Text)

-- | JSONP
ctcCallback :: Lens' CoursesTeachersCreate (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.Classroom.Courses.Teachers.Create.CoursesTeachersCreate
instance Data.Data.Data Network.Google.Resource.Classroom.Courses.Teachers.Create.CoursesTeachersCreate
instance GHC.Show.Show Network.Google.Resource.Classroom.Courses.Teachers.Create.CoursesTeachersCreate
instance GHC.Classes.Eq Network.Google.Resource.Classroom.Courses.Teachers.Create.CoursesTeachersCreate
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Classroom.Courses.Teachers.Create.CoursesTeachersCreate


-- | Deletes a teacher of a course. This method returns the following error
--   codes: * `PERMISSION_DENIED` if the requesting user is not permitted
--   to delete teachers of this course or for access errors. * `NOT_FOUND`
--   if no teacher of this course has the requested ID or if the course
--   does not exist. * `FAILED_PRECONDITION` if the requested ID belongs to
--   the primary teacher of this course.
--   
--   <i>See:</i> <a>Google Classroom API Reference</a> for
--   <tt>classroom.courses.teachers.delete</tt>.
module Network.Google.Resource.Classroom.Courses.Teachers.Delete

-- | A resource alias for <tt>classroom.courses.teachers.delete</tt> method
--   which the <a>CoursesTeachersDelete</a> request conforms to.
type CoursesTeachersDeleteResource = "v1" :> ("courses" :> (Capture "courseId" Text :> ("teachers" :> (Capture "userId" Text :> (QueryParam "$.xgafv" Text :> (QueryParam "upload_protocol" Text :> (QueryParam "pp" Bool :> (QueryParam "access_token" Text :> (QueryParam "uploadType" Text :> (QueryParam "bearer_token" Text :> (QueryParam "callback" Text :> (QueryParam "alt" AltJSON :> Delete '[JSON] Empty))))))))))))

-- | Creates a value of <a>CoursesTeachersDelete</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ctdXgafv</a></li>
--   <li><a>ctdUploadProtocol</a></li>
--   <li><a>ctdPp</a></li>
--   <li><a>ctdCourseId</a></li>
--   <li><a>ctdAccessToken</a></li>
--   <li><a>ctdUploadType</a></li>
--   <li><a>ctdUserId</a></li>
--   <li><a>ctdBearerToken</a></li>
--   <li><a>ctdCallback</a></li>
--   </ul>
coursesTeachersDelete :: Text -> Text -> CoursesTeachersDelete

-- | Deletes a teacher of a course. This method returns the following error
--   codes: * `PERMISSION_DENIED` if the requesting user is not permitted
--   to delete teachers of this course or for access errors. * `NOT_FOUND`
--   if no teacher of this course has the requested ID or if the course
--   does not exist. * `FAILED_PRECONDITION` if the requested ID belongs to
--   the primary teacher of this course.
--   
--   <i>See:</i> <a>coursesTeachersDelete</a> smart constructor.
data CoursesTeachersDelete

-- | V1 error format.
ctdXgafv :: Lens' CoursesTeachersDelete (Maybe Text)

-- | Upload protocol for media (e.g. "raw", "multipart").
ctdUploadProtocol :: Lens' CoursesTeachersDelete (Maybe Text)

-- | Pretty-print response.
ctdPp :: Lens' CoursesTeachersDelete Bool

-- | Identifier of the course. This identifier can be either the
--   Classroom-assigned identifier or an alias.
ctdCourseId :: Lens' CoursesTeachersDelete Text

-- | OAuth access token.
ctdAccessToken :: Lens' CoursesTeachersDelete (Maybe Text)

-- | Legacy upload protocol for media (e.g. "media", "multipart").
ctdUploadType :: Lens' CoursesTeachersDelete (Maybe Text)

-- | Identifier of the teacher to delete. The identifier can be one of the
--   following: * the numeric identifier for the user * the email address
--   of the user * the string literal `"me"`, indicating the requesting
--   user
ctdUserId :: Lens' CoursesTeachersDelete Text

-- | OAuth bearer token.
ctdBearerToken :: Lens' CoursesTeachersDelete (Maybe Text)

-- | JSONP
ctdCallback :: Lens' CoursesTeachersDelete (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.Classroom.Courses.Teachers.Delete.CoursesTeachersDelete
instance Data.Data.Data Network.Google.Resource.Classroom.Courses.Teachers.Delete.CoursesTeachersDelete
instance GHC.Show.Show Network.Google.Resource.Classroom.Courses.Teachers.Delete.CoursesTeachersDelete
instance GHC.Classes.Eq Network.Google.Resource.Classroom.Courses.Teachers.Delete.CoursesTeachersDelete
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Classroom.Courses.Teachers.Delete.CoursesTeachersDelete


-- | Returns a teacher of a course. This method returns the following error
--   codes: * `PERMISSION_DENIED` if the requesting user is not permitted
--   to view teachers of this course or for access errors. * `NOT_FOUND` if
--   no teacher of this course has the requested ID or if the course does
--   not exist.
--   
--   <i>See:</i> <a>Google Classroom API Reference</a> for
--   <tt>classroom.courses.teachers.get</tt>.
module Network.Google.Resource.Classroom.Courses.Teachers.Get

-- | A resource alias for <tt>classroom.courses.teachers.get</tt> method
--   which the <a>CoursesTeachersGet</a> request conforms to.
type CoursesTeachersGetResource = "v1" :> ("courses" :> (Capture "courseId" Text :> ("teachers" :> (Capture "userId" Text :> (QueryParam "$.xgafv" Text :> (QueryParam "upload_protocol" Text :> (QueryParam "pp" Bool :> (QueryParam "access_token" Text :> (QueryParam "uploadType" Text :> (QueryParam "bearer_token" Text :> (QueryParam "callback" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] Teacher))))))))))))

-- | Creates a value of <a>CoursesTeachersGet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ctgXgafv</a></li>
--   <li><a>ctgUploadProtocol</a></li>
--   <li><a>ctgPp</a></li>
--   <li><a>ctgCourseId</a></li>
--   <li><a>ctgAccessToken</a></li>
--   <li><a>ctgUploadType</a></li>
--   <li><a>ctgUserId</a></li>
--   <li><a>ctgBearerToken</a></li>
--   <li><a>ctgCallback</a></li>
--   </ul>
coursesTeachersGet :: Text -> Text -> CoursesTeachersGet

-- | Returns a teacher of a course. This method returns the following error
--   codes: * `PERMISSION_DENIED` if the requesting user is not permitted
--   to view teachers of this course or for access errors. * `NOT_FOUND` if
--   no teacher of this course has the requested ID or if the course does
--   not exist.
--   
--   <i>See:</i> <a>coursesTeachersGet</a> smart constructor.
data CoursesTeachersGet

-- | V1 error format.
ctgXgafv :: Lens' CoursesTeachersGet (Maybe Text)

-- | Upload protocol for media (e.g. "raw", "multipart").
ctgUploadProtocol :: Lens' CoursesTeachersGet (Maybe Text)

-- | Pretty-print response.
ctgPp :: Lens' CoursesTeachersGet Bool

-- | Identifier of the course. This identifier can be either the
--   Classroom-assigned identifier or an alias.
ctgCourseId :: Lens' CoursesTeachersGet Text

-- | OAuth access token.
ctgAccessToken :: Lens' CoursesTeachersGet (Maybe Text)

-- | Legacy upload protocol for media (e.g. "media", "multipart").
ctgUploadType :: Lens' CoursesTeachersGet (Maybe Text)

-- | Identifier of the teacher to return. The identifier can be one of the
--   following: * the numeric identifier for the user * the email address
--   of the user * the string literal `"me"`, indicating the requesting
--   user
ctgUserId :: Lens' CoursesTeachersGet Text

-- | OAuth bearer token.
ctgBearerToken :: Lens' CoursesTeachersGet (Maybe Text)

-- | JSONP
ctgCallback :: Lens' CoursesTeachersGet (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.Classroom.Courses.Teachers.Get.CoursesTeachersGet
instance Data.Data.Data Network.Google.Resource.Classroom.Courses.Teachers.Get.CoursesTeachersGet
instance GHC.Show.Show Network.Google.Resource.Classroom.Courses.Teachers.Get.CoursesTeachersGet
instance GHC.Classes.Eq Network.Google.Resource.Classroom.Courses.Teachers.Get.CoursesTeachersGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Classroom.Courses.Teachers.Get.CoursesTeachersGet


-- | Returns a list of teachers of this course that the requester is
--   permitted to view. This method returns the following error codes: *
--   `NOT_FOUND` if the course does not exist. * `PERMISSION_DENIED` for
--   access errors.
--   
--   <i>See:</i> <a>Google Classroom API Reference</a> for
--   <tt>classroom.courses.teachers.list</tt>.
module Network.Google.Resource.Classroom.Courses.Teachers.List

-- | A resource alias for <tt>classroom.courses.teachers.list</tt> method
--   which the <a>CoursesTeachersList</a> request conforms to.
type CoursesTeachersListResource = "v1" :> ("courses" :> (Capture "courseId" Text :> ("teachers" :> (QueryParam "$.xgafv" Text :> (QueryParam "upload_protocol" Text :> (QueryParam "pp" Bool :> (QueryParam "access_token" Text :> (QueryParam "uploadType" Text :> (QueryParam "bearer_token" Text :> (QueryParam "pageToken" Text :> (QueryParam "pageSize" (Textual Int32) :> (QueryParam "callback" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] ListTeachersResponse)))))))))))))

-- | Creates a value of <a>CoursesTeachersList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ctlXgafv</a></li>
--   <li><a>ctlUploadProtocol</a></li>
--   <li><a>ctlPp</a></li>
--   <li><a>ctlCourseId</a></li>
--   <li><a>ctlAccessToken</a></li>
--   <li><a>ctlUploadType</a></li>
--   <li><a>ctlBearerToken</a></li>
--   <li><a>ctlPageToken</a></li>
--   <li><a>ctlPageSize</a></li>
--   <li><a>ctlCallback</a></li>
--   </ul>
coursesTeachersList :: Text -> CoursesTeachersList

-- | Returns a list of teachers of this course that the requester is
--   permitted to view. This method returns the following error codes: *
--   `NOT_FOUND` if the course does not exist. * `PERMISSION_DENIED` for
--   access errors.
--   
--   <i>See:</i> <a>coursesTeachersList</a> smart constructor.
data CoursesTeachersList

-- | V1 error format.
ctlXgafv :: Lens' CoursesTeachersList (Maybe Text)

-- | Upload protocol for media (e.g. "raw", "multipart").
ctlUploadProtocol :: Lens' CoursesTeachersList (Maybe Text)

-- | Pretty-print response.
ctlPp :: Lens' CoursesTeachersList Bool

-- | Identifier of the course. This identifier can be either the
--   Classroom-assigned identifier or an alias.
ctlCourseId :: Lens' CoursesTeachersList Text

-- | OAuth access token.
ctlAccessToken :: Lens' CoursesTeachersList (Maybe Text)

-- | Legacy upload protocol for media (e.g. "media", "multipart").
ctlUploadType :: Lens' CoursesTeachersList (Maybe Text)

-- | OAuth bearer token.
ctlBearerToken :: Lens' CoursesTeachersList (Maybe Text)

-- | nextPageToken value returned from a previous list call, indicating
--   that the subsequent page of results should be returned. The list
--   request must be otherwise identical to the one that resulted in this
--   token.
ctlPageToken :: Lens' CoursesTeachersList (Maybe Text)

-- | Maximum number of items to return. Zero means no maximum. The server
--   may return fewer than the specified number of results.
ctlPageSize :: Lens' CoursesTeachersList (Maybe Int32)

-- | JSONP
ctlCallback :: Lens' CoursesTeachersList (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.Classroom.Courses.Teachers.List.CoursesTeachersList
instance Data.Data.Data Network.Google.Resource.Classroom.Courses.Teachers.List.CoursesTeachersList
instance GHC.Show.Show Network.Google.Resource.Classroom.Courses.Teachers.List.CoursesTeachersList
instance GHC.Classes.Eq Network.Google.Resource.Classroom.Courses.Teachers.List.CoursesTeachersList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Classroom.Courses.Teachers.List.CoursesTeachersList


-- | Updates a course. This method returns the following error codes: *
--   `PERMISSION_DENIED` if the requesting user is not permitted to modify
--   the requested course or for access errors. * `NOT_FOUND` if no course
--   exists with the requested ID. * `FAILED_PRECONDITION` for the
--   following request errors: * CourseNotModifiable
--   
--   <i>See:</i> <a>Google Classroom API Reference</a> for
--   <tt>classroom.courses.update</tt>.
module Network.Google.Resource.Classroom.Courses.Update

-- | A resource alias for <tt>classroom.courses.update</tt> method which
--   the <a>CoursesUpdate</a> request conforms to.
type CoursesUpdateResource = "v1" :> ("courses" :> (Capture "id" Text :> (QueryParam "$.xgafv" Text :> (QueryParam "upload_protocol" Text :> (QueryParam "pp" Bool :> (QueryParam "access_token" Text :> (QueryParam "uploadType" Text :> (QueryParam "bearer_token" Text :> (QueryParam "callback" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Course :> Put '[JSON] Course)))))))))))

-- | Creates a value of <a>CoursesUpdate</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cuXgafv</a></li>
--   <li><a>cuUploadProtocol</a></li>
--   <li><a>cuPp</a></li>
--   <li><a>cuAccessToken</a></li>
--   <li><a>cuUploadType</a></li>
--   <li><a>cuPayload</a></li>
--   <li><a>cuBearerToken</a></li>
--   <li><a>cuId</a></li>
--   <li><a>cuCallback</a></li>
--   </ul>
coursesUpdate :: Course -> Text -> CoursesUpdate

-- | Updates a course. This method returns the following error codes: *
--   `PERMISSION_DENIED` if the requesting user is not permitted to modify
--   the requested course or for access errors. * `NOT_FOUND` if no course
--   exists with the requested ID. * `FAILED_PRECONDITION` for the
--   following request errors: * CourseNotModifiable
--   
--   <i>See:</i> <a>coursesUpdate</a> smart constructor.
data CoursesUpdate

-- | V1 error format.
cuXgafv :: Lens' CoursesUpdate (Maybe Text)

-- | Upload protocol for media (e.g. "raw", "multipart").
cuUploadProtocol :: Lens' CoursesUpdate (Maybe Text)

-- | Pretty-print response.
cuPp :: Lens' CoursesUpdate Bool

-- | OAuth access token.
cuAccessToken :: Lens' CoursesUpdate (Maybe Text)

-- | Legacy upload protocol for media (e.g. "media", "multipart").
cuUploadType :: Lens' CoursesUpdate (Maybe Text)

-- | Multipart request metadata.
cuPayload :: Lens' CoursesUpdate Course

-- | OAuth bearer token.
cuBearerToken :: Lens' CoursesUpdate (Maybe Text)

-- | Identifier of the course to update. This identifier can be either the
--   Classroom-assigned identifier or an alias.
cuId :: Lens' CoursesUpdate Text

-- | JSONP
cuCallback :: Lens' CoursesUpdate (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.Classroom.Courses.Update.CoursesUpdate
instance Data.Data.Data Network.Google.Resource.Classroom.Courses.Update.CoursesUpdate
instance GHC.Show.Show Network.Google.Resource.Classroom.Courses.Update.CoursesUpdate
instance GHC.Classes.Eq Network.Google.Resource.Classroom.Courses.Update.CoursesUpdate
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Classroom.Courses.Update.CoursesUpdate


-- | Accepts an invitation, removing it and adding the invited user to the
--   teachers or students (as appropriate) of the specified course. Only
--   the invited user may accept an invitation. This method returns the
--   following error codes: * `PERMISSION_DENIED` if the requesting user is
--   not permitted to accept the requested invitation or for access errors.
--   * `FAILED_PRECONDITION` for the following request errors: *
--   CourseMemberLimitReached * CourseNotModifiable *
--   CourseTeacherLimitReached * UserGroupsMembershipLimitReached *
--   `NOT_FOUND` if no invitation exists with the requested ID.
--   
--   <i>See:</i> <a>Google Classroom API Reference</a> for
--   <tt>classroom.invitations.accept</tt>.
module Network.Google.Resource.Classroom.Invitations.Accept

-- | A resource alias for <tt>classroom.invitations.accept</tt> method
--   which the <a>InvitationsAccept</a> request conforms to.
type InvitationsAcceptResource = "v1" :> ("invitations" :> (CaptureMode "id" "accept" Text :> (QueryParam "$.xgafv" Text :> (QueryParam "upload_protocol" Text :> (QueryParam "pp" Bool :> (QueryParam "access_token" Text :> (QueryParam "uploadType" Text :> (QueryParam "bearer_token" Text :> (QueryParam "callback" Text :> (QueryParam "alt" AltJSON :> Post '[JSON] Empty))))))))))

-- | Creates a value of <a>InvitationsAccept</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>iaXgafv</a></li>
--   <li><a>iaUploadProtocol</a></li>
--   <li><a>iaPp</a></li>
--   <li><a>iaAccessToken</a></li>
--   <li><a>iaUploadType</a></li>
--   <li><a>iaBearerToken</a></li>
--   <li><a>iaId</a></li>
--   <li><a>iaCallback</a></li>
--   </ul>
invitationsAccept :: Text -> InvitationsAccept

-- | Accepts an invitation, removing it and adding the invited user to the
--   teachers or students (as appropriate) of the specified course. Only
--   the invited user may accept an invitation. This method returns the
--   following error codes: * `PERMISSION_DENIED` if the requesting user is
--   not permitted to accept the requested invitation or for access errors.
--   * `FAILED_PRECONDITION` for the following request errors: *
--   CourseMemberLimitReached * CourseNotModifiable *
--   CourseTeacherLimitReached * UserGroupsMembershipLimitReached *
--   `NOT_FOUND` if no invitation exists with the requested ID.
--   
--   <i>See:</i> <a>invitationsAccept</a> smart constructor.
data InvitationsAccept

-- | V1 error format.
iaXgafv :: Lens' InvitationsAccept (Maybe Text)

-- | Upload protocol for media (e.g. "raw", "multipart").
iaUploadProtocol :: Lens' InvitationsAccept (Maybe Text)

-- | Pretty-print response.
iaPp :: Lens' InvitationsAccept Bool

-- | OAuth access token.
iaAccessToken :: Lens' InvitationsAccept (Maybe Text)

-- | Legacy upload protocol for media (e.g. "media", "multipart").
iaUploadType :: Lens' InvitationsAccept (Maybe Text)

-- | OAuth bearer token.
iaBearerToken :: Lens' InvitationsAccept (Maybe Text)

-- | Identifier of the invitation to accept.
iaId :: Lens' InvitationsAccept Text

-- | JSONP
iaCallback :: Lens' InvitationsAccept (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.Classroom.Invitations.Accept.InvitationsAccept
instance Data.Data.Data Network.Google.Resource.Classroom.Invitations.Accept.InvitationsAccept
instance GHC.Show.Show Network.Google.Resource.Classroom.Invitations.Accept.InvitationsAccept
instance GHC.Classes.Eq Network.Google.Resource.Classroom.Invitations.Accept.InvitationsAccept
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Classroom.Invitations.Accept.InvitationsAccept


-- | Creates an invitation. Only one invitation for a user and course may
--   exist at a time. Delete and re-create an invitation to make changes.
--   This method returns the following error codes: * `PERMISSION_DENIED`
--   if the requesting user is not permitted to create invitations for this
--   course or for access errors. * `NOT_FOUND` if the course or the user
--   does not exist. * `FAILED_PRECONDITION` if the requested user's
--   account is disabled or if the user already has this role or a role
--   with greater permissions. * `ALREADY_EXISTS` if an invitation for the
--   specified user and course already exists.
--   
--   <i>See:</i> <a>Google Classroom API Reference</a> for
--   <tt>classroom.invitations.create</tt>.
module Network.Google.Resource.Classroom.Invitations.Create

-- | A resource alias for <tt>classroom.invitations.create</tt> method
--   which the <a>InvitationsCreate</a> request conforms to.
type InvitationsCreateResource = "v1" :> ("invitations" :> (QueryParam "$.xgafv" Text :> (QueryParam "upload_protocol" Text :> (QueryParam "pp" Bool :> (QueryParam "access_token" Text :> (QueryParam "uploadType" Text :> (QueryParam "bearer_token" Text :> (QueryParam "callback" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] Invitation :> Post '[JSON] Invitation))))))))))

-- | Creates a value of <a>InvitationsCreate</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>icXgafv</a></li>
--   <li><a>icUploadProtocol</a></li>
--   <li><a>icPp</a></li>
--   <li><a>icAccessToken</a></li>
--   <li><a>icUploadType</a></li>
--   <li><a>icPayload</a></li>
--   <li><a>icBearerToken</a></li>
--   <li><a>icCallback</a></li>
--   </ul>
invitationsCreate :: Invitation -> InvitationsCreate

-- | Creates an invitation. Only one invitation for a user and course may
--   exist at a time. Delete and re-create an invitation to make changes.
--   This method returns the following error codes: * `PERMISSION_DENIED`
--   if the requesting user is not permitted to create invitations for this
--   course or for access errors. * `NOT_FOUND` if the course or the user
--   does not exist. * `FAILED_PRECONDITION` if the requested user's
--   account is disabled or if the user already has this role or a role
--   with greater permissions. * `ALREADY_EXISTS` if an invitation for the
--   specified user and course already exists.
--   
--   <i>See:</i> <a>invitationsCreate</a> smart constructor.
data InvitationsCreate

-- | V1 error format.
icXgafv :: Lens' InvitationsCreate (Maybe Text)

-- | Upload protocol for media (e.g. "raw", "multipart").
icUploadProtocol :: Lens' InvitationsCreate (Maybe Text)

-- | Pretty-print response.
icPp :: Lens' InvitationsCreate Bool

-- | OAuth access token.
icAccessToken :: Lens' InvitationsCreate (Maybe Text)

-- | Legacy upload protocol for media (e.g. "media", "multipart").
icUploadType :: Lens' InvitationsCreate (Maybe Text)

-- | Multipart request metadata.
icPayload :: Lens' InvitationsCreate Invitation

-- | OAuth bearer token.
icBearerToken :: Lens' InvitationsCreate (Maybe Text)

-- | JSONP
icCallback :: Lens' InvitationsCreate (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.Classroom.Invitations.Create.InvitationsCreate
instance Data.Data.Data Network.Google.Resource.Classroom.Invitations.Create.InvitationsCreate
instance GHC.Show.Show Network.Google.Resource.Classroom.Invitations.Create.InvitationsCreate
instance GHC.Classes.Eq Network.Google.Resource.Classroom.Invitations.Create.InvitationsCreate
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Classroom.Invitations.Create.InvitationsCreate


-- | Deletes an invitation. This method returns the following error codes:
--   * `PERMISSION_DENIED` if the requesting user is not permitted to
--   delete the requested invitation or for access errors. * `NOT_FOUND` if
--   no invitation exists with the requested ID.
--   
--   <i>See:</i> <a>Google Classroom API Reference</a> for
--   <tt>classroom.invitations.delete</tt>.
module Network.Google.Resource.Classroom.Invitations.Delete

-- | A resource alias for <tt>classroom.invitations.delete</tt> method
--   which the <a>InvitationsDelete</a> request conforms to.
type InvitationsDeleteResource = "v1" :> ("invitations" :> (Capture "id" Text :> (QueryParam "$.xgafv" Text :> (QueryParam "upload_protocol" Text :> (QueryParam "pp" Bool :> (QueryParam "access_token" Text :> (QueryParam "uploadType" Text :> (QueryParam "bearer_token" Text :> (QueryParam "callback" Text :> (QueryParam "alt" AltJSON :> Delete '[JSON] Empty))))))))))

-- | Creates a value of <a>InvitationsDelete</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>idXgafv</a></li>
--   <li><a>idUploadProtocol</a></li>
--   <li><a>idPp</a></li>
--   <li><a>idAccessToken</a></li>
--   <li><a>idUploadType</a></li>
--   <li><a>idBearerToken</a></li>
--   <li><a>idId</a></li>
--   <li><a>idCallback</a></li>
--   </ul>
invitationsDelete :: Text -> InvitationsDelete

-- | Deletes an invitation. This method returns the following error codes:
--   * `PERMISSION_DENIED` if the requesting user is not permitted to
--   delete the requested invitation or for access errors. * `NOT_FOUND` if
--   no invitation exists with the requested ID.
--   
--   <i>See:</i> <a>invitationsDelete</a> smart constructor.
data InvitationsDelete

-- | V1 error format.
idXgafv :: Lens' InvitationsDelete (Maybe Text)

-- | Upload protocol for media (e.g. "raw", "multipart").
idUploadProtocol :: Lens' InvitationsDelete (Maybe Text)

-- | Pretty-print response.
idPp :: Lens' InvitationsDelete Bool

-- | OAuth access token.
idAccessToken :: Lens' InvitationsDelete (Maybe Text)

-- | Legacy upload protocol for media (e.g. "media", "multipart").
idUploadType :: Lens' InvitationsDelete (Maybe Text)

-- | OAuth bearer token.
idBearerToken :: Lens' InvitationsDelete (Maybe Text)

-- | Identifier of the invitation to delete.
idId :: Lens' InvitationsDelete Text

-- | JSONP
idCallback :: Lens' InvitationsDelete (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.Classroom.Invitations.Delete.InvitationsDelete
instance Data.Data.Data Network.Google.Resource.Classroom.Invitations.Delete.InvitationsDelete
instance GHC.Show.Show Network.Google.Resource.Classroom.Invitations.Delete.InvitationsDelete
instance GHC.Classes.Eq Network.Google.Resource.Classroom.Invitations.Delete.InvitationsDelete
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Classroom.Invitations.Delete.InvitationsDelete


-- | Returns an invitation. This method returns the following error codes:
--   * `PERMISSION_DENIED` if the requesting user is not permitted to view
--   the requested invitation or for access errors. * `NOT_FOUND` if no
--   invitation exists with the requested ID.
--   
--   <i>See:</i> <a>Google Classroom API Reference</a> for
--   <tt>classroom.invitations.get</tt>.
module Network.Google.Resource.Classroom.Invitations.Get

-- | A resource alias for <tt>classroom.invitations.get</tt> method which
--   the <a>InvitationsGet</a> request conforms to.
type InvitationsGetResource = "v1" :> ("invitations" :> (Capture "id" Text :> (QueryParam "$.xgafv" Text :> (QueryParam "upload_protocol" Text :> (QueryParam "pp" Bool :> (QueryParam "access_token" Text :> (QueryParam "uploadType" Text :> (QueryParam "bearer_token" Text :> (QueryParam "callback" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] Invitation))))))))))

-- | Creates a value of <a>InvitationsGet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>igXgafv</a></li>
--   <li><a>igUploadProtocol</a></li>
--   <li><a>igPp</a></li>
--   <li><a>igAccessToken</a></li>
--   <li><a>igUploadType</a></li>
--   <li><a>igBearerToken</a></li>
--   <li><a>igId</a></li>
--   <li><a>igCallback</a></li>
--   </ul>
invitationsGet :: Text -> InvitationsGet

-- | Returns an invitation. This method returns the following error codes:
--   * `PERMISSION_DENIED` if the requesting user is not permitted to view
--   the requested invitation or for access errors. * `NOT_FOUND` if no
--   invitation exists with the requested ID.
--   
--   <i>See:</i> <a>invitationsGet</a> smart constructor.
data InvitationsGet

-- | V1 error format.
igXgafv :: Lens' InvitationsGet (Maybe Text)

-- | Upload protocol for media (e.g. "raw", "multipart").
igUploadProtocol :: Lens' InvitationsGet (Maybe Text)

-- | Pretty-print response.
igPp :: Lens' InvitationsGet Bool

-- | OAuth access token.
igAccessToken :: Lens' InvitationsGet (Maybe Text)

-- | Legacy upload protocol for media (e.g. "media", "multipart").
igUploadType :: Lens' InvitationsGet (Maybe Text)

-- | OAuth bearer token.
igBearerToken :: Lens' InvitationsGet (Maybe Text)

-- | Identifier of the invitation to return.
igId :: Lens' InvitationsGet Text

-- | JSONP
igCallback :: Lens' InvitationsGet (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.Classroom.Invitations.Get.InvitationsGet
instance Data.Data.Data Network.Google.Resource.Classroom.Invitations.Get.InvitationsGet
instance GHC.Show.Show Network.Google.Resource.Classroom.Invitations.Get.InvitationsGet
instance GHC.Classes.Eq Network.Google.Resource.Classroom.Invitations.Get.InvitationsGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Classroom.Invitations.Get.InvitationsGet


-- | Returns a list of invitations that the requesting user is permitted to
--   view, restricted to those that match the list request. *Note:* At
--   least one of `user_id` or `course_id` must be supplied. Both fields
--   can be supplied. This method returns the following error codes: *
--   `PERMISSION_DENIED` for access errors.
--   
--   <i>See:</i> <a>Google Classroom API Reference</a> for
--   <tt>classroom.invitations.list</tt>.
module Network.Google.Resource.Classroom.Invitations.List

-- | A resource alias for <tt>classroom.invitations.list</tt> method which
--   the <a>InvitationsList</a> request conforms to.
type InvitationsListResource = "v1" :> ("invitations" :> (QueryParam "$.xgafv" Text :> (QueryParam "upload_protocol" Text :> (QueryParam "pp" Bool :> (QueryParam "courseId" Text :> (QueryParam "access_token" Text :> (QueryParam "uploadType" Text :> (QueryParam "userId" Text :> (QueryParam "bearer_token" Text :> (QueryParam "pageToken" Text :> (QueryParam "pageSize" (Textual Int32) :> (QueryParam "callback" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] ListInvitationsResponse)))))))))))))

-- | Creates a value of <a>InvitationsList</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ilXgafv</a></li>
--   <li><a>ilUploadProtocol</a></li>
--   <li><a>ilPp</a></li>
--   <li><a>ilCourseId</a></li>
--   <li><a>ilAccessToken</a></li>
--   <li><a>ilUploadType</a></li>
--   <li><a>ilUserId</a></li>
--   <li><a>ilBearerToken</a></li>
--   <li><a>ilPageToken</a></li>
--   <li><a>ilPageSize</a></li>
--   <li><a>ilCallback</a></li>
--   </ul>
invitationsList :: InvitationsList

-- | Returns a list of invitations that the requesting user is permitted to
--   view, restricted to those that match the list request. *Note:* At
--   least one of `user_id` or `course_id` must be supplied. Both fields
--   can be supplied. This method returns the following error codes: *
--   `PERMISSION_DENIED` for access errors.
--   
--   <i>See:</i> <a>invitationsList</a> smart constructor.
data InvitationsList

-- | V1 error format.
ilXgafv :: Lens' InvitationsList (Maybe Text)

-- | Upload protocol for media (e.g. "raw", "multipart").
ilUploadProtocol :: Lens' InvitationsList (Maybe Text)

-- | Pretty-print response.
ilPp :: Lens' InvitationsList Bool

-- | Restricts returned invitations to those for a course with the
--   specified identifier.
ilCourseId :: Lens' InvitationsList (Maybe Text)

-- | OAuth access token.
ilAccessToken :: Lens' InvitationsList (Maybe Text)

-- | Legacy upload protocol for media (e.g. "media", "multipart").
ilUploadType :: Lens' InvitationsList (Maybe Text)

-- | Restricts returned invitations to those for a specific user. The
--   identifier can be one of the following: * the numeric identifier for
--   the user * the email address of the user * the string literal `"me"`,
--   indicating the requesting user
ilUserId :: Lens' InvitationsList (Maybe Text)

-- | OAuth bearer token.
ilBearerToken :: Lens' InvitationsList (Maybe Text)

-- | nextPageToken value returned from a previous list call, indicating
--   that the subsequent page of results should be returned. The list
--   request must be otherwise identical to the one that resulted in this
--   token.
ilPageToken :: Lens' InvitationsList (Maybe Text)

-- | Maximum number of items to return. Zero means no maximum. The server
--   may return fewer than the specified number of results.
ilPageSize :: Lens' InvitationsList (Maybe Int32)

-- | JSONP
ilCallback :: Lens' InvitationsList (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.Classroom.Invitations.List.InvitationsList
instance Data.Data.Data Network.Google.Resource.Classroom.Invitations.List.InvitationsList
instance GHC.Show.Show Network.Google.Resource.Classroom.Invitations.List.InvitationsList
instance GHC.Classes.Eq Network.Google.Resource.Classroom.Invitations.List.InvitationsList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Classroom.Invitations.List.InvitationsList


-- | Returns a user profile. This method returns the following error codes:
--   * `PERMISSION_DENIED` if the requesting user is not permitted to
--   access this user profile, if no profile exists with the requested ID,
--   or for access errors.
--   
--   <i>See:</i> <a>Google Classroom API Reference</a> for
--   <tt>classroom.userProfiles.get</tt>.
module Network.Google.Resource.Classroom.UserProFiles.Get

-- | A resource alias for <tt>classroom.userProfiles.get</tt> method which
--   the <a>UserProFilesGet</a> request conforms to.
type UserProFilesGetResource = "v1" :> ("userProfiles" :> (Capture "userId" Text :> (QueryParam "$.xgafv" Text :> (QueryParam "upload_protocol" Text :> (QueryParam "pp" Bool :> (QueryParam "access_token" Text :> (QueryParam "uploadType" Text :> (QueryParam "bearer_token" Text :> (QueryParam "callback" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] UserProFile))))))))))

-- | Creates a value of <a>UserProFilesGet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>upfgXgafv</a></li>
--   <li><a>upfgUploadProtocol</a></li>
--   <li><a>upfgPp</a></li>
--   <li><a>upfgAccessToken</a></li>
--   <li><a>upfgUploadType</a></li>
--   <li><a>upfgUserId</a></li>
--   <li><a>upfgBearerToken</a></li>
--   <li><a>upfgCallback</a></li>
--   </ul>
userProFilesGet :: Text -> UserProFilesGet

-- | Returns a user profile. This method returns the following error codes:
--   * `PERMISSION_DENIED` if the requesting user is not permitted to
--   access this user profile, if no profile exists with the requested ID,
--   or for access errors.
--   
--   <i>See:</i> <a>userProFilesGet</a> smart constructor.
data UserProFilesGet

-- | V1 error format.
upfgXgafv :: Lens' UserProFilesGet (Maybe Text)

-- | Upload protocol for media (e.g. "raw", "multipart").
upfgUploadProtocol :: Lens' UserProFilesGet (Maybe Text)

-- | Pretty-print response.
upfgPp :: Lens' UserProFilesGet Bool

-- | OAuth access token.
upfgAccessToken :: Lens' UserProFilesGet (Maybe Text)

-- | Legacy upload protocol for media (e.g. "media", "multipart").
upfgUploadType :: Lens' UserProFilesGet (Maybe Text)

-- | Identifier of the profile to return. The identifier can be one of the
--   following: * the numeric identifier for the user * the email address
--   of the user * the string literal `"me"`, indicating the requesting
--   user
upfgUserId :: Lens' UserProFilesGet Text

-- | OAuth bearer token.
upfgBearerToken :: Lens' UserProFilesGet (Maybe Text)

-- | JSONP
upfgCallback :: Lens' UserProFilesGet (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.Classroom.UserProFiles.Get.UserProFilesGet
instance Data.Data.Data Network.Google.Resource.Classroom.UserProFiles.Get.UserProFilesGet
instance GHC.Show.Show Network.Google.Resource.Classroom.UserProFiles.Get.UserProFilesGet
instance GHC.Classes.Eq Network.Google.Resource.Classroom.UserProFiles.Get.UserProFilesGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Classroom.UserProFiles.Get.UserProFilesGet


-- | Creates a guardian invitation, and sends an email to the guardian
--   asking them to confirm that they are the student's guardian. Once the
--   guardian accepts the invitation, their `state` will change to
--   `COMPLETED` and they will start receiving guardian notifications. A
--   `Guardian` resource will also be created to represent the active
--   guardian. The request object must have the `student_id` and
--   `invited_email_address` fields set. Failing to set these fields, or
--   setting any other fields in the request, will result in an error. This
--   method returns the following error codes: * `PERMISSION_DENIED` if the
--   current user does not have permission to manage guardians, if the
--   guardian in question has already rejected too many requests for that
--   student, if guardians are not enabled for the domain in question, or
--   for other access errors. * `RESOURCE_EXHAUSTED` if the student or
--   guardian has exceeded the guardian link limit. * `INVALID_ARGUMENT` if
--   the guardian email address is not valid (for example, if it is too
--   long), or if the format of the student ID provided cannot be
--   recognized (it is not an email address, nor a `user_id` from this
--   API). This error will also be returned if read-only fields are set, or
--   if the `state` field is set to to a value other than `PENDING`. *
--   `NOT_FOUND` if the student ID provided is a valid student ID, but
--   Classroom has no record of that student. * `ALREADY_EXISTS` if there
--   is already a pending guardian invitation for the student and
--   `invited_email_address` provided, or if the provided
--   `invited_email_address` matches the Google account of an existing
--   `Guardian` for this user.
--   
--   <i>See:</i> <a>Google Classroom API Reference</a> for
--   <tt>classroom.userProfiles.guardianInvitations.create</tt>.
module Network.Google.Resource.Classroom.UserProFiles.GuardianInvitations.Create

-- | A resource alias for
--   <tt>classroom.userProfiles.guardianInvitations.create</tt> method
--   which the <a>UserProFilesGuardianInvitationsCreate</a> request
--   conforms to.
type UserProFilesGuardianInvitationsCreateResource = "v1" :> ("userProfiles" :> (Capture "studentId" Text :> ("guardianInvitations" :> (QueryParam "$.xgafv" Text :> (QueryParam "upload_protocol" Text :> (QueryParam "pp" Bool :> (QueryParam "access_token" Text :> (QueryParam "uploadType" Text :> (QueryParam "bearer_token" Text :> (QueryParam "callback" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] GuardianInvitation :> Post '[JSON] GuardianInvitation))))))))))))

-- | Creates a value of <a>UserProFilesGuardianInvitationsCreate</a> with
--   the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>upfgicStudentId</a></li>
--   <li><a>upfgicXgafv</a></li>
--   <li><a>upfgicUploadProtocol</a></li>
--   <li><a>upfgicPp</a></li>
--   <li><a>upfgicAccessToken</a></li>
--   <li><a>upfgicUploadType</a></li>
--   <li><a>upfgicPayload</a></li>
--   <li><a>upfgicBearerToken</a></li>
--   <li><a>upfgicCallback</a></li>
--   </ul>
userProFilesGuardianInvitationsCreate :: Text -> GuardianInvitation -> UserProFilesGuardianInvitationsCreate

-- | Creates a guardian invitation, and sends an email to the guardian
--   asking them to confirm that they are the student's guardian. Once the
--   guardian accepts the invitation, their `state` will change to
--   `COMPLETED` and they will start receiving guardian notifications. A
--   `Guardian` resource will also be created to represent the active
--   guardian. The request object must have the `student_id` and
--   `invited_email_address` fields set. Failing to set these fields, or
--   setting any other fields in the request, will result in an error. This
--   method returns the following error codes: * `PERMISSION_DENIED` if the
--   current user does not have permission to manage guardians, if the
--   guardian in question has already rejected too many requests for that
--   student, if guardians are not enabled for the domain in question, or
--   for other access errors. * `RESOURCE_EXHAUSTED` if the student or
--   guardian has exceeded the guardian link limit. * `INVALID_ARGUMENT` if
--   the guardian email address is not valid (for example, if it is too
--   long), or if the format of the student ID provided cannot be
--   recognized (it is not an email address, nor a `user_id` from this
--   API). This error will also be returned if read-only fields are set, or
--   if the `state` field is set to to a value other than `PENDING`. *
--   `NOT_FOUND` if the student ID provided is a valid student ID, but
--   Classroom has no record of that student. * `ALREADY_EXISTS` if there
--   is already a pending guardian invitation for the student and
--   `invited_email_address` provided, or if the provided
--   `invited_email_address` matches the Google account of an existing
--   `Guardian` for this user.
--   
--   <i>See:</i> <a>userProFilesGuardianInvitationsCreate</a> smart
--   constructor.
data UserProFilesGuardianInvitationsCreate

-- | ID of the student (in standard format)
upfgicStudentId :: Lens' UserProFilesGuardianInvitationsCreate Text

-- | V1 error format.
upfgicXgafv :: Lens' UserProFilesGuardianInvitationsCreate (Maybe Text)

-- | Upload protocol for media (e.g. "raw", "multipart").
upfgicUploadProtocol :: Lens' UserProFilesGuardianInvitationsCreate (Maybe Text)

-- | Pretty-print response.
upfgicPp :: Lens' UserProFilesGuardianInvitationsCreate Bool

-- | OAuth access token.
upfgicAccessToken :: Lens' UserProFilesGuardianInvitationsCreate (Maybe Text)

-- | Legacy upload protocol for media (e.g. "media", "multipart").
upfgicUploadType :: Lens' UserProFilesGuardianInvitationsCreate (Maybe Text)

-- | Multipart request metadata.
upfgicPayload :: Lens' UserProFilesGuardianInvitationsCreate GuardianInvitation

-- | OAuth bearer token.
upfgicBearerToken :: Lens' UserProFilesGuardianInvitationsCreate (Maybe Text)

-- | JSONP
upfgicCallback :: Lens' UserProFilesGuardianInvitationsCreate (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.Classroom.UserProFiles.GuardianInvitations.Create.UserProFilesGuardianInvitationsCreate
instance Data.Data.Data Network.Google.Resource.Classroom.UserProFiles.GuardianInvitations.Create.UserProFilesGuardianInvitationsCreate
instance GHC.Show.Show Network.Google.Resource.Classroom.UserProFiles.GuardianInvitations.Create.UserProFilesGuardianInvitationsCreate
instance GHC.Classes.Eq Network.Google.Resource.Classroom.UserProFiles.GuardianInvitations.Create.UserProFilesGuardianInvitationsCreate
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Classroom.UserProFiles.GuardianInvitations.Create.UserProFilesGuardianInvitationsCreate


-- | Returns a specific guardian invitation. This method returns the
--   following error codes: * `PERMISSION_DENIED` if the requesting user is
--   not permitted to view guardian invitations for the student identified
--   by the `student_id`, if guardians are not enabled for the domain in
--   question, or for other access errors. * `INVALID_ARGUMENT` if a
--   `student_id` is specified, but its format cannot be recognized (it is
--   not an email address, nor a `student_id` from the API, nor the literal
--   string `me`). * `NOT_FOUND` if Classroom cannot find any record of the
--   given student or `invitation_id`. May also be returned if the student
--   exists, but the requesting user does not have access to see that
--   student.
--   
--   <i>See:</i> <a>Google Classroom API Reference</a> for
--   <tt>classroom.userProfiles.guardianInvitations.get</tt>.
module Network.Google.Resource.Classroom.UserProFiles.GuardianInvitations.Get

-- | A resource alias for
--   <tt>classroom.userProfiles.guardianInvitations.get</tt> method which
--   the <a>UserProFilesGuardianInvitationsGet</a> request conforms to.
type UserProFilesGuardianInvitationsGetResource = "v1" :> ("userProfiles" :> (Capture "studentId" Text :> ("guardianInvitations" :> (Capture "invitationId" Text :> (QueryParam "$.xgafv" Text :> (QueryParam "upload_protocol" Text :> (QueryParam "pp" Bool :> (QueryParam "access_token" Text :> (QueryParam "uploadType" Text :> (QueryParam "bearer_token" Text :> (QueryParam "callback" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] GuardianInvitation))))))))))))

-- | Creates a value of <a>UserProFilesGuardianInvitationsGet</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>upfgigStudentId</a></li>
--   <li><a>upfgigXgafv</a></li>
--   <li><a>upfgigUploadProtocol</a></li>
--   <li><a>upfgigPp</a></li>
--   <li><a>upfgigAccessToken</a></li>
--   <li><a>upfgigUploadType</a></li>
--   <li><a>upfgigInvitationId</a></li>
--   <li><a>upfgigBearerToken</a></li>
--   <li><a>upfgigCallback</a></li>
--   </ul>
userProFilesGuardianInvitationsGet :: Text -> Text -> UserProFilesGuardianInvitationsGet

-- | Returns a specific guardian invitation. This method returns the
--   following error codes: * `PERMISSION_DENIED` if the requesting user is
--   not permitted to view guardian invitations for the student identified
--   by the `student_id`, if guardians are not enabled for the domain in
--   question, or for other access errors. * `INVALID_ARGUMENT` if a
--   `student_id` is specified, but its format cannot be recognized (it is
--   not an email address, nor a `student_id` from the API, nor the literal
--   string `me`). * `NOT_FOUND` if Classroom cannot find any record of the
--   given student or `invitation_id`. May also be returned if the student
--   exists, but the requesting user does not have access to see that
--   student.
--   
--   <i>See:</i> <a>userProFilesGuardianInvitationsGet</a> smart
--   constructor.
data UserProFilesGuardianInvitationsGet

-- | The ID of the student whose guardian invitation is being requested.
upfgigStudentId :: Lens' UserProFilesGuardianInvitationsGet Text

-- | V1 error format.
upfgigXgafv :: Lens' UserProFilesGuardianInvitationsGet (Maybe Text)

-- | Upload protocol for media (e.g. "raw", "multipart").
upfgigUploadProtocol :: Lens' UserProFilesGuardianInvitationsGet (Maybe Text)

-- | Pretty-print response.
upfgigPp :: Lens' UserProFilesGuardianInvitationsGet Bool

-- | OAuth access token.
upfgigAccessToken :: Lens' UserProFilesGuardianInvitationsGet (Maybe Text)

-- | Legacy upload protocol for media (e.g. "media", "multipart").
upfgigUploadType :: Lens' UserProFilesGuardianInvitationsGet (Maybe Text)

-- | The `id` field of the `GuardianInvitation` being requested.
upfgigInvitationId :: Lens' UserProFilesGuardianInvitationsGet Text

-- | OAuth bearer token.
upfgigBearerToken :: Lens' UserProFilesGuardianInvitationsGet (Maybe Text)

-- | JSONP
upfgigCallback :: Lens' UserProFilesGuardianInvitationsGet (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.Classroom.UserProFiles.GuardianInvitations.Get.UserProFilesGuardianInvitationsGet
instance Data.Data.Data Network.Google.Resource.Classroom.UserProFiles.GuardianInvitations.Get.UserProFilesGuardianInvitationsGet
instance GHC.Show.Show Network.Google.Resource.Classroom.UserProFiles.GuardianInvitations.Get.UserProFilesGuardianInvitationsGet
instance GHC.Classes.Eq Network.Google.Resource.Classroom.UserProFiles.GuardianInvitations.Get.UserProFilesGuardianInvitationsGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Classroom.UserProFiles.GuardianInvitations.Get.UserProFilesGuardianInvitationsGet


-- | Returns a list of guardian invitations that the requesting user is
--   permitted to view, filtered by the parameters provided. This method
--   returns the following error codes: * `PERMISSION_DENIED` if a
--   `student_id` is specified, and the requesting user is not permitted to
--   view guardian invitations for that student, if `"-"` is specified as
--   the `student_id` and the user is not a domain administrator, if
--   guardians are not enabled for the domain in question, or for other
--   access errors. * `INVALID_ARGUMENT` if a `student_id` is specified,
--   but its format cannot be recognized (it is not an email address, nor a
--   `student_id` from the API, nor the literal string `me`). May also be
--   returned if an invalid `page_token` or `state` is provided. *
--   `NOT_FOUND` if a `student_id` is specified, and its format can be
--   recognized, but Classroom has no record of that student.
--   
--   <i>See:</i> <a>Google Classroom API Reference</a> for
--   <tt>classroom.userProfiles.guardianInvitations.list</tt>.
module Network.Google.Resource.Classroom.UserProFiles.GuardianInvitations.List

-- | A resource alias for
--   <tt>classroom.userProfiles.guardianInvitations.list</tt> method which
--   the <a>UserProFilesGuardianInvitationsList</a> request conforms to.
type UserProFilesGuardianInvitationsListResource = "v1" :> ("userProfiles" :> (Capture "studentId" Text :> ("guardianInvitations" :> (QueryParams "states" Text :> (QueryParam "$.xgafv" Text :> (QueryParam "upload_protocol" Text :> (QueryParam "pp" Bool :> (QueryParam "access_token" Text :> (QueryParam "uploadType" Text :> (QueryParam "bearer_token" Text :> (QueryParam "invitedEmailAddress" Text :> (QueryParam "pageToken" Text :> (QueryParam "pageSize" (Textual Int32) :> (QueryParam "callback" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] ListGuardianInvitationsResponse)))))))))))))))

-- | Creates a value of <a>UserProFilesGuardianInvitationsList</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>upfgilStudentId</a></li>
--   <li><a>upfgilStates</a></li>
--   <li><a>upfgilXgafv</a></li>
--   <li><a>upfgilUploadProtocol</a></li>
--   <li><a>upfgilPp</a></li>
--   <li><a>upfgilAccessToken</a></li>
--   <li><a>upfgilUploadType</a></li>
--   <li><a>upfgilBearerToken</a></li>
--   <li><a>upfgilInvitedEmailAddress</a></li>
--   <li><a>upfgilPageToken</a></li>
--   <li><a>upfgilPageSize</a></li>
--   <li><a>upfgilCallback</a></li>
--   </ul>
userProFilesGuardianInvitationsList :: Text -> UserProFilesGuardianInvitationsList

-- | Returns a list of guardian invitations that the requesting user is
--   permitted to view, filtered by the parameters provided. This method
--   returns the following error codes: * `PERMISSION_DENIED` if a
--   `student_id` is specified, and the requesting user is not permitted to
--   view guardian invitations for that student, if `"-"` is specified as
--   the `student_id` and the user is not a domain administrator, if
--   guardians are not enabled for the domain in question, or for other
--   access errors. * `INVALID_ARGUMENT` if a `student_id` is specified,
--   but its format cannot be recognized (it is not an email address, nor a
--   `student_id` from the API, nor the literal string `me`). May also be
--   returned if an invalid `page_token` or `state` is provided. *
--   `NOT_FOUND` if a `student_id` is specified, and its format can be
--   recognized, but Classroom has no record of that student.
--   
--   <i>See:</i> <a>userProFilesGuardianInvitationsList</a> smart
--   constructor.
data UserProFilesGuardianInvitationsList

-- | The ID of the student whose guardian invitations are to be returned.
--   The identifier can be one of the following: * the numeric identifier
--   for the user * the email address of the user * the string literal
--   `"me"`, indicating the requesting user * the string literal `"-"`,
--   indicating that results should be returned for all students that the
--   requesting user is permitted to view guardian invitations.
upfgilStudentId :: Lens' UserProFilesGuardianInvitationsList Text

-- | If specified, only results with the specified `state` values will be
--   returned. Otherwise, results with a `state` of `PENDING` will be
--   returned.
upfgilStates :: Lens' UserProFilesGuardianInvitationsList [Text]

-- | V1 error format.
upfgilXgafv :: Lens' UserProFilesGuardianInvitationsList (Maybe Text)

-- | Upload protocol for media (e.g. "raw", "multipart").
upfgilUploadProtocol :: Lens' UserProFilesGuardianInvitationsList (Maybe Text)

-- | Pretty-print response.
upfgilPp :: Lens' UserProFilesGuardianInvitationsList Bool

-- | OAuth access token.
upfgilAccessToken :: Lens' UserProFilesGuardianInvitationsList (Maybe Text)

-- | Legacy upload protocol for media (e.g. "media", "multipart").
upfgilUploadType :: Lens' UserProFilesGuardianInvitationsList (Maybe Text)

-- | OAuth bearer token.
upfgilBearerToken :: Lens' UserProFilesGuardianInvitationsList (Maybe Text)

-- | If specified, only results with the specified `invited_email_address`
--   will be returned.
upfgilInvitedEmailAddress :: Lens' UserProFilesGuardianInvitationsList (Maybe Text)

-- | nextPageToken value returned from a previous list call, indicating
--   that the subsequent page of results should be returned. The list
--   request must be otherwise identical to the one that resulted in this
--   token.
upfgilPageToken :: Lens' UserProFilesGuardianInvitationsList (Maybe Text)

-- | Maximum number of items to return. Zero or unspecified indicates that
--   the server may assign a maximum. The server may return fewer than the
--   specified number of results.
upfgilPageSize :: Lens' UserProFilesGuardianInvitationsList (Maybe Int32)

-- | JSONP
upfgilCallback :: Lens' UserProFilesGuardianInvitationsList (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.Classroom.UserProFiles.GuardianInvitations.List.UserProFilesGuardianInvitationsList
instance Data.Data.Data Network.Google.Resource.Classroom.UserProFiles.GuardianInvitations.List.UserProFilesGuardianInvitationsList
instance GHC.Show.Show Network.Google.Resource.Classroom.UserProFiles.GuardianInvitations.List.UserProFilesGuardianInvitationsList
instance GHC.Classes.Eq Network.Google.Resource.Classroom.UserProFiles.GuardianInvitations.List.UserProFilesGuardianInvitationsList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Classroom.UserProFiles.GuardianInvitations.List.UserProFilesGuardianInvitationsList


-- | Modifies a guardian invitation. Currently, the only valid modification
--   is to change the `state` from `PENDING` to `COMPLETE`. This has the
--   effect of withdrawing the invitation. This method returns the
--   following error codes: * `PERMISSION_DENIED` if the current user does
--   not have permission to manage guardians, if guardians are not enabled
--   for the domain in question or for other access errors. *
--   `FAILED_PRECONDITION` if the guardian link is not in the `PENDING`
--   state. * `INVALID_ARGUMENT` if the format of the student ID provided
--   cannot be recognized (it is not an email address, nor a `user_id` from
--   this API), or if the passed `GuardianInvitation` has a `state` other
--   than `COMPLETE`, or if it modifies fields other than `state`. *
--   `NOT_FOUND` if the student ID provided is a valid student ID, but
--   Classroom has no record of that student, or if the `id` field does not
--   refer to a guardian invitation known to Classroom.
--   
--   <i>See:</i> <a>Google Classroom API Reference</a> for
--   <tt>classroom.userProfiles.guardianInvitations.patch</tt>.
module Network.Google.Resource.Classroom.UserProFiles.GuardianInvitations.Patch

-- | A resource alias for
--   <tt>classroom.userProfiles.guardianInvitations.patch</tt> method which
--   the <a>UserProFilesGuardianInvitationsPatch</a> request conforms to.
type UserProFilesGuardianInvitationsPatchResource = "v1" :> ("userProfiles" :> (Capture "studentId" Text :> ("guardianInvitations" :> (Capture "invitationId" Text :> (QueryParam "$.xgafv" Text :> (QueryParam "upload_protocol" Text :> (QueryParam "updateMask" Text :> (QueryParam "pp" Bool :> (QueryParam "access_token" Text :> (QueryParam "uploadType" Text :> (QueryParam "bearer_token" Text :> (QueryParam "callback" Text :> (QueryParam "alt" AltJSON :> (ReqBody '[JSON] GuardianInvitation :> Patch '[JSON] GuardianInvitation))))))))))))))

-- | Creates a value of <a>UserProFilesGuardianInvitationsPatch</a> with
--   the minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>upfgipStudentId</a></li>
--   <li><a>upfgipXgafv</a></li>
--   <li><a>upfgipUploadProtocol</a></li>
--   <li><a>upfgipUpdateMask</a></li>
--   <li><a>upfgipPp</a></li>
--   <li><a>upfgipAccessToken</a></li>
--   <li><a>upfgipUploadType</a></li>
--   <li><a>upfgipPayload</a></li>
--   <li><a>upfgipInvitationId</a></li>
--   <li><a>upfgipBearerToken</a></li>
--   <li><a>upfgipCallback</a></li>
--   </ul>
userProFilesGuardianInvitationsPatch :: Text -> GuardianInvitation -> Text -> UserProFilesGuardianInvitationsPatch

-- | Modifies a guardian invitation. Currently, the only valid modification
--   is to change the `state` from `PENDING` to `COMPLETE`. This has the
--   effect of withdrawing the invitation. This method returns the
--   following error codes: * `PERMISSION_DENIED` if the current user does
--   not have permission to manage guardians, if guardians are not enabled
--   for the domain in question or for other access errors. *
--   `FAILED_PRECONDITION` if the guardian link is not in the `PENDING`
--   state. * `INVALID_ARGUMENT` if the format of the student ID provided
--   cannot be recognized (it is not an email address, nor a `user_id` from
--   this API), or if the passed `GuardianInvitation` has a `state` other
--   than `COMPLETE`, or if it modifies fields other than `state`. *
--   `NOT_FOUND` if the student ID provided is a valid student ID, but
--   Classroom has no record of that student, or if the `id` field does not
--   refer to a guardian invitation known to Classroom.
--   
--   <i>See:</i> <a>userProFilesGuardianInvitationsPatch</a> smart
--   constructor.
data UserProFilesGuardianInvitationsPatch

-- | The ID of the student whose guardian invitation is to be modified.
upfgipStudentId :: Lens' UserProFilesGuardianInvitationsPatch Text

-- | V1 error format.
upfgipXgafv :: Lens' UserProFilesGuardianInvitationsPatch (Maybe Text)

-- | Upload protocol for media (e.g. "raw", "multipart").
upfgipUploadProtocol :: Lens' UserProFilesGuardianInvitationsPatch (Maybe Text)

-- | Mask that identifies which fields on the course to update. This field
--   is required to do an update. The update will fail if invalid fields
--   are specified. The following fields are valid: * `state` When set in a
--   query parameter, this field should be specified as `updateMask=,,...`
upfgipUpdateMask :: Lens' UserProFilesGuardianInvitationsPatch (Maybe Text)

-- | Pretty-print response.
upfgipPp :: Lens' UserProFilesGuardianInvitationsPatch Bool

-- | OAuth access token.
upfgipAccessToken :: Lens' UserProFilesGuardianInvitationsPatch (Maybe Text)

-- | Legacy upload protocol for media (e.g. "media", "multipart").
upfgipUploadType :: Lens' UserProFilesGuardianInvitationsPatch (Maybe Text)

-- | Multipart request metadata.
upfgipPayload :: Lens' UserProFilesGuardianInvitationsPatch GuardianInvitation

-- | The `id` field of the `GuardianInvitation` to be modified.
upfgipInvitationId :: Lens' UserProFilesGuardianInvitationsPatch Text

-- | OAuth bearer token.
upfgipBearerToken :: Lens' UserProFilesGuardianInvitationsPatch (Maybe Text)

-- | JSONP
upfgipCallback :: Lens' UserProFilesGuardianInvitationsPatch (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.Classroom.UserProFiles.GuardianInvitations.Patch.UserProFilesGuardianInvitationsPatch
instance Data.Data.Data Network.Google.Resource.Classroom.UserProFiles.GuardianInvitations.Patch.UserProFilesGuardianInvitationsPatch
instance GHC.Show.Show Network.Google.Resource.Classroom.UserProFiles.GuardianInvitations.Patch.UserProFilesGuardianInvitationsPatch
instance GHC.Classes.Eq Network.Google.Resource.Classroom.UserProFiles.GuardianInvitations.Patch.UserProFilesGuardianInvitationsPatch
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Classroom.UserProFiles.GuardianInvitations.Patch.UserProFilesGuardianInvitationsPatch


-- | Deletes a guardian. The guardian will no longer receive guardian
--   notifications and the guardian will no longer be accessible via the
--   API. This method returns the following error codes: *
--   `PERMISSION_DENIED` if no user that matches the provided `student_id`
--   is visible to the requesting user, if the requesting user is not
--   permitted to manage guardians for the student identified by the
--   `student_id`, if guardians are not enabled for the domain in question,
--   or for other access errors. * `INVALID_ARGUMENT` if a `student_id` is
--   specified, but its format cannot be recognized (it is not an email
--   address, nor a `student_id` from the API). * `NOT_FOUND` if the
--   requesting user is permitted to modify guardians for the requested
--   `student_id`, but no `Guardian` record exists for that student with
--   the provided `guardian_id`.
--   
--   <i>See:</i> <a>Google Classroom API Reference</a> for
--   <tt>classroom.userProfiles.guardians.delete</tt>.
module Network.Google.Resource.Classroom.UserProFiles.Guardians.Delete

-- | A resource alias for <tt>classroom.userProfiles.guardians.delete</tt>
--   method which the <a>UserProFilesGuardiansDelete</a> request conforms
--   to.
type UserProFilesGuardiansDeleteResource = "v1" :> ("userProfiles" :> (Capture "studentId" Text :> ("guardians" :> (Capture "guardianId" Text :> (QueryParam "$.xgafv" Text :> (QueryParam "upload_protocol" Text :> (QueryParam "pp" Bool :> (QueryParam "access_token" Text :> (QueryParam "uploadType" Text :> (QueryParam "bearer_token" Text :> (QueryParam "callback" Text :> (QueryParam "alt" AltJSON :> Delete '[JSON] Empty))))))))))))

-- | Creates a value of <a>UserProFilesGuardiansDelete</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>upfgdStudentId</a></li>
--   <li><a>upfgdXgafv</a></li>
--   <li><a>upfgdUploadProtocol</a></li>
--   <li><a>upfgdPp</a></li>
--   <li><a>upfgdAccessToken</a></li>
--   <li><a>upfgdUploadType</a></li>
--   <li><a>upfgdGuardianId</a></li>
--   <li><a>upfgdBearerToken</a></li>
--   <li><a>upfgdCallback</a></li>
--   </ul>
userProFilesGuardiansDelete :: Text -> Text -> UserProFilesGuardiansDelete

-- | Deletes a guardian. The guardian will no longer receive guardian
--   notifications and the guardian will no longer be accessible via the
--   API. This method returns the following error codes: *
--   `PERMISSION_DENIED` if no user that matches the provided `student_id`
--   is visible to the requesting user, if the requesting user is not
--   permitted to manage guardians for the student identified by the
--   `student_id`, if guardians are not enabled for the domain in question,
--   or for other access errors. * `INVALID_ARGUMENT` if a `student_id` is
--   specified, but its format cannot be recognized (it is not an email
--   address, nor a `student_id` from the API). * `NOT_FOUND` if the
--   requesting user is permitted to modify guardians for the requested
--   `student_id`, but no `Guardian` record exists for that student with
--   the provided `guardian_id`.
--   
--   <i>See:</i> <a>userProFilesGuardiansDelete</a> smart constructor.
data UserProFilesGuardiansDelete

-- | The student whose guardian is to be deleted. One of the following: *
--   the numeric identifier for the user * the email address of the user *
--   the string literal `"me"`, indicating the requesting user
upfgdStudentId :: Lens' UserProFilesGuardiansDelete Text

-- | V1 error format.
upfgdXgafv :: Lens' UserProFilesGuardiansDelete (Maybe Text)

-- | Upload protocol for media (e.g. "raw", "multipart").
upfgdUploadProtocol :: Lens' UserProFilesGuardiansDelete (Maybe Text)

-- | Pretty-print response.
upfgdPp :: Lens' UserProFilesGuardiansDelete Bool

-- | OAuth access token.
upfgdAccessToken :: Lens' UserProFilesGuardiansDelete (Maybe Text)

-- | Legacy upload protocol for media (e.g. "media", "multipart").
upfgdUploadType :: Lens' UserProFilesGuardiansDelete (Maybe Text)

-- | The `id` field from a `Guardian`.
upfgdGuardianId :: Lens' UserProFilesGuardiansDelete Text

-- | OAuth bearer token.
upfgdBearerToken :: Lens' UserProFilesGuardiansDelete (Maybe Text)

-- | JSONP
upfgdCallback :: Lens' UserProFilesGuardiansDelete (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.Classroom.UserProFiles.Guardians.Delete.UserProFilesGuardiansDelete
instance Data.Data.Data Network.Google.Resource.Classroom.UserProFiles.Guardians.Delete.UserProFilesGuardiansDelete
instance GHC.Show.Show Network.Google.Resource.Classroom.UserProFiles.Guardians.Delete.UserProFilesGuardiansDelete
instance GHC.Classes.Eq Network.Google.Resource.Classroom.UserProFiles.Guardians.Delete.UserProFilesGuardiansDelete
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Classroom.UserProFiles.Guardians.Delete.UserProFilesGuardiansDelete


-- | Returns a specific guardian. This method returns the following error
--   codes: * `PERMISSION_DENIED` if no user that matches the provided
--   `student_id` is visible to the requesting user, if the requesting user
--   is not permitted to view guardian information for the student
--   identified by the `student_id`, if guardians are not enabled for the
--   domain in question, or for other access errors. * `INVALID_ARGUMENT`
--   if a `student_id` is specified, but its format cannot be recognized
--   (it is not an email address, nor a `student_id` from the API, nor the
--   literal string `me`). * `NOT_FOUND` if the requesting user is
--   permitted to view guardians for the requested `student_id`, but no
--   `Guardian` record exists for that student that matches the provided
--   `guardian_id`.
--   
--   <i>See:</i> <a>Google Classroom API Reference</a> for
--   <tt>classroom.userProfiles.guardians.get</tt>.
module Network.Google.Resource.Classroom.UserProFiles.Guardians.Get

-- | A resource alias for <tt>classroom.userProfiles.guardians.get</tt>
--   method which the <a>UserProFilesGuardiansGet</a> request conforms to.
type UserProFilesGuardiansGetResource = "v1" :> ("userProfiles" :> (Capture "studentId" Text :> ("guardians" :> (Capture "guardianId" Text :> (QueryParam "$.xgafv" Text :> (QueryParam "upload_protocol" Text :> (QueryParam "pp" Bool :> (QueryParam "access_token" Text :> (QueryParam "uploadType" Text :> (QueryParam "bearer_token" Text :> (QueryParam "callback" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] Guardian))))))))))))

-- | Creates a value of <a>UserProFilesGuardiansGet</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>upfggStudentId</a></li>
--   <li><a>upfggXgafv</a></li>
--   <li><a>upfggUploadProtocol</a></li>
--   <li><a>upfggPp</a></li>
--   <li><a>upfggAccessToken</a></li>
--   <li><a>upfggUploadType</a></li>
--   <li><a>upfggGuardianId</a></li>
--   <li><a>upfggBearerToken</a></li>
--   <li><a>upfggCallback</a></li>
--   </ul>
userProFilesGuardiansGet :: Text -> Text -> UserProFilesGuardiansGet

-- | Returns a specific guardian. This method returns the following error
--   codes: * `PERMISSION_DENIED` if no user that matches the provided
--   `student_id` is visible to the requesting user, if the requesting user
--   is not permitted to view guardian information for the student
--   identified by the `student_id`, if guardians are not enabled for the
--   domain in question, or for other access errors. * `INVALID_ARGUMENT`
--   if a `student_id` is specified, but its format cannot be recognized
--   (it is not an email address, nor a `student_id` from the API, nor the
--   literal string `me`). * `NOT_FOUND` if the requesting user is
--   permitted to view guardians for the requested `student_id`, but no
--   `Guardian` record exists for that student that matches the provided
--   `guardian_id`.
--   
--   <i>See:</i> <a>userProFilesGuardiansGet</a> smart constructor.
data UserProFilesGuardiansGet

-- | The student whose guardian is being requested. One of the following: *
--   the numeric identifier for the user * the email address of the user *
--   the string literal `"me"`, indicating the requesting user
upfggStudentId :: Lens' UserProFilesGuardiansGet Text

-- | V1 error format.
upfggXgafv :: Lens' UserProFilesGuardiansGet (Maybe Text)

-- | Upload protocol for media (e.g. "raw", "multipart").
upfggUploadProtocol :: Lens' UserProFilesGuardiansGet (Maybe Text)

-- | Pretty-print response.
upfggPp :: Lens' UserProFilesGuardiansGet Bool

-- | OAuth access token.
upfggAccessToken :: Lens' UserProFilesGuardiansGet (Maybe Text)

-- | Legacy upload protocol for media (e.g. "media", "multipart").
upfggUploadType :: Lens' UserProFilesGuardiansGet (Maybe Text)

-- | The `id` field from a `Guardian`.
upfggGuardianId :: Lens' UserProFilesGuardiansGet Text

-- | OAuth bearer token.
upfggBearerToken :: Lens' UserProFilesGuardiansGet (Maybe Text)

-- | JSONP
upfggCallback :: Lens' UserProFilesGuardiansGet (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.Classroom.UserProFiles.Guardians.Get.UserProFilesGuardiansGet
instance Data.Data.Data Network.Google.Resource.Classroom.UserProFiles.Guardians.Get.UserProFilesGuardiansGet
instance GHC.Show.Show Network.Google.Resource.Classroom.UserProFiles.Guardians.Get.UserProFilesGuardiansGet
instance GHC.Classes.Eq Network.Google.Resource.Classroom.UserProFiles.Guardians.Get.UserProFilesGuardiansGet
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Classroom.UserProFiles.Guardians.Get.UserProFilesGuardiansGet


-- | Returns a list of guardians that the requesting user is permitted to
--   view, restricted to those that match the request. To list guardians
--   for any student that the requesting user may view guardians for, use
--   the literal character `-` for the student ID. This method returns the
--   following error codes: * `PERMISSION_DENIED` if a `student_id` is
--   specified, and the requesting user is not permitted to view guardian
--   information for that student, if `"-"` is specified as the
--   `student_id` and the user is not a domain administrator, if guardians
--   are not enabled for the domain in question, if the
--   `invited_email_address` filter is set by a user who is not a domain
--   administrator, or for other access errors. * `INVALID_ARGUMENT` if a
--   `student_id` is specified, but its format cannot be recognized (it is
--   not an email address, nor a `student_id` from the API, nor the literal
--   string `me`). May also be returned if an invalid `page_token` is
--   provided. * `NOT_FOUND` if a `student_id` is specified, and its format
--   can be recognized, but Classroom has no record of that student.
--   
--   <i>See:</i> <a>Google Classroom API Reference</a> for
--   <tt>classroom.userProfiles.guardians.list</tt>.
module Network.Google.Resource.Classroom.UserProFiles.Guardians.List

-- | A resource alias for <tt>classroom.userProfiles.guardians.list</tt>
--   method which the <a>UserProFilesGuardiansList</a> request conforms to.
type UserProFilesGuardiansListResource = "v1" :> ("userProfiles" :> (Capture "studentId" Text :> ("guardians" :> (QueryParam "$.xgafv" Text :> (QueryParam "upload_protocol" Text :> (QueryParam "pp" Bool :> (QueryParam "access_token" Text :> (QueryParam "uploadType" Text :> (QueryParam "bearer_token" Text :> (QueryParam "invitedEmailAddress" Text :> (QueryParam "pageToken" Text :> (QueryParam "pageSize" (Textual Int32) :> (QueryParam "callback" Text :> (QueryParam "alt" AltJSON :> Get '[JSON] ListGuardiansResponse))))))))))))))

-- | Creates a value of <a>UserProFilesGuardiansList</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>upfglStudentId</a></li>
--   <li><a>upfglXgafv</a></li>
--   <li><a>upfglUploadProtocol</a></li>
--   <li><a>upfglPp</a></li>
--   <li><a>upfglAccessToken</a></li>
--   <li><a>upfglUploadType</a></li>
--   <li><a>upfglBearerToken</a></li>
--   <li><a>upfglInvitedEmailAddress</a></li>
--   <li><a>upfglPageToken</a></li>
--   <li><a>upfglPageSize</a></li>
--   <li><a>upfglCallback</a></li>
--   </ul>
userProFilesGuardiansList :: Text -> UserProFilesGuardiansList

-- | Returns a list of guardians that the requesting user is permitted to
--   view, restricted to those that match the request. To list guardians
--   for any student that the requesting user may view guardians for, use
--   the literal character `-` for the student ID. This method returns the
--   following error codes: * `PERMISSION_DENIED` if a `student_id` is
--   specified, and the requesting user is not permitted to view guardian
--   information for that student, if `"-"` is specified as the
--   `student_id` and the user is not a domain administrator, if guardians
--   are not enabled for the domain in question, if the
--   `invited_email_address` filter is set by a user who is not a domain
--   administrator, or for other access errors. * `INVALID_ARGUMENT` if a
--   `student_id` is specified, but its format cannot be recognized (it is
--   not an email address, nor a `student_id` from the API, nor the literal
--   string `me`). May also be returned if an invalid `page_token` is
--   provided. * `NOT_FOUND` if a `student_id` is specified, and its format
--   can be recognized, but Classroom has no record of that student.
--   
--   <i>See:</i> <a>userProFilesGuardiansList</a> smart constructor.
data UserProFilesGuardiansList

-- | Filter results by the student who the guardian is linked to. The
--   identifier can be one of the following: * the numeric identifier for
--   the user * the email address of the user * the string literal `"me"`,
--   indicating the requesting user * the string literal `"-"`, indicating
--   that results should be returned for all students that the requesting
--   user has access to view.
upfglStudentId :: Lens' UserProFilesGuardiansList Text

-- | V1 error format.
upfglXgafv :: Lens' UserProFilesGuardiansList (Maybe Text)

-- | Upload protocol for media (e.g. "raw", "multipart").
upfglUploadProtocol :: Lens' UserProFilesGuardiansList (Maybe Text)

-- | Pretty-print response.
upfglPp :: Lens' UserProFilesGuardiansList Bool

-- | OAuth access token.
upfglAccessToken :: Lens' UserProFilesGuardiansList (Maybe Text)

-- | Legacy upload protocol for media (e.g. "media", "multipart").
upfglUploadType :: Lens' UserProFilesGuardiansList (Maybe Text)

-- | OAuth bearer token.
upfglBearerToken :: Lens' UserProFilesGuardiansList (Maybe Text)

-- | Filter results by the email address that the original invitation was
--   sent to, resulting in this guardian link. This filter can only be used
--   by domain administrators.
upfglInvitedEmailAddress :: Lens' UserProFilesGuardiansList (Maybe Text)

-- | nextPageToken value returned from a previous list call, indicating
--   that the subsequent page of results should be returned. The list
--   request must be otherwise identical to the one that resulted in this
--   token.
upfglPageToken :: Lens' UserProFilesGuardiansList (Maybe Text)

-- | Maximum number of items to return. Zero or unspecified indicates that
--   the server may assign a maximum. The server may return fewer than the
--   specified number of results.
upfglPageSize :: Lens' UserProFilesGuardiansList (Maybe Int32)

-- | JSONP
upfglCallback :: Lens' UserProFilesGuardiansList (Maybe Text)
instance GHC.Generics.Generic Network.Google.Resource.Classroom.UserProFiles.Guardians.List.UserProFilesGuardiansList
instance Data.Data.Data Network.Google.Resource.Classroom.UserProFiles.Guardians.List.UserProFilesGuardiansList
instance GHC.Show.Show Network.Google.Resource.Classroom.UserProFiles.Guardians.List.UserProFilesGuardiansList
instance GHC.Classes.Eq Network.Google.Resource.Classroom.UserProFiles.Guardians.List.UserProFilesGuardiansList
instance Network.Google.Types.GoogleRequest Network.Google.Resource.Classroom.UserProFiles.Guardians.List.UserProFilesGuardiansList


-- | Manages classes, rosters, and invitations in Google Classroom.
--   
--   <i>See:</i> <a>Google Classroom API Reference</a>
module Network.Google.Classroom

-- | Default request referring to version <tt>v1</tt> of the Google
--   Classroom API. This contains the host and root path used as a starting
--   point for constructing service requests.
classroomService :: ServiceConfig

-- | View your Google Classroom class rosters
classroomRostersReadOnlyScope :: Proxy '["https://www.googleapis.com/auth/classroom.rosters.readonly"]

-- | Manage your Google Classroom classes
classroomCoursesScope :: Proxy '["https://www.googleapis.com/auth/classroom.courses"]

-- | View course work and grades for students in the Google Classroom
--   classes you teach or administer
classroomCourseworkStudentsReadOnlyScope :: Proxy '["https://www.googleapis.com/auth/classroom.coursework.students.readonly"]

-- | View the email addresses of people in your classes
classroomProFileEmailsScope :: Proxy '["https://www.googleapis.com/auth/classroom.profile.emails"]

-- | View the profile photos of people in your classes
classroomProFilePhotosScope :: Proxy '["https://www.googleapis.com/auth/classroom.profile.photos"]

-- | Manage your course work and view your grades in Google Classroom
classroomCourseworkMeScope :: Proxy '["https://www.googleapis.com/auth/classroom.coursework.me"]

-- | View instructions for teacher-assigned work in your Google Classroom
--   classes
classroomCourseWorkReadOnlyScope :: Proxy '["https://www.googleapis.com/auth/classroom.course-work.readonly"]

-- | View course work and grades for students in the Google Classroom
--   classes you teach or administer
classroomStudentSubmissionsStudentsReadOnlyScope :: Proxy '["https://www.googleapis.com/auth/classroom.student-submissions.students.readonly"]

-- | Manage your Google Classroom class rosters
classroomRostersScope :: Proxy '["https://www.googleapis.com/auth/classroom.rosters"]

-- | View your Google Classroom classes
classroomCoursesReadOnlyScope :: Proxy '["https://www.googleapis.com/auth/classroom.courses.readonly"]

-- | Manage course work and grades for students in the Google Classroom
--   classes you teach and view the course work and grades for classes you
--   administer
classroomCourseworkStudentsScope :: Proxy '["https://www.googleapis.com/auth/classroom.coursework.students"]

-- | View your course work and grades in Google Classroom
classroomCourseworkMeReadOnlyScope :: Proxy '["https://www.googleapis.com/auth/classroom.coursework.me.readonly"]

-- | View your course work and grades in Google Classroom
classroomStudentSubmissionsMeReadOnlyScope :: Proxy '["https://www.googleapis.com/auth/classroom.student-submissions.me.readonly"]

-- | Represents the entirety of the methods and resources available for the
--   Google Classroom API service.
type ClassroomAPI = InvitationsListResource :<|> (InvitationsAcceptResource :<|> (InvitationsGetResource :<|> (InvitationsCreateResource :<|> (InvitationsDeleteResource :<|> (CoursesCourseWorkStudentSubmissionsReturnResource :<|> (CoursesCourseWorkStudentSubmissionsListResource :<|> (CoursesCourseWorkStudentSubmissionsReclaimResource :<|> (CoursesCourseWorkStudentSubmissionsPatchResource :<|> (CoursesCourseWorkStudentSubmissionsGetResource :<|> (CoursesCourseWorkStudentSubmissionsTurnInResource :<|> (CoursesCourseWorkStudentSubmissionsModifyAttachmentsResource :<|> (CoursesCourseWorkListResource :<|> (CoursesCourseWorkPatchResource :<|> (CoursesCourseWorkGetResource :<|> (CoursesCourseWorkCreateResource :<|> (CoursesCourseWorkDeleteResource :<|> (CoursesTeachersListResource :<|> (CoursesTeachersGetResource :<|> (CoursesTeachersCreateResource :<|> (CoursesTeachersDeleteResource :<|> (CoursesAliasesListResource :<|> (CoursesAliasesCreateResource :<|> (CoursesAliasesDeleteResource :<|> (CoursesStudentsListResource :<|> (CoursesStudentsGetResource :<|> (CoursesStudentsCreateResource :<|> (CoursesStudentsDeleteResource :<|> (CoursesListResource :<|> (CoursesPatchResource :<|> (CoursesGetResource :<|> (CoursesCreateResource :<|> (CoursesDeleteResource :<|> (CoursesUpdateResource :<|> (UserProFilesGuardiansListResource :<|> (UserProFilesGuardiansGetResource :<|> (UserProFilesGuardiansDeleteResource :<|> (UserProFilesGuardianInvitationsListResource :<|> (UserProFilesGuardianInvitationsPatchResource :<|> (UserProFilesGuardianInvitationsGetResource :<|> (UserProFilesGuardianInvitationsCreateResource :<|> UserProFilesGetResource))))))))))))))))))))))))))))))))))))))))

-- | Response when listing course aliases.
--   
--   <i>See:</i> <a>listCourseAliasesResponse</a> smart constructor.
data ListCourseAliasesResponse

-- | Creates a value of <a>ListCourseAliasesResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lcarNextPageToken</a></li>
--   <li><a>lcarAliases</a></li>
--   </ul>
listCourseAliasesResponse :: ListCourseAliasesResponse

-- | Token identifying the next page of results to return. If empty, no
--   further results are available.
lcarNextPageToken :: Lens' ListCourseAliasesResponse (Maybe Text)

-- | The course aliases.
lcarAliases :: Lens' ListCourseAliasesResponse [CourseAlias]

-- | Course work created by a teacher for students of the course.
--   
--   <i>See:</i> <a>courseWork</a> smart constructor.
data CourseWork

-- | Creates a value of <a>CourseWork</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cwCreationTime</a></li>
--   <li><a>cwState</a></li>
--   <li><a>cwMaterials</a></li>
--   <li><a>cwCourseId</a></li>
--   <li><a>cwMaxPoints</a></li>
--   <li><a>cwWorkType</a></li>
--   <li><a>cwDueTime</a></li>
--   <li><a>cwAssociatedWithDeveloper</a></li>
--   <li><a>cwUpdateTime</a></li>
--   <li><a>cwMultipleChoiceQuestion</a></li>
--   <li><a>cwId</a></li>
--   <li><a>cwSubmissionModificationMode</a></li>
--   <li><a>cwDueDate</a></li>
--   <li><a>cwTitle</a></li>
--   <li><a>cwAlternateLink</a></li>
--   <li><a>cwAssignment</a></li>
--   <li><a>cwDescription</a></li>
--   </ul>
courseWork :: CourseWork

-- | Timestamp when this course work was created. Read-only.
cwCreationTime :: Lens' CourseWork (Maybe Text)

-- | Status of this course work. If unspecified, the default state is
--   `DRAFT`.
cwState :: Lens' CourseWork (Maybe Text)

-- | Additional materials. CourseWork must have no more than 20 material
--   items.
cwMaterials :: Lens' CourseWork [Material]

-- | Identifier of the course. Read-only.
cwCourseId :: Lens' CourseWork (Maybe Text)

-- | Maximum grade for this course work. If zero or unspecified, this
--   assignment is considered ungraded. This must be a non-negative integer
--   value.
cwMaxPoints :: Lens' CourseWork (Maybe Double)

-- | Type of this course work. The type is set when the course work is
--   created and cannot be changed.
cwWorkType :: Lens' CourseWork (Maybe Text)

-- | Optional time of day, in UTC, that submissions for this this course
--   work are due. This must be specified if `due_date` is specified.
cwDueTime :: Lens' CourseWork (Maybe TimeOfDay')

-- | Whether this course work item is associated with the Developer Console
--   project making the request. See google.classroom.Work.CreateCourseWork
--   for more details. Read-only.
cwAssociatedWithDeveloper :: Lens' CourseWork (Maybe Bool)

-- | Timestamp of the most recent change to this course work. Read-only.
cwUpdateTime :: Lens' CourseWork (Maybe Text)

-- | Multiple choice question details. For read operations, this field is
--   populated only when `work_type` is `MULTIPLE_CHOICE_QUESTION`. For
--   write operations, this field must be specified when creating course
--   work with a `work_type` of `MULTIPLE_CHOICE_QUESTION`, and it must not
--   be set otherwise.
cwMultipleChoiceQuestion :: Lens' CourseWork (Maybe MultipleChoiceQuestion)

-- | Classroom-assigned identifier of this course work, unique per course.
--   Read-only.
cwId :: Lens' CourseWork (Maybe Text)

-- | Setting to determine when students are allowed to modify submissions.
--   If unspecified, the default value is `MODIFIABLE_UNTIL_TURNED_IN`.
cwSubmissionModificationMode :: Lens' CourseWork (Maybe Text)

-- | Optional date, in UTC, that submissions for this this course work are
--   due. This must be specified if `due_time` is specified.
cwDueDate :: Lens' CourseWork (Maybe Date)

-- | Title of this course work. The title must be a valid UTF-8 string
--   containing between 1 and 3000 characters.
cwTitle :: Lens' CourseWork (Maybe Text)

-- | Absolute link to this course work in the Classroom web UI. This is
--   only populated if `state` is `PUBLISHED`. Read-only.
cwAlternateLink :: Lens' CourseWork (Maybe Text)

-- | Assignment details. This is populated only when `work_type` is
--   `ASSIGNMENT`. Read-only.
cwAssignment :: Lens' CourseWork (Maybe Assignment)

-- | Optional description of this course work. If set, the description must
--   be a valid UTF-8 string containing no more than 30,000 characters.
cwDescription :: Lens' CourseWork (Maybe Text)

-- | Representation of a Google Drive file.
--   
--   <i>See:</i> <a>driveFile</a> smart constructor.
data DriveFile

-- | Creates a value of <a>DriveFile</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dfThumbnailURL</a></li>
--   <li><a>dfId</a></li>
--   <li><a>dfTitle</a></li>
--   <li><a>dfAlternateLink</a></li>
--   </ul>
driveFile :: DriveFile

-- | URL of a thumbnail image of the Drive item. Read-only.
dfThumbnailURL :: Lens' DriveFile (Maybe Text)

-- | Drive API resource ID.
dfId :: Lens' DriveFile (Maybe Text)

-- | Title of the Drive item. Read-only.
dfTitle :: Lens' DriveFile (Maybe Text)

-- | URL that can be used to access the Drive item. Read-only.
dfAlternateLink :: Lens' DriveFile (Maybe Text)

-- | An invitation to become the guardian of a specified user, sent to a
--   specified email address.
--   
--   <i>See:</i> <a>guardianInvitation</a> smart constructor.
data GuardianInvitation

-- | Creates a value of <a>GuardianInvitation</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>giCreationTime</a></li>
--   <li><a>giStudentId</a></li>
--   <li><a>giState</a></li>
--   <li><a>giInvitationId</a></li>
--   <li><a>giInvitedEmailAddress</a></li>
--   </ul>
guardianInvitation :: GuardianInvitation

-- | The time that this invitation was created. Read-only.
giCreationTime :: Lens' GuardianInvitation (Maybe Text)

-- | ID of the student (in standard format)
giStudentId :: Lens' GuardianInvitation (Maybe Text)

-- | The state that this invitation is in.
giState :: Lens' GuardianInvitation (Maybe Text)

-- | Unique identifier for this invitation. Read-only.
giInvitationId :: Lens' GuardianInvitation (Maybe Text)

-- | Email address that the invitation was sent to. This field is only
--   visible to domain administrators.
giInvitedEmailAddress :: Lens' GuardianInvitation (Maybe Text)

-- | Request to return a student submission.
--   
--   <i>See:</i> <a>returnStudentSubmissionRequest</a> smart constructor.
data ReturnStudentSubmissionRequest

-- | Creates a value of <a>ReturnStudentSubmissionRequest</a> with the
--   minimum fields required to make a request.
returnStudentSubmissionRequest :: ReturnStudentSubmissionRequest

-- | Request to reclaim a student submission.
--   
--   <i>See:</i> <a>reclaimStudentSubmissionRequest</a> smart constructor.
data ReclaimStudentSubmissionRequest

-- | Creates a value of <a>ReclaimStudentSubmissionRequest</a> with the
--   minimum fields required to make a request.
reclaimStudentSubmissionRequest :: ReclaimStudentSubmissionRequest

-- | Response when listing course work.
--   
--   <i>See:</i> <a>listCourseWorkResponse</a> smart constructor.
data ListCourseWorkResponse

-- | Creates a value of <a>ListCourseWorkResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lcwrCourseWork</a></li>
--   <li><a>lcwrNextPageToken</a></li>
--   </ul>
listCourseWorkResponse :: ListCourseWorkResponse

-- | Course work items that match the request.
lcwrCourseWork :: Lens' ListCourseWorkResponse [CourseWork]

-- | Token identifying the next page of results to return. If empty, no
--   further results are available.
lcwrNextPageToken :: Lens' ListCourseWorkResponse (Maybe Text)

-- | A generic empty message that you can re-use to avoid defining
--   duplicated empty messages in your APIs. A typical example is to use it
--   as the request or the response type of an API method. For instance:
--   service Foo { rpc Bar(google.protobuf.Empty) returns
--   (google.protobuf.Empty); } The JSON representation for `Empty` is
--   empty JSON object `{}`.
--   
--   <i>See:</i> <a>empty</a> smart constructor.
data Empty

-- | Creates a value of <a>Empty</a> with the minimum fields required to
--   make a request.
empty :: Empty

-- | Global user permission description.
--   
--   <i>See:</i> <a>globalPermission</a> smart constructor.
data GlobalPermission

-- | Creates a value of <a>GlobalPermission</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>gpPermission</a></li>
--   </ul>
globalPermission :: GlobalPermission

-- | Permission value.
gpPermission :: Lens' GlobalPermission (Maybe Text)

-- | URL item.
--   
--   <i>See:</i> <a>link</a> smart constructor.
data Link

-- | Creates a value of <a>Link</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lThumbnailURL</a></li>
--   <li><a>lURL</a></li>
--   <li><a>lTitle</a></li>
--   </ul>
link :: Link

-- | URL of a thumbnail image of the target URL. Read-only.
lThumbnailURL :: Lens' Link (Maybe Text)

-- | URL to link to. This must be a valid UTF-8 string containing between 1
--   and 2024 characters.
lURL :: Lens' Link (Maybe Text)

-- | Title of the target of the URL. Read-only.
lTitle :: Lens' Link (Maybe Text)

-- | Student work for an assignment.
--   
--   <i>See:</i> <a>assignmentSubmission</a> smart constructor.
data AssignmentSubmission

-- | Creates a value of <a>AssignmentSubmission</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>asAttachments</a></li>
--   </ul>
assignmentSubmission :: AssignmentSubmission

-- | Attachments added by the student. Drive files that correspond to
--   materials with a share mode of STUDENT_COPY may not exist yet if the
--   student has not accessed the assignment in Classroom. Some attachment
--   metadata is only populated if the requesting user has permission to
--   access it. Identifier and alternate_link fields are always available,
--   but others (e.g. title) may not be.
asAttachments :: Lens' AssignmentSubmission [Attachment]

-- | Request to modify the attachments of a student submission.
--   
--   <i>See:</i> <a>modifyAttachmentsRequest</a> smart constructor.
data ModifyAttachmentsRequest

-- | Creates a value of <a>ModifyAttachmentsRequest</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>marAddAttachments</a></li>
--   </ul>
modifyAttachmentsRequest :: ModifyAttachmentsRequest

-- | Attachments to add. A student submission may not have more than 20
--   attachments. Form attachments are not supported.
marAddAttachments :: Lens' ModifyAttachmentsRequest [Attachment]

-- | Response when listing student submissions.
--   
--   <i>See:</i> <a>listStudentSubmissionsResponse</a> smart constructor.
data ListStudentSubmissionsResponse

-- | Creates a value of <a>ListStudentSubmissionsResponse</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lssrNextPageToken</a></li>
--   <li><a>lssrStudentSubmissions</a></li>
--   </ul>
listStudentSubmissionsResponse :: ListStudentSubmissionsResponse

-- | Token identifying the next page of results to return. If empty, no
--   further results are available.
lssrNextPageToken :: Lens' ListStudentSubmissionsResponse (Maybe Text)

-- | Student work that matches the request.
lssrStudentSubmissions :: Lens' ListStudentSubmissionsResponse [StudentSubmission]

-- | Material attached to course work. When creating attachments, setting
--   the `form` field is not supported.
--   
--   <i>See:</i> <a>material</a> smart constructor.
data Material

-- | Creates a value of <a>Material</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>mDriveFile</a></li>
--   <li><a>mLink</a></li>
--   <li><a>mYouTubeVideo</a></li>
--   <li><a>mForm</a></li>
--   </ul>
material :: Material

-- | Google Drive file material.
mDriveFile :: Lens' Material (Maybe SharedDriveFile)

-- | Link material. On creation, will be upgraded to a more appropriate
--   type if possible, and this will be reflected in the response.
mLink :: Lens' Material (Maybe Link)

-- | YouTube video material.
mYouTubeVideo :: Lens' Material (Maybe YouTubeVideo)

-- | Google Forms material.
mForm :: Lens' Material (Maybe Form)

-- | Student work for a multiple-choice question.
--   
--   <i>See:</i> <a>multipleChoiceSubmission</a> smart constructor.
data MultipleChoiceSubmission

-- | Creates a value of <a>MultipleChoiceSubmission</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>mcsAnswer</a></li>
--   </ul>
multipleChoiceSubmission :: MultipleChoiceSubmission

-- | Student's select choice.
mcsAnswer :: Lens' MultipleChoiceSubmission (Maybe Text)

-- | Response when listing invitations.
--   
--   <i>See:</i> <a>listInvitationsResponse</a> smart constructor.
data ListInvitationsResponse

-- | Creates a value of <a>ListInvitationsResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lirNextPageToken</a></li>
--   <li><a>lirInvitations</a></li>
--   </ul>
listInvitationsResponse :: ListInvitationsResponse

-- | Token identifying the next page of results to return. If empty, no
--   further results are available.
lirNextPageToken :: Lens' ListInvitationsResponse (Maybe Text)

-- | Invitations that match the list request.
lirInvitations :: Lens' ListInvitationsResponse [Invitation]

-- | Association between a student and a guardian of that student. The
--   guardian may receive information about the student's course work.
--   
--   <i>See:</i> <a>guardian</a> smart constructor.
data Guardian

-- | Creates a value of <a>Guardian</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>gStudentId</a></li>
--   <li><a>gGuardianId</a></li>
--   <li><a>gInvitedEmailAddress</a></li>
--   <li><a>gGuardianProFile</a></li>
--   </ul>
guardian :: Guardian

-- | Identifier for the student to whom the guardian relationship applies.
gStudentId :: Lens' Guardian (Maybe Text)

-- | Identifier for the guardian.
gGuardianId :: Lens' Guardian (Maybe Text)

-- | The email address to which the initial guardian invitation was sent.
--   This field is only visible to domain administrators.
gInvitedEmailAddress :: Lens' Guardian (Maybe Text)

-- | User profile for the guardian.
gGuardianProFile :: Lens' Guardian (Maybe UserProFile)

-- | A material attached to a course as part of a material set.
--   
--   <i>See:</i> <a>courseMaterial</a> smart constructor.
data CourseMaterial

-- | Creates a value of <a>CourseMaterial</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cmDriveFile</a></li>
--   <li><a>cmLink</a></li>
--   <li><a>cmYouTubeVideo</a></li>
--   <li><a>cmForm</a></li>
--   </ul>
courseMaterial :: CourseMaterial

-- | Google Drive file attachment.
cmDriveFile :: Lens' CourseMaterial (Maybe DriveFile)

-- | Link atatchment.
cmLink :: Lens' CourseMaterial (Maybe Link)

-- | Youtube video attachment.
cmYouTubeVideo :: Lens' CourseMaterial (Maybe YouTubeVideo)

-- | Google Forms attachment.
cmForm :: Lens' CourseMaterial (Maybe Form)

-- | Student work for a short answer question.
--   
--   <i>See:</i> <a>shortAnswerSubmission</a> smart constructor.
data ShortAnswerSubmission

-- | Creates a value of <a>ShortAnswerSubmission</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>sasAnswer</a></li>
--   </ul>
shortAnswerSubmission :: ShortAnswerSubmission

-- | Student response to a short-answer question.
sasAnswer :: Lens' ShortAnswerSubmission (Maybe Text)

-- | An invitation to join a course.
--   
--   <i>See:</i> <a>invitation</a> smart constructor.
data Invitation

-- | Creates a value of <a>Invitation</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>iCourseId</a></li>
--   <li><a>iUserId</a></li>
--   <li><a>iRole</a></li>
--   <li><a>iId</a></li>
--   </ul>
invitation :: Invitation

-- | Identifier of the course to invite the user to.
iCourseId :: Lens' Invitation (Maybe Text)

-- | Identifier of the invited user. When specified as a parameter of a
--   request, this identifier can be set to one of the following: * the
--   numeric identifier for the user * the email address of the user * the
--   string literal `"me"`, indicating the requesting user
iUserId :: Lens' Invitation (Maybe Text)

-- | Role to invite the user to have. Must not be
--   `COURSE_ROLE_UNSPECIFIED`.
iRole :: Lens' Invitation (Maybe Text)

-- | Identifier assigned by Classroom. Read-only.
iId :: Lens' Invitation (Maybe Text)

-- | Attachment added to student assignment work. When creating
--   attachments, setting the `form` field is not supported.
--   
--   <i>See:</i> <a>attachment</a> smart constructor.
data Attachment

-- | Creates a value of <a>Attachment</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>aDriveFile</a></li>
--   <li><a>aLink</a></li>
--   <li><a>aYouTubeVideo</a></li>
--   <li><a>aForm</a></li>
--   </ul>
attachment :: Attachment

-- | Google Drive file attachment.
aDriveFile :: Lens' Attachment (Maybe DriveFile)

-- | Link attachment.
aLink :: Lens' Attachment (Maybe Link)

-- | Youtube video attachment.
aYouTubeVideo :: Lens' Attachment (Maybe YouTubeVideo)

-- | Google Forms attachment.
aForm :: Lens' Attachment (Maybe Form)

-- | Student submission for course work. StudentSubmission items are
--   generated when a CourseWork item is created. StudentSubmissions that
--   have never been accessed (i.e. with `state` = NEW) may not have a
--   creation time or update time.
--   
--   <i>See:</i> <a>studentSubmission</a> smart constructor.
data StudentSubmission

-- | Creates a value of <a>StudentSubmission</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ssCreationTime</a></li>
--   <li><a>ssLate</a></li>
--   <li><a>ssState</a></li>
--   <li><a>ssCourseId</a></li>
--   <li><a>ssMultipleChoiceSubmission</a></li>
--   <li><a>ssAssignmentSubmission</a></li>
--   <li><a>ssShortAnswerSubmission</a></li>
--   <li><a>ssAssociatedWithDeveloper</a></li>
--   <li><a>ssUserId</a></li>
--   <li><a>ssUpdateTime</a></li>
--   <li><a>ssCourseWorkType</a></li>
--   <li><a>ssAssignedGrade</a></li>
--   <li><a>ssId</a></li>
--   <li><a>ssDraftGrade</a></li>
--   <li><a>ssAlternateLink</a></li>
--   <li><a>ssCourseWorkId</a></li>
--   </ul>
studentSubmission :: StudentSubmission

-- | Creation time of this submission. This may be unset if the student has
--   not accessed this item. Read-only.
ssCreationTime :: Lens' StudentSubmission (Maybe Text)

-- | Whether this submission is late. Read-only.
ssLate :: Lens' StudentSubmission (Maybe Bool)

-- | State of this submission. Read-only.
ssState :: Lens' StudentSubmission (Maybe Text)

-- | Identifier of the course. Read-only.
ssCourseId :: Lens' StudentSubmission (Maybe Text)

-- | Submission content when course_work_type is MULTIPLE_CHOICE_QUESTION.
ssMultipleChoiceSubmission :: Lens' StudentSubmission (Maybe MultipleChoiceSubmission)

-- | Submission content when course_work_type is ASSIGNMENT .
ssAssignmentSubmission :: Lens' StudentSubmission (Maybe AssignmentSubmission)

-- | Submission content when course_work_type is SHORT_ANSWER_QUESTION.
ssShortAnswerSubmission :: Lens' StudentSubmission (Maybe ShortAnswerSubmission)

-- | Whether this student submission is associated with the Developer
--   Console project making the request. See
--   google.classroom.Work.CreateCourseWork for more details. Read-only.
ssAssociatedWithDeveloper :: Lens' StudentSubmission (Maybe Bool)

-- | Identifier for the student that owns this submission. Read-only.
ssUserId :: Lens' StudentSubmission (Maybe Text)

-- | Last update time of this submission. This may be unset if the student
--   has not accessed this item. Read-only.
ssUpdateTime :: Lens' StudentSubmission (Maybe Text)

-- | Type of course work this submission is for. Read-only.
ssCourseWorkType :: Lens' StudentSubmission (Maybe Text)

-- | Optional grade. If unset, no grade was set. This must be a
--   non-negative integer value. This may be modified only by course
--   teachers.
ssAssignedGrade :: Lens' StudentSubmission (Maybe Double)

-- | Classroom-assigned Identifier for the student submission. This is
--   unique among submissions for the relevant course work. Read-only.
ssId :: Lens' StudentSubmission (Maybe Text)

-- | Optional pending grade. If unset, no grade was set. This must be a
--   non-negative integer value. This is only visible to and modifiable by
--   course teachers.
ssDraftGrade :: Lens' StudentSubmission (Maybe Double)

-- | Absolute link to the submission in the Classroom web UI. Read-only.
ssAlternateLink :: Lens' StudentSubmission (Maybe Text)

-- | Identifier for the course work this corresponds to. Read-only.
ssCourseWorkId :: Lens' StudentSubmission (Maybe Text)

-- | Response when listing guardians.
--   
--   <i>See:</i> <a>listGuardiansResponse</a> smart constructor.
data ListGuardiansResponse

-- | Creates a value of <a>ListGuardiansResponse</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lgrNextPageToken</a></li>
--   <li><a>lgrGuardians</a></li>
--   </ul>
listGuardiansResponse :: ListGuardiansResponse

-- | Token identifying the next page of results to return. If empty, no
--   further results are available.
lgrNextPageToken :: Lens' ListGuardiansResponse (Maybe Text)

-- | Guardians on this page of results that met the criteria specified in
--   the request.
lgrGuardians :: Lens' ListGuardiansResponse [Guardian]

-- | Represents a whole calendar date, e.g. date of birth. The time of day
--   and time zone are either specified elsewhere or are not significant.
--   The date is relative to the Proleptic Gregorian Calendar. The day may
--   be 0 to represent a year and month where the day is not significant,
--   e.g. credit card expiration date. The year may be 0 to represent a
--   month and day independent of year, e.g. anniversary date. Related
--   types are google.type.TimeOfDay and `google.protobuf.Timestamp`.
--   
--   <i>See:</i> <a>date</a> smart constructor.
data Date

-- | Creates a value of <a>Date</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dDay</a></li>
--   <li><a>dYear</a></li>
--   <li><a>dMonth</a></li>
--   </ul>
date :: Date

-- | Day of month. Must be from 1 to 31 and valid for the year and month,
--   or 0 if specifying a year/month where the day is not significant.
dDay :: Lens' Date (Maybe Int32)

-- | Year of date. Must be from 1 to 9999, or 0 if specifying a date
--   without a year.
dYear :: Lens' Date (Maybe Int32)

-- | Month of year. Must be from 1 to 12.
dMonth :: Lens' Date (Maybe Int32)

-- | YouTube video item.
--   
--   <i>See:</i> <a>youTubeVideo</a> smart constructor.
data YouTubeVideo

-- | Creates a value of <a>YouTubeVideo</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ytvThumbnailURL</a></li>
--   <li><a>ytvId</a></li>
--   <li><a>ytvTitle</a></li>
--   <li><a>ytvAlternateLink</a></li>
--   </ul>
youTubeVideo :: YouTubeVideo

-- | URL of a thumbnail image of the YouTube video. Read-only.
ytvThumbnailURL :: Lens' YouTubeVideo (Maybe Text)

-- | YouTube API resource ID.
ytvId :: Lens' YouTubeVideo (Maybe Text)

-- | Title of the YouTube video. Read-only.
ytvTitle :: Lens' YouTubeVideo (Maybe Text)

-- | URL that can be used to view the YouTube video. Read-only.
ytvAlternateLink :: Lens' YouTubeVideo (Maybe Text)

-- | Teacher of a course.
--   
--   <i>See:</i> <a>teacher</a> smart constructor.
data Teacher

-- | Creates a value of <a>Teacher</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>tCourseId</a></li>
--   <li><a>tProFile</a></li>
--   <li><a>tUserId</a></li>
--   </ul>
teacher :: Teacher

-- | Identifier of the course. Read-only.
tCourseId :: Lens' Teacher (Maybe Text)

-- | Global user information for the teacher. Read-only.
tProFile :: Lens' Teacher (Maybe UserProFile)

-- | Identifier of the user. When specified as a parameter of a request,
--   this identifier can be one of the following: * the numeric identifier
--   for the user * the email address of the user * the string literal
--   `"me"`, indicating the requesting user
tUserId :: Lens' Teacher (Maybe Text)

-- | A set of materials that appears on the "About" page of the course.
--   These materials might include a syllabus, schedule, or other
--   background information relating to the course as a whole.
--   
--   <i>See:</i> <a>courseMaterialSet</a> smart constructor.
data CourseMaterialSet

-- | Creates a value of <a>CourseMaterialSet</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cmsMaterials</a></li>
--   <li><a>cmsTitle</a></li>
--   </ul>
courseMaterialSet :: CourseMaterialSet

-- | Materials attached to this set.
cmsMaterials :: Lens' CourseMaterialSet [CourseMaterial]

-- | Title for this set.
cmsTitle :: Lens' CourseMaterialSet (Maybe Text)

-- | Details of the user's name.
--   
--   <i>See:</i> <a>name</a> smart constructor.
data Name

-- | Creates a value of <a>Name</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>nGivenName</a></li>
--   <li><a>nFullName</a></li>
--   <li><a>nFamilyName</a></li>
--   </ul>
name :: Name

-- | The user's first name. Read-only.
nGivenName :: Lens' Name (Maybe Text)

-- | The user's full name formed by concatenating the first and last name
--   values. Read-only.
nFullName :: Lens' Name (Maybe Text)

-- | The user's last name. Read-only.
nFamilyName :: Lens' Name (Maybe Text)

-- | Response when listing courses.
--   
--   <i>See:</i> <a>listCoursesResponse</a> smart constructor.
data ListCoursesResponse

-- | Creates a value of <a>ListCoursesResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lcrNextPageToken</a></li>
--   <li><a>lcrCourses</a></li>
--   </ul>
listCoursesResponse :: ListCoursesResponse

-- | Token identifying the next page of results to return. If empty, no
--   further results are available.
lcrNextPageToken :: Lens' ListCoursesResponse (Maybe Text)

-- | Courses that match the list request.
lcrCourses :: Lens' ListCoursesResponse [Course]

-- | Request to turn in a student submission.
--   
--   <i>See:</i> <a>turnInStudentSubmissionRequest</a> smart constructor.
data TurnInStudentSubmissionRequest

-- | Creates a value of <a>TurnInStudentSubmissionRequest</a> with the
--   minimum fields required to make a request.
turnInStudentSubmissionRequest :: TurnInStudentSubmissionRequest

-- | Global information for a user.
--   
--   <i>See:</i> <a>userProFile</a> smart constructor.
data UserProFile

-- | Creates a value of <a>UserProFile</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>upfPhotoURL</a></li>
--   <li><a>upfName</a></li>
--   <li><a>upfEmailAddress</a></li>
--   <li><a>upfId</a></li>
--   <li><a>upfPermissions</a></li>
--   </ul>
userProFile :: UserProFile

-- | URL of user's profile photo. Read-only.
upfPhotoURL :: Lens' UserProFile (Maybe Text)

-- | Name of the user. Read-only.
upfName :: Lens' UserProFile (Maybe Name)

-- | Email address of the user. Read-only.
upfEmailAddress :: Lens' UserProFile (Maybe Text)

-- | Identifier of the user. Read-only.
upfId :: Lens' UserProFile (Maybe Text)

-- | Global permissions of the user. Read-only.
upfPermissions :: Lens' UserProFile [GlobalPermission]

-- | Representation of a Google Drive folder.
--   
--   <i>See:</i> <a>driveFolder</a> smart constructor.
data DriveFolder

-- | Creates a value of <a>DriveFolder</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>dId</a></li>
--   <li><a>dTitle</a></li>
--   <li><a>dAlternateLink</a></li>
--   </ul>
driveFolder :: DriveFolder

-- | Drive API resource ID.
dId :: Lens' DriveFolder (Maybe Text)

-- | Title of the Drive folder. Read-only.
dTitle :: Lens' DriveFolder (Maybe Text)

-- | URL that can be used to access the Drive folder. Read-only.
dAlternateLink :: Lens' DriveFolder (Maybe Text)

-- | Additional details for multiple-choice questions.
--   
--   <i>See:</i> <a>multipleChoiceQuestion</a> smart constructor.
data MultipleChoiceQuestion

-- | Creates a value of <a>MultipleChoiceQuestion</a> with the minimum
--   fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>mcqChoices</a></li>
--   </ul>
multipleChoiceQuestion :: MultipleChoiceQuestion

-- | Possible choices.
mcqChoices :: Lens' MultipleChoiceQuestion [Text]

-- | A Course in Classroom.
--   
--   <i>See:</i> <a>course</a> smart constructor.
data Course

-- | Creates a value of <a>Course</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>cCreationTime</a></li>
--   <li><a>cRoom</a></li>
--   <li><a>cCourseMaterialSets</a></li>
--   <li><a>cTeacherGroupEmail</a></li>
--   <li><a>cTeacherFolder</a></li>
--   <li><a>cCourseState</a></li>
--   <li><a>cGuardiansEnabled</a></li>
--   <li><a>cEnrollmentCode</a></li>
--   <li><a>cUpdateTime</a></li>
--   <li><a>cOwnerId</a></li>
--   <li><a>cName</a></li>
--   <li><a>cId</a></li>
--   <li><a>cAlternateLink</a></li>
--   <li><a>cCourseGroupEmail</a></li>
--   <li><a>cDescription</a></li>
--   <li><a>cDescriptionHeading</a></li>
--   <li><a>cSection</a></li>
--   </ul>
course :: Course

-- | Creation time of the course. Specifying this field in a course update
--   mask results in an error. Read-only.
cCreationTime :: Lens' Course (Maybe Text)

-- | Optional room location. For example, "301". If set, this field must be
--   a valid UTF-8 string and no longer than 650 characters.
cRoom :: Lens' Course (Maybe Text)

-- | Sets of materials that appear on the "about" page of this course.
--   Read-only.
cCourseMaterialSets :: Lens' Course [CourseMaterialSet]

-- | The email address of a Google group containing all teachers of the
--   course. This group does not accept email and can only be used for
--   permissions. Read-only.
cTeacherGroupEmail :: Lens' Course (Maybe Text)

-- | Information about a Drive Folder that is shared with all teachers of
--   the course. This field will only be set for teachers of the course and
--   domain administrators. Read-only.
cTeacherFolder :: Lens' Course (Maybe DriveFolder)

-- | State of the course. If unspecified, the default state is
--   `PROVISIONED`.
cCourseState :: Lens' Course (Maybe Text)

-- | Whether or not guardian notifications are enabled for this course.
--   Read-only.
cGuardiansEnabled :: Lens' Course (Maybe Bool)

-- | Enrollment code to use when joining this course. Specifying this field
--   in a course update mask results in an error. Read-only.
cEnrollmentCode :: Lens' Course (Maybe Text)

-- | Time of the most recent update to this course. Specifying this field
--   in a course update mask results in an error. Read-only.
cUpdateTime :: Lens' Course (Maybe Text)

-- | The identifier of the owner of a course. When specified as a parameter
--   of a create course request, this field is required. The identifier can
--   be one of the following: * the numeric identifier for the user * the
--   email address of the user * the string literal `"me"`, indicating the
--   requesting user This must be set in a create request. Specifying this
--   field in a course update mask results in an `INVALID_ARGUMENT` error.
cOwnerId :: Lens' Course (Maybe Text)

-- | Name of the course. For example, "10th Grade Biology". The name is
--   required. It must be between 1 and 750 characters and a valid UTF-8
--   string.
cName :: Lens' Course (Maybe Text)

-- | Identifier for this course assigned by Classroom. When creating a
--   course, you may optionally set this identifier to an alias string in
--   the request to create a corresponding alias. The `id` is still
--   assigned by Classroom and cannot be updated after the course is
--   created. Specifying this field in a course update mask results in an
--   error.
cId :: Lens' Course (Maybe Text)

-- | Absolute link to this course in the Classroom web UI. Read-only.
cAlternateLink :: Lens' Course (Maybe Text)

-- | The email address of a Google group containing all members of the
--   course. This group does not accept email and can only be used for
--   permissions. Read-only.
cCourseGroupEmail :: Lens' Course (Maybe Text)

-- | Optional description. For example, "We'll be learning about the
--   structure of living creatures from a combination of textbooks, guest
--   lectures, and lab work. Expect to be excited!" If set, this field must
--   be a valid UTF-8 string and no longer than 30,000 characters.
cDescription :: Lens' Course (Maybe Text)

-- | Optional heading for the description. For example, "Welcome to 10th
--   Grade Biology." If set, this field must be a valid UTF-8 string and no
--   longer than 3600 characters.
cDescriptionHeading :: Lens' Course (Maybe Text)

-- | Section of the course. For example, "Period 2". If set, this field
--   must be a valid UTF-8 string and no longer than 2800 characters.
cSection :: Lens' Course (Maybe Text)

-- | Represents a time of day. The date and time zone are either not
--   significant or are specified elsewhere. An API may chose to allow leap
--   seconds. Related types are google.type.Date and
--   `google.protobuf.Timestamp`.
--   
--   <i>See:</i> <a>timeOfDay</a> smart constructor.
data TimeOfDay'

-- | Creates a value of <a>TimeOfDay</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>todNanos</a></li>
--   <li><a>todHours</a></li>
--   <li><a>todMinutes</a></li>
--   <li><a>todSeconds</a></li>
--   </ul>
timeOfDay :: TimeOfDay'

-- | Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999.
todNanos :: Lens' TimeOfDay' (Maybe Int32)

-- | Hours of day in 24 hour format. Should be from 0 to 23. An API may
--   choose to allow the value "24:00:00" for scenarios like business
--   closing time.
todHours :: Lens' TimeOfDay' (Maybe Int32)

-- | Minutes of hour of day. Must be from 0 to 59.
todMinutes :: Lens' TimeOfDay' (Maybe Int32)

-- | Seconds of minutes of the time. Must normally be from 0 to 59. An API
--   may allow the value 60 if it allows leap-seconds.
todSeconds :: Lens' TimeOfDay' (Maybe Int32)

-- | Response when listing guardian invitations.
--   
--   <i>See:</i> <a>listGuardianInvitationsResponse</a> smart constructor.
data ListGuardianInvitationsResponse

-- | Creates a value of <a>ListGuardianInvitationsResponse</a> with the
--   minimum fields required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lgirNextPageToken</a></li>
--   <li><a>lgirGuardianInvitations</a></li>
--   </ul>
listGuardianInvitationsResponse :: ListGuardianInvitationsResponse

-- | Token identifying the next page of results to return. If empty, no
--   further results are available.
lgirNextPageToken :: Lens' ListGuardianInvitationsResponse (Maybe Text)

-- | Guardian invitations that matched the list request.
lgirGuardianInvitations :: Lens' ListGuardianInvitationsResponse [GuardianInvitation]

-- | Additional details for assignments.
--   
--   <i>See:</i> <a>assignment</a> smart constructor.
data Assignment

-- | Creates a value of <a>Assignment</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>aStudentWorkFolder</a></li>
--   </ul>
assignment :: Assignment

-- | Drive folder where attachments from student submissions are placed.
--   This is only populated for course teachers.
aStudentWorkFolder :: Lens' Assignment (Maybe DriveFolder)

-- | Response when listing students.
--   
--   <i>See:</i> <a>listStudentsResponse</a> smart constructor.
data ListStudentsResponse

-- | Creates a value of <a>ListStudentsResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>lsrNextPageToken</a></li>
--   <li><a>lsrStudents</a></li>
--   </ul>
listStudentsResponse :: ListStudentsResponse

-- | Token identifying the next page of results to return. If empty, no
--   further results are available.
lsrNextPageToken :: Lens' ListStudentsResponse (Maybe Text)

-- | Students who match the list request.
lsrStudents :: Lens' ListStudentsResponse [Student]

-- | Drive file that is used as material for course work.
--   
--   <i>See:</i> <a>sharedDriveFile</a> smart constructor.
data SharedDriveFile

-- | Creates a value of <a>SharedDriveFile</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>sdfDriveFile</a></li>
--   <li><a>sdfShareMode</a></li>
--   </ul>
sharedDriveFile :: SharedDriveFile

-- | Drive file details.
sdfDriveFile :: Lens' SharedDriveFile (Maybe DriveFile)

-- | Mechanism by which students access the Drive item.
sdfShareMode :: Lens' SharedDriveFile (Maybe Text)

-- | Alternative identifier for a course. An alias uniquely identifies a
--   course. It must be unique within one of the following scopes: *
--   domain: A domain-scoped alias is visible to all users within the alias
--   creator's domain and can be created only by a domain admin. A
--   domain-scoped alias is often used when a course has an identifier
--   external to Classroom. * project: A project-scoped alias is visible to
--   any request from an application using the Developer Console project ID
--   that created the alias and can be created by any project. A
--   project-scoped alias is often used when an application has alternative
--   identifiers. A random value can also be used to avoid duplicate
--   courses in the event of transmission failures, as retrying a request
--   will return `ALREADY_EXISTS` if a previous one has succeeded.
--   
--   <i>See:</i> <a>courseAlias</a> smart constructor.
data CourseAlias

-- | Creates a value of <a>CourseAlias</a> with the minimum fields required
--   to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>caAlias</a></li>
--   </ul>
courseAlias :: CourseAlias

-- | Alias string. The format of the string indicates the desired alias
--   scoping. * `d:` indicates a domain-scoped alias. Example: `d:math_101`
--   * `p:` indicates a project-scoped alias. Example: `p:abc123` This
--   field has a maximum length of 256 characters.
caAlias :: Lens' CourseAlias (Maybe Text)

-- | Google Forms item.
--   
--   <i>See:</i> <a>form</a> smart constructor.
data Form

-- | Creates a value of <a>Form</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>fThumbnailURL</a></li>
--   <li><a>fFormURL</a></li>
--   <li><a>fTitle</a></li>
--   <li><a>fResponseURL</a></li>
--   </ul>
form :: Form

-- | URL of a thumbnail image of the Form. Read-only.
fThumbnailURL :: Lens' Form (Maybe Text)

-- | URL of the form.
fFormURL :: Lens' Form (Maybe Text)

-- | Title of the Form. Read-only.
fTitle :: Lens' Form (Maybe Text)

-- | URL of the form responses document. Only set if respsonses have been
--   recorded and only when the requesting user is an editor of the form.
--   Read-only.
fResponseURL :: Lens' Form (Maybe Text)

-- | Response when listing teachers.
--   
--   <i>See:</i> <a>listTeachersResponse</a> smart constructor.
data ListTeachersResponse

-- | Creates a value of <a>ListTeachersResponse</a> with the minimum fields
--   required to make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>ltrNextPageToken</a></li>
--   <li><a>ltrTeachers</a></li>
--   </ul>
listTeachersResponse :: ListTeachersResponse

-- | Token identifying the next page of results to return. If empty, no
--   further results are available.
ltrNextPageToken :: Lens' ListTeachersResponse (Maybe Text)

-- | Teachers who match the list request.
ltrTeachers :: Lens' ListTeachersResponse [Teacher]

-- | Student in a course.
--   
--   <i>See:</i> <a>student</a> smart constructor.
data Student

-- | Creates a value of <a>Student</a> with the minimum fields required to
--   make a request.
--   
--   Use one of the following lenses to modify other fields as desired:
--   
--   <ul>
--   <li><a>sCourseId</a></li>
--   <li><a>sProFile</a></li>
--   <li><a>sStudentWorkFolder</a></li>
--   <li><a>sUserId</a></li>
--   </ul>
student :: Student

-- | Identifier of the course. Read-only.
sCourseId :: Lens' Student (Maybe Text)

-- | Global user information for the student. Read-only.
sProFile :: Lens' Student (Maybe UserProFile)

-- | Information about a Drive Folder for this student's work in this
--   course. Only visible to the student and domain administrators.
--   Read-only.
sStudentWorkFolder :: Lens' Student (Maybe DriveFolder)

-- | Identifier of the user. When specified as a parameter of a request,
--   this identifier can be one of the following: * the numeric identifier
--   for the user * the email address of the user * the string literal
--   `"me"`, indicating the requesting user
sUserId :: Lens' Student (Maybe Text)
