<html><body>
<style>

body, h1, h2, h3, div, span, p, pre, a {
  margin: 0;
  padding: 0;
  border: 0;
  font-weight: inherit;
  font-style: inherit;
  font-size: 100%;
  font-family: inherit;
  vertical-align: baseline;
}

body {
  font-size: 13px;
  padding: 1em;
}

h1 {
  font-size: 26px;
  margin-bottom: 1em;
}

h2 {
  font-size: 24px;
  margin-bottom: 1em;
}

h3 {
  font-size: 20px;
  margin-bottom: 1em;
  margin-top: 1em;
}

pre, code {
  line-height: 1.5;
  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
}

pre {
  margin-top: 0.5em;
}

h1, h2, h3, p {
  font-family: Arial, sans serif;
}

h1, h2, h3 {
  border-bottom: solid #CCC 1px;
}

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

.method  {
  margin-top: 1em;
  border: solid 1px #CCC;
  padding: 1em;
  background: #EEE;
}

.details {
  font-weight: bold;
  font-size: 14px;
}

</style>

<h1><a href="classroom_v1.html">Google Classroom API</a> . <a href="classroom_v1.courses.html">courses</a> . <a href="classroom_v1.courses.courseWork.html">courseWork</a> . <a href="classroom_v1.courses.courseWork.studentSubmissions.html">studentSubmissions</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#close">close()</a></code></p>
<p class="firstline">Close httplib2 connections.</p>
<p class="toc_element">
  <code><a href="#get">get(courseId, courseWorkId, id, x__xgafv=None)</a></code></p>
<p class="firstline">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.</p>
<p class="toc_element">
  <code><a href="#list">list(courseId, courseWorkId, late=None, pageSize=None, pageToken=None, states=None, userId=None, x__xgafv=None)</a></code></p>
<p class="firstline">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.</p>
<p class="toc_element">
  <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<p class="toc_element">
  <code><a href="#modifyAttachments">modifyAttachments(courseId, courseWorkId, id, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">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 [OAuth client ID](https://support.google.com/cloud/answer/6158849) 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.</p>
<p class="toc_element">
  <code><a href="#patch">patch(courseId, courseWorkId, id, body=None, updateMask=None, x__xgafv=None)</a></code></p>
<p class="firstline">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 [OAuth client ID](https://support.google.com/cloud/answer/6158849) 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.</p>
<p class="toc_element">
  <code><a href="#reclaim">reclaim(courseId, courseWorkId, id, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">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 updates 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 [OAuth client ID](https://support.google.com/cloud/answer/6158849) 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.</p>
<p class="toc_element">
  <code><a href="#return_">return_(courseId, courseWorkId, id, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">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 [OAuth client ID](https://support.google.com/cloud/answer/6158849) 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.</p>
<p class="toc_element">
  <code><a href="#turnIn">turnIn(courseId, courseWorkId, id, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">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 [OAuth client ID](https://support.google.com/cloud/answer/6158849) 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.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="get">get(courseId, courseWorkId, id, x__xgafv=None)</code>
  <pre>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.

Args:
  courseId: string, Identifier of the course. This identifier can be either the Classroom-assigned identifier or an alias. (required)
  courseWorkId: string, Identifier of the course work. (required)
  id: string, Identifier of the student submission. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the 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.
  &quot;alternateLink&quot;: &quot;A String&quot;, # Absolute link to the submission in the Classroom web UI. Read-only.
  &quot;assignedGrade&quot;: 3.14, # Optional grade. If unset, no grade was set. This value must be non-negative. Decimal (that is, non-integer) values are allowed, but are rounded to two decimal places. This may be modified only by course teachers.
  &quot;assignmentSubmission&quot;: { # Student work for an assignment. # Submission content when course_work_type is ASSIGNMENT. Students can modify this content using ModifyAttachments.
    &quot;attachments&quot;: [ # 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 (for example, title) may not be.
      { # Attachment added to student assignment work. When creating attachments, setting the `form` field is not supported.
        &quot;driveFile&quot;: { # Representation of a Google Drive file. # Google Drive file attachment.
          &quot;alternateLink&quot;: &quot;A String&quot;, # URL that can be used to access the Drive item. Read-only.
          &quot;id&quot;: &quot;A String&quot;, # Drive API resource ID.
          &quot;thumbnailUrl&quot;: &quot;A String&quot;, # URL of a thumbnail image of the Drive item. Read-only.
          &quot;title&quot;: &quot;A String&quot;, # Title of the Drive item. Read-only.
        },
        &quot;form&quot;: { # Google Forms item. # Google Forms attachment.
          &quot;formUrl&quot;: &quot;A String&quot;, # URL of the form.
          &quot;responseUrl&quot;: &quot;A String&quot;, # 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.
          &quot;thumbnailUrl&quot;: &quot;A String&quot;, # URL of a thumbnail image of the Form. Read-only.
          &quot;title&quot;: &quot;A String&quot;, # Title of the Form. Read-only.
        },
        &quot;link&quot;: { # URL item. # Link attachment.
          &quot;thumbnailUrl&quot;: &quot;A String&quot;, # URL of a thumbnail image of the target URL. Read-only.
          &quot;title&quot;: &quot;A String&quot;, # Title of the target of the URL. Read-only.
          &quot;url&quot;: &quot;A String&quot;, # URL to link to. This must be a valid UTF-8 string containing between 1 and 2024 characters.
        },
        &quot;youTubeVideo&quot;: { # YouTube video item. # Youtube video attachment.
          &quot;alternateLink&quot;: &quot;A String&quot;, # URL that can be used to view the YouTube video. Read-only.
          &quot;id&quot;: &quot;A String&quot;, # YouTube API resource ID.
          &quot;thumbnailUrl&quot;: &quot;A String&quot;, # URL of a thumbnail image of the YouTube video. Read-only.
          &quot;title&quot;: &quot;A String&quot;, # Title of the YouTube video. Read-only.
        },
      },
    ],
  },
  &quot;associatedWithDeveloper&quot;: True or False, # Whether this student submission is associated with the Developer Console project making the request. See CreateCourseWork for more details. Read-only.
  &quot;courseId&quot;: &quot;A String&quot;, # Identifier of the course. Read-only.
  &quot;courseWorkId&quot;: &quot;A String&quot;, # Identifier for the course work this corresponds to. Read-only.
  &quot;courseWorkType&quot;: &quot;A String&quot;, # Type of course work this submission is for. Read-only.
  &quot;creationTime&quot;: &quot;A String&quot;, # Creation time of this submission. This may be unset if the student has not accessed this item. Read-only.
  &quot;draftGrade&quot;: 3.14, # Optional pending grade. If unset, no grade was set. This value must be non-negative. Decimal (that is, non-integer) values are allowed, but are rounded to two decimal places. This is only visible to and modifiable by course teachers.
  &quot;id&quot;: &quot;A String&quot;, # Classroom-assigned Identifier for the student submission. This is unique among submissions for the relevant course work. Read-only.
  &quot;late&quot;: True or False, # Whether this submission is late. Read-only.
  &quot;multipleChoiceSubmission&quot;: { # Student work for a multiple-choice question. # Submission content when course_work_type is MULTIPLE_CHOICE_QUESTION.
    &quot;answer&quot;: &quot;A String&quot;, # Student&#x27;s select choice.
  },
  &quot;shortAnswerSubmission&quot;: { # Student work for a short answer question. # Submission content when course_work_type is SHORT_ANSWER_QUESTION.
    &quot;answer&quot;: &quot;A String&quot;, # Student response to a short-answer question.
  },
  &quot;state&quot;: &quot;A String&quot;, # State of this submission. Read-only.
  &quot;submissionHistory&quot;: [ # The history of the submission (includes state and grade histories). Read-only.
    { # The history of the submission. This currently includes state and grade histories.
      &quot;gradeHistory&quot;: { # The history of each grade on this submission. # The grade history information of the submission, if present.
        &quot;actorUserId&quot;: &quot;A String&quot;, # The teacher who made the grade change.
        &quot;gradeChangeType&quot;: &quot;A String&quot;, # The type of grade change at this time in the submission grade history.
        &quot;gradeTimestamp&quot;: &quot;A String&quot;, # When the grade of the submission was changed.
        &quot;maxPoints&quot;: 3.14, # The denominator of the grade at this time in the submission grade history.
        &quot;pointsEarned&quot;: 3.14, # The numerator of the grade at this time in the submission grade history.
      },
      &quot;stateHistory&quot;: { # The history of each state this submission has been in. # The state history information of the submission, if present.
        &quot;actorUserId&quot;: &quot;A String&quot;, # The teacher or student who made the change.
        &quot;state&quot;: &quot;A String&quot;, # The workflow pipeline stage.
        &quot;stateTimestamp&quot;: &quot;A String&quot;, # When the submission entered this state.
      },
    },
  ],
  &quot;updateTime&quot;: &quot;A String&quot;, # Last update time of this submission. This may be unset if the student has not accessed this item. Read-only.
  &quot;userId&quot;: &quot;A String&quot;, # Identifier for the student that owns this submission. Read-only.
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(courseId, courseWorkId, late=None, pageSize=None, pageToken=None, states=None, userId=None, x__xgafv=None)</code>
  <pre>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.

Args:
  courseId: string, Identifier of the course. This identifier can be either the Classroom-assigned identifier or an alias. (required)
  courseWorkId: string, Identifier of the student work to request. This may be set to the string literal `&quot;-&quot;` to request student work for all course work in the specified course. (required)
  late: string, Requested lateness value. If specified, returned student submissions are restricted by the requested value. If unspecified, submissions are returned regardless of `late` value.
    Allowed values
      LATE_VALUES_UNSPECIFIED - No restriction on submission late values specified.
      LATE_ONLY - Return StudentSubmissions where late is true.
      NOT_LATE_ONLY - Return StudentSubmissions where late is false.
  pageSize: integer, 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.
  pageToken: string, 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.
  states: string, Requested submission states. If specified, returned student submissions match one of the specified submission states. (repeated)
    Allowed values
      SUBMISSION_STATE_UNSPECIFIED - No state specified. This should never be returned.
      NEW - The student has never accessed this submission. Attachments are not returned and timestamps is not set.
      CREATED - Has been created.
      TURNED_IN - Has been turned in to the teacher.
      RETURNED - Has been returned to the student.
      RECLAIMED_BY_STUDENT - Student chose to &quot;unsubmit&quot; the assignment.
  userId: string, 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 `&quot;me&quot;`, indicating the requesting user
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Response when listing student submissions.
  &quot;nextPageToken&quot;: &quot;A String&quot;, # Token identifying the next page of results to return. If empty, no further results are available.
  &quot;studentSubmissions&quot;: [ # Student work that matches the request.
    { # 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.
      &quot;alternateLink&quot;: &quot;A String&quot;, # Absolute link to the submission in the Classroom web UI. Read-only.
      &quot;assignedGrade&quot;: 3.14, # Optional grade. If unset, no grade was set. This value must be non-negative. Decimal (that is, non-integer) values are allowed, but are rounded to two decimal places. This may be modified only by course teachers.
      &quot;assignmentSubmission&quot;: { # Student work for an assignment. # Submission content when course_work_type is ASSIGNMENT. Students can modify this content using ModifyAttachments.
        &quot;attachments&quot;: [ # 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 (for example, title) may not be.
          { # Attachment added to student assignment work. When creating attachments, setting the `form` field is not supported.
            &quot;driveFile&quot;: { # Representation of a Google Drive file. # Google Drive file attachment.
              &quot;alternateLink&quot;: &quot;A String&quot;, # URL that can be used to access the Drive item. Read-only.
              &quot;id&quot;: &quot;A String&quot;, # Drive API resource ID.
              &quot;thumbnailUrl&quot;: &quot;A String&quot;, # URL of a thumbnail image of the Drive item. Read-only.
              &quot;title&quot;: &quot;A String&quot;, # Title of the Drive item. Read-only.
            },
            &quot;form&quot;: { # Google Forms item. # Google Forms attachment.
              &quot;formUrl&quot;: &quot;A String&quot;, # URL of the form.
              &quot;responseUrl&quot;: &quot;A String&quot;, # 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.
              &quot;thumbnailUrl&quot;: &quot;A String&quot;, # URL of a thumbnail image of the Form. Read-only.
              &quot;title&quot;: &quot;A String&quot;, # Title of the Form. Read-only.
            },
            &quot;link&quot;: { # URL item. # Link attachment.
              &quot;thumbnailUrl&quot;: &quot;A String&quot;, # URL of a thumbnail image of the target URL. Read-only.
              &quot;title&quot;: &quot;A String&quot;, # Title of the target of the URL. Read-only.
              &quot;url&quot;: &quot;A String&quot;, # URL to link to. This must be a valid UTF-8 string containing between 1 and 2024 characters.
            },
            &quot;youTubeVideo&quot;: { # YouTube video item. # Youtube video attachment.
              &quot;alternateLink&quot;: &quot;A String&quot;, # URL that can be used to view the YouTube video. Read-only.
              &quot;id&quot;: &quot;A String&quot;, # YouTube API resource ID.
              &quot;thumbnailUrl&quot;: &quot;A String&quot;, # URL of a thumbnail image of the YouTube video. Read-only.
              &quot;title&quot;: &quot;A String&quot;, # Title of the YouTube video. Read-only.
            },
          },
        ],
      },
      &quot;associatedWithDeveloper&quot;: True or False, # Whether this student submission is associated with the Developer Console project making the request. See CreateCourseWork for more details. Read-only.
      &quot;courseId&quot;: &quot;A String&quot;, # Identifier of the course. Read-only.
      &quot;courseWorkId&quot;: &quot;A String&quot;, # Identifier for the course work this corresponds to. Read-only.
      &quot;courseWorkType&quot;: &quot;A String&quot;, # Type of course work this submission is for. Read-only.
      &quot;creationTime&quot;: &quot;A String&quot;, # Creation time of this submission. This may be unset if the student has not accessed this item. Read-only.
      &quot;draftGrade&quot;: 3.14, # Optional pending grade. If unset, no grade was set. This value must be non-negative. Decimal (that is, non-integer) values are allowed, but are rounded to two decimal places. This is only visible to and modifiable by course teachers.
      &quot;id&quot;: &quot;A String&quot;, # Classroom-assigned Identifier for the student submission. This is unique among submissions for the relevant course work. Read-only.
      &quot;late&quot;: True or False, # Whether this submission is late. Read-only.
      &quot;multipleChoiceSubmission&quot;: { # Student work for a multiple-choice question. # Submission content when course_work_type is MULTIPLE_CHOICE_QUESTION.
        &quot;answer&quot;: &quot;A String&quot;, # Student&#x27;s select choice.
      },
      &quot;shortAnswerSubmission&quot;: { # Student work for a short answer question. # Submission content when course_work_type is SHORT_ANSWER_QUESTION.
        &quot;answer&quot;: &quot;A String&quot;, # Student response to a short-answer question.
      },
      &quot;state&quot;: &quot;A String&quot;, # State of this submission. Read-only.
      &quot;submissionHistory&quot;: [ # The history of the submission (includes state and grade histories). Read-only.
        { # The history of the submission. This currently includes state and grade histories.
          &quot;gradeHistory&quot;: { # The history of each grade on this submission. # The grade history information of the submission, if present.
            &quot;actorUserId&quot;: &quot;A String&quot;, # The teacher who made the grade change.
            &quot;gradeChangeType&quot;: &quot;A String&quot;, # The type of grade change at this time in the submission grade history.
            &quot;gradeTimestamp&quot;: &quot;A String&quot;, # When the grade of the submission was changed.
            &quot;maxPoints&quot;: 3.14, # The denominator of the grade at this time in the submission grade history.
            &quot;pointsEarned&quot;: 3.14, # The numerator of the grade at this time in the submission grade history.
          },
          &quot;stateHistory&quot;: { # The history of each state this submission has been in. # The state history information of the submission, if present.
            &quot;actorUserId&quot;: &quot;A String&quot;, # The teacher or student who made the change.
            &quot;state&quot;: &quot;A String&quot;, # The workflow pipeline stage.
            &quot;stateTimestamp&quot;: &quot;A String&quot;, # When the submission entered this state.
          },
        },
      ],
      &quot;updateTime&quot;: &quot;A String&quot;, # Last update time of this submission. This may be unset if the student has not accessed this item. Read-only.
      &quot;userId&quot;: &quot;A String&quot;, # Identifier for the student that owns this submission. Read-only.
    },
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="list_next">list_next(previous_request, previous_response)</code>
  <pre>Retrieves the next page of results.

Args:
  previous_request: The request for the previous page. (required)
  previous_response: The response from the request for the previous page. (required)

Returns:
  A request object that you can call &#x27;execute()&#x27; on to request the next
  page. Returns None if there are no more items in the collection.
    </pre>
</div>

<div class="method">
    <code class="details" id="modifyAttachments">modifyAttachments(courseId, courseWorkId, id, body=None, x__xgafv=None)</code>
  <pre>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 [OAuth client ID](https://support.google.com/cloud/answer/6158849) 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.

Args:
  courseId: string, Identifier of the course. This identifier can be either the Classroom-assigned identifier or an alias. (required)
  courseWorkId: string, Identifier of the course work. (required)
  id: string, Identifier of the student submission. (required)
  body: object, The request body.
    The object takes the form of:

{ # Request to modify the attachments of a student submission.
  &quot;addAttachments&quot;: [ # Attachments to add. A student submission may not have more than 20 attachments. Form attachments are not supported.
    { # Attachment added to student assignment work. When creating attachments, setting the `form` field is not supported.
      &quot;driveFile&quot;: { # Representation of a Google Drive file. # Google Drive file attachment.
        &quot;alternateLink&quot;: &quot;A String&quot;, # URL that can be used to access the Drive item. Read-only.
        &quot;id&quot;: &quot;A String&quot;, # Drive API resource ID.
        &quot;thumbnailUrl&quot;: &quot;A String&quot;, # URL of a thumbnail image of the Drive item. Read-only.
        &quot;title&quot;: &quot;A String&quot;, # Title of the Drive item. Read-only.
      },
      &quot;form&quot;: { # Google Forms item. # Google Forms attachment.
        &quot;formUrl&quot;: &quot;A String&quot;, # URL of the form.
        &quot;responseUrl&quot;: &quot;A String&quot;, # 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.
        &quot;thumbnailUrl&quot;: &quot;A String&quot;, # URL of a thumbnail image of the Form. Read-only.
        &quot;title&quot;: &quot;A String&quot;, # Title of the Form. Read-only.
      },
      &quot;link&quot;: { # URL item. # Link attachment.
        &quot;thumbnailUrl&quot;: &quot;A String&quot;, # URL of a thumbnail image of the target URL. Read-only.
        &quot;title&quot;: &quot;A String&quot;, # Title of the target of the URL. Read-only.
        &quot;url&quot;: &quot;A String&quot;, # URL to link to. This must be a valid UTF-8 string containing between 1 and 2024 characters.
      },
      &quot;youTubeVideo&quot;: { # YouTube video item. # Youtube video attachment.
        &quot;alternateLink&quot;: &quot;A String&quot;, # URL that can be used to view the YouTube video. Read-only.
        &quot;id&quot;: &quot;A String&quot;, # YouTube API resource ID.
        &quot;thumbnailUrl&quot;: &quot;A String&quot;, # URL of a thumbnail image of the YouTube video. Read-only.
        &quot;title&quot;: &quot;A String&quot;, # Title of the YouTube video. Read-only.
      },
    },
  ],
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the 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.
  &quot;alternateLink&quot;: &quot;A String&quot;, # Absolute link to the submission in the Classroom web UI. Read-only.
  &quot;assignedGrade&quot;: 3.14, # Optional grade. If unset, no grade was set. This value must be non-negative. Decimal (that is, non-integer) values are allowed, but are rounded to two decimal places. This may be modified only by course teachers.
  &quot;assignmentSubmission&quot;: { # Student work for an assignment. # Submission content when course_work_type is ASSIGNMENT. Students can modify this content using ModifyAttachments.
    &quot;attachments&quot;: [ # 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 (for example, title) may not be.
      { # Attachment added to student assignment work. When creating attachments, setting the `form` field is not supported.
        &quot;driveFile&quot;: { # Representation of a Google Drive file. # Google Drive file attachment.
          &quot;alternateLink&quot;: &quot;A String&quot;, # URL that can be used to access the Drive item. Read-only.
          &quot;id&quot;: &quot;A String&quot;, # Drive API resource ID.
          &quot;thumbnailUrl&quot;: &quot;A String&quot;, # URL of a thumbnail image of the Drive item. Read-only.
          &quot;title&quot;: &quot;A String&quot;, # Title of the Drive item. Read-only.
        },
        &quot;form&quot;: { # Google Forms item. # Google Forms attachment.
          &quot;formUrl&quot;: &quot;A String&quot;, # URL of the form.
          &quot;responseUrl&quot;: &quot;A String&quot;, # 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.
          &quot;thumbnailUrl&quot;: &quot;A String&quot;, # URL of a thumbnail image of the Form. Read-only.
          &quot;title&quot;: &quot;A String&quot;, # Title of the Form. Read-only.
        },
        &quot;link&quot;: { # URL item. # Link attachment.
          &quot;thumbnailUrl&quot;: &quot;A String&quot;, # URL of a thumbnail image of the target URL. Read-only.
          &quot;title&quot;: &quot;A String&quot;, # Title of the target of the URL. Read-only.
          &quot;url&quot;: &quot;A String&quot;, # URL to link to. This must be a valid UTF-8 string containing between 1 and 2024 characters.
        },
        &quot;youTubeVideo&quot;: { # YouTube video item. # Youtube video attachment.
          &quot;alternateLink&quot;: &quot;A String&quot;, # URL that can be used to view the YouTube video. Read-only.
          &quot;id&quot;: &quot;A String&quot;, # YouTube API resource ID.
          &quot;thumbnailUrl&quot;: &quot;A String&quot;, # URL of a thumbnail image of the YouTube video. Read-only.
          &quot;title&quot;: &quot;A String&quot;, # Title of the YouTube video. Read-only.
        },
      },
    ],
  },
  &quot;associatedWithDeveloper&quot;: True or False, # Whether this student submission is associated with the Developer Console project making the request. See CreateCourseWork for more details. Read-only.
  &quot;courseId&quot;: &quot;A String&quot;, # Identifier of the course. Read-only.
  &quot;courseWorkId&quot;: &quot;A String&quot;, # Identifier for the course work this corresponds to. Read-only.
  &quot;courseWorkType&quot;: &quot;A String&quot;, # Type of course work this submission is for. Read-only.
  &quot;creationTime&quot;: &quot;A String&quot;, # Creation time of this submission. This may be unset if the student has not accessed this item. Read-only.
  &quot;draftGrade&quot;: 3.14, # Optional pending grade. If unset, no grade was set. This value must be non-negative. Decimal (that is, non-integer) values are allowed, but are rounded to two decimal places. This is only visible to and modifiable by course teachers.
  &quot;id&quot;: &quot;A String&quot;, # Classroom-assigned Identifier for the student submission. This is unique among submissions for the relevant course work. Read-only.
  &quot;late&quot;: True or False, # Whether this submission is late. Read-only.
  &quot;multipleChoiceSubmission&quot;: { # Student work for a multiple-choice question. # Submission content when course_work_type is MULTIPLE_CHOICE_QUESTION.
    &quot;answer&quot;: &quot;A String&quot;, # Student&#x27;s select choice.
  },
  &quot;shortAnswerSubmission&quot;: { # Student work for a short answer question. # Submission content when course_work_type is SHORT_ANSWER_QUESTION.
    &quot;answer&quot;: &quot;A String&quot;, # Student response to a short-answer question.
  },
  &quot;state&quot;: &quot;A String&quot;, # State of this submission. Read-only.
  &quot;submissionHistory&quot;: [ # The history of the submission (includes state and grade histories). Read-only.
    { # The history of the submission. This currently includes state and grade histories.
      &quot;gradeHistory&quot;: { # The history of each grade on this submission. # The grade history information of the submission, if present.
        &quot;actorUserId&quot;: &quot;A String&quot;, # The teacher who made the grade change.
        &quot;gradeChangeType&quot;: &quot;A String&quot;, # The type of grade change at this time in the submission grade history.
        &quot;gradeTimestamp&quot;: &quot;A String&quot;, # When the grade of the submission was changed.
        &quot;maxPoints&quot;: 3.14, # The denominator of the grade at this time in the submission grade history.
        &quot;pointsEarned&quot;: 3.14, # The numerator of the grade at this time in the submission grade history.
      },
      &quot;stateHistory&quot;: { # The history of each state this submission has been in. # The state history information of the submission, if present.
        &quot;actorUserId&quot;: &quot;A String&quot;, # The teacher or student who made the change.
        &quot;state&quot;: &quot;A String&quot;, # The workflow pipeline stage.
        &quot;stateTimestamp&quot;: &quot;A String&quot;, # When the submission entered this state.
      },
    },
  ],
  &quot;updateTime&quot;: &quot;A String&quot;, # Last update time of this submission. This may be unset if the student has not accessed this item. Read-only.
  &quot;userId&quot;: &quot;A String&quot;, # Identifier for the student that owns this submission. Read-only.
}</pre>
</div>

<div class="method">
    <code class="details" id="patch">patch(courseId, courseWorkId, id, body=None, updateMask=None, x__xgafv=None)</code>
  <pre>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 [OAuth client ID](https://support.google.com/cloud/answer/6158849) 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.

Args:
  courseId: string, Identifier of the course. This identifier can be either the Classroom-assigned identifier or an alias. (required)
  courseWorkId: string, Identifier of the course work. (required)
  id: string, Identifier of the student submission. (required)
  body: object, The request body.
    The object takes the form of:

{ # 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.
  &quot;alternateLink&quot;: &quot;A String&quot;, # Absolute link to the submission in the Classroom web UI. Read-only.
  &quot;assignedGrade&quot;: 3.14, # Optional grade. If unset, no grade was set. This value must be non-negative. Decimal (that is, non-integer) values are allowed, but are rounded to two decimal places. This may be modified only by course teachers.
  &quot;assignmentSubmission&quot;: { # Student work for an assignment. # Submission content when course_work_type is ASSIGNMENT. Students can modify this content using ModifyAttachments.
    &quot;attachments&quot;: [ # 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 (for example, title) may not be.
      { # Attachment added to student assignment work. When creating attachments, setting the `form` field is not supported.
        &quot;driveFile&quot;: { # Representation of a Google Drive file. # Google Drive file attachment.
          &quot;alternateLink&quot;: &quot;A String&quot;, # URL that can be used to access the Drive item. Read-only.
          &quot;id&quot;: &quot;A String&quot;, # Drive API resource ID.
          &quot;thumbnailUrl&quot;: &quot;A String&quot;, # URL of a thumbnail image of the Drive item. Read-only.
          &quot;title&quot;: &quot;A String&quot;, # Title of the Drive item. Read-only.
        },
        &quot;form&quot;: { # Google Forms item. # Google Forms attachment.
          &quot;formUrl&quot;: &quot;A String&quot;, # URL of the form.
          &quot;responseUrl&quot;: &quot;A String&quot;, # 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.
          &quot;thumbnailUrl&quot;: &quot;A String&quot;, # URL of a thumbnail image of the Form. Read-only.
          &quot;title&quot;: &quot;A String&quot;, # Title of the Form. Read-only.
        },
        &quot;link&quot;: { # URL item. # Link attachment.
          &quot;thumbnailUrl&quot;: &quot;A String&quot;, # URL of a thumbnail image of the target URL. Read-only.
          &quot;title&quot;: &quot;A String&quot;, # Title of the target of the URL. Read-only.
          &quot;url&quot;: &quot;A String&quot;, # URL to link to. This must be a valid UTF-8 string containing between 1 and 2024 characters.
        },
        &quot;youTubeVideo&quot;: { # YouTube video item. # Youtube video attachment.
          &quot;alternateLink&quot;: &quot;A String&quot;, # URL that can be used to view the YouTube video. Read-only.
          &quot;id&quot;: &quot;A String&quot;, # YouTube API resource ID.
          &quot;thumbnailUrl&quot;: &quot;A String&quot;, # URL of a thumbnail image of the YouTube video. Read-only.
          &quot;title&quot;: &quot;A String&quot;, # Title of the YouTube video. Read-only.
        },
      },
    ],
  },
  &quot;associatedWithDeveloper&quot;: True or False, # Whether this student submission is associated with the Developer Console project making the request. See CreateCourseWork for more details. Read-only.
  &quot;courseId&quot;: &quot;A String&quot;, # Identifier of the course. Read-only.
  &quot;courseWorkId&quot;: &quot;A String&quot;, # Identifier for the course work this corresponds to. Read-only.
  &quot;courseWorkType&quot;: &quot;A String&quot;, # Type of course work this submission is for. Read-only.
  &quot;creationTime&quot;: &quot;A String&quot;, # Creation time of this submission. This may be unset if the student has not accessed this item. Read-only.
  &quot;draftGrade&quot;: 3.14, # Optional pending grade. If unset, no grade was set. This value must be non-negative. Decimal (that is, non-integer) values are allowed, but are rounded to two decimal places. This is only visible to and modifiable by course teachers.
  &quot;id&quot;: &quot;A String&quot;, # Classroom-assigned Identifier for the student submission. This is unique among submissions for the relevant course work. Read-only.
  &quot;late&quot;: True or False, # Whether this submission is late. Read-only.
  &quot;multipleChoiceSubmission&quot;: { # Student work for a multiple-choice question. # Submission content when course_work_type is MULTIPLE_CHOICE_QUESTION.
    &quot;answer&quot;: &quot;A String&quot;, # Student&#x27;s select choice.
  },
  &quot;shortAnswerSubmission&quot;: { # Student work for a short answer question. # Submission content when course_work_type is SHORT_ANSWER_QUESTION.
    &quot;answer&quot;: &quot;A String&quot;, # Student response to a short-answer question.
  },
  &quot;state&quot;: &quot;A String&quot;, # State of this submission. Read-only.
  &quot;submissionHistory&quot;: [ # The history of the submission (includes state and grade histories). Read-only.
    { # The history of the submission. This currently includes state and grade histories.
      &quot;gradeHistory&quot;: { # The history of each grade on this submission. # The grade history information of the submission, if present.
        &quot;actorUserId&quot;: &quot;A String&quot;, # The teacher who made the grade change.
        &quot;gradeChangeType&quot;: &quot;A String&quot;, # The type of grade change at this time in the submission grade history.
        &quot;gradeTimestamp&quot;: &quot;A String&quot;, # When the grade of the submission was changed.
        &quot;maxPoints&quot;: 3.14, # The denominator of the grade at this time in the submission grade history.
        &quot;pointsEarned&quot;: 3.14, # The numerator of the grade at this time in the submission grade history.
      },
      &quot;stateHistory&quot;: { # The history of each state this submission has been in. # The state history information of the submission, if present.
        &quot;actorUserId&quot;: &quot;A String&quot;, # The teacher or student who made the change.
        &quot;state&quot;: &quot;A String&quot;, # The workflow pipeline stage.
        &quot;stateTimestamp&quot;: &quot;A String&quot;, # When the submission entered this state.
      },
    },
  ],
  &quot;updateTime&quot;: &quot;A String&quot;, # Last update time of this submission. This may be unset if the student has not accessed this item. Read-only.
  &quot;userId&quot;: &quot;A String&quot;, # Identifier for the student that owns this submission. Read-only.
}

  updateMask: string, 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`
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the 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.
  &quot;alternateLink&quot;: &quot;A String&quot;, # Absolute link to the submission in the Classroom web UI. Read-only.
  &quot;assignedGrade&quot;: 3.14, # Optional grade. If unset, no grade was set. This value must be non-negative. Decimal (that is, non-integer) values are allowed, but are rounded to two decimal places. This may be modified only by course teachers.
  &quot;assignmentSubmission&quot;: { # Student work for an assignment. # Submission content when course_work_type is ASSIGNMENT. Students can modify this content using ModifyAttachments.
    &quot;attachments&quot;: [ # 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 (for example, title) may not be.
      { # Attachment added to student assignment work. When creating attachments, setting the `form` field is not supported.
        &quot;driveFile&quot;: { # Representation of a Google Drive file. # Google Drive file attachment.
          &quot;alternateLink&quot;: &quot;A String&quot;, # URL that can be used to access the Drive item. Read-only.
          &quot;id&quot;: &quot;A String&quot;, # Drive API resource ID.
          &quot;thumbnailUrl&quot;: &quot;A String&quot;, # URL of a thumbnail image of the Drive item. Read-only.
          &quot;title&quot;: &quot;A String&quot;, # Title of the Drive item. Read-only.
        },
        &quot;form&quot;: { # Google Forms item. # Google Forms attachment.
          &quot;formUrl&quot;: &quot;A String&quot;, # URL of the form.
          &quot;responseUrl&quot;: &quot;A String&quot;, # 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.
          &quot;thumbnailUrl&quot;: &quot;A String&quot;, # URL of a thumbnail image of the Form. Read-only.
          &quot;title&quot;: &quot;A String&quot;, # Title of the Form. Read-only.
        },
        &quot;link&quot;: { # URL item. # Link attachment.
          &quot;thumbnailUrl&quot;: &quot;A String&quot;, # URL of a thumbnail image of the target URL. Read-only.
          &quot;title&quot;: &quot;A String&quot;, # Title of the target of the URL. Read-only.
          &quot;url&quot;: &quot;A String&quot;, # URL to link to. This must be a valid UTF-8 string containing between 1 and 2024 characters.
        },
        &quot;youTubeVideo&quot;: { # YouTube video item. # Youtube video attachment.
          &quot;alternateLink&quot;: &quot;A String&quot;, # URL that can be used to view the YouTube video. Read-only.
          &quot;id&quot;: &quot;A String&quot;, # YouTube API resource ID.
          &quot;thumbnailUrl&quot;: &quot;A String&quot;, # URL of a thumbnail image of the YouTube video. Read-only.
          &quot;title&quot;: &quot;A String&quot;, # Title of the YouTube video. Read-only.
        },
      },
    ],
  },
  &quot;associatedWithDeveloper&quot;: True or False, # Whether this student submission is associated with the Developer Console project making the request. See CreateCourseWork for more details. Read-only.
  &quot;courseId&quot;: &quot;A String&quot;, # Identifier of the course. Read-only.
  &quot;courseWorkId&quot;: &quot;A String&quot;, # Identifier for the course work this corresponds to. Read-only.
  &quot;courseWorkType&quot;: &quot;A String&quot;, # Type of course work this submission is for. Read-only.
  &quot;creationTime&quot;: &quot;A String&quot;, # Creation time of this submission. This may be unset if the student has not accessed this item. Read-only.
  &quot;draftGrade&quot;: 3.14, # Optional pending grade. If unset, no grade was set. This value must be non-negative. Decimal (that is, non-integer) values are allowed, but are rounded to two decimal places. This is only visible to and modifiable by course teachers.
  &quot;id&quot;: &quot;A String&quot;, # Classroom-assigned Identifier for the student submission. This is unique among submissions for the relevant course work. Read-only.
  &quot;late&quot;: True or False, # Whether this submission is late. Read-only.
  &quot;multipleChoiceSubmission&quot;: { # Student work for a multiple-choice question. # Submission content when course_work_type is MULTIPLE_CHOICE_QUESTION.
    &quot;answer&quot;: &quot;A String&quot;, # Student&#x27;s select choice.
  },
  &quot;shortAnswerSubmission&quot;: { # Student work for a short answer question. # Submission content when course_work_type is SHORT_ANSWER_QUESTION.
    &quot;answer&quot;: &quot;A String&quot;, # Student response to a short-answer question.
  },
  &quot;state&quot;: &quot;A String&quot;, # State of this submission. Read-only.
  &quot;submissionHistory&quot;: [ # The history of the submission (includes state and grade histories). Read-only.
    { # The history of the submission. This currently includes state and grade histories.
      &quot;gradeHistory&quot;: { # The history of each grade on this submission. # The grade history information of the submission, if present.
        &quot;actorUserId&quot;: &quot;A String&quot;, # The teacher who made the grade change.
        &quot;gradeChangeType&quot;: &quot;A String&quot;, # The type of grade change at this time in the submission grade history.
        &quot;gradeTimestamp&quot;: &quot;A String&quot;, # When the grade of the submission was changed.
        &quot;maxPoints&quot;: 3.14, # The denominator of the grade at this time in the submission grade history.
        &quot;pointsEarned&quot;: 3.14, # The numerator of the grade at this time in the submission grade history.
      },
      &quot;stateHistory&quot;: { # The history of each state this submission has been in. # The state history information of the submission, if present.
        &quot;actorUserId&quot;: &quot;A String&quot;, # The teacher or student who made the change.
        &quot;state&quot;: &quot;A String&quot;, # The workflow pipeline stage.
        &quot;stateTimestamp&quot;: &quot;A String&quot;, # When the submission entered this state.
      },
    },
  ],
  &quot;updateTime&quot;: &quot;A String&quot;, # Last update time of this submission. This may be unset if the student has not accessed this item. Read-only.
  &quot;userId&quot;: &quot;A String&quot;, # Identifier for the student that owns this submission. Read-only.
}</pre>
</div>

<div class="method">
    <code class="details" id="reclaim">reclaim(courseId, courseWorkId, id, body=None, x__xgafv=None)</code>
  <pre>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 updates 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 [OAuth client ID](https://support.google.com/cloud/answer/6158849) 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.

Args:
  courseId: string, Identifier of the course. This identifier can be either the Classroom-assigned identifier or an alias. (required)
  courseWorkId: string, Identifier of the course work. (required)
  id: string, Identifier of the student submission. (required)
  body: object, The request body.
    The object takes the form of:

{ # Request to reclaim a student submission.
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # 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); }
}</pre>
</div>

<div class="method">
    <code class="details" id="return_">return_(courseId, courseWorkId, id, body=None, x__xgafv=None)</code>
  <pre>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 [OAuth client ID](https://support.google.com/cloud/answer/6158849) 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.

Args:
  courseId: string, Identifier of the course. This identifier can be either the Classroom-assigned identifier or an alias. (required)
  courseWorkId: string, Identifier of the course work. (required)
  id: string, Identifier of the student submission. (required)
  body: object, The request body.
    The object takes the form of:

{ # Request to return a student submission.
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # 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); }
}</pre>
</div>

<div class="method">
    <code class="details" id="turnIn">turnIn(courseId, courseWorkId, id, body=None, x__xgafv=None)</code>
  <pre>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 [OAuth client ID](https://support.google.com/cloud/answer/6158849) 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.

Args:
  courseId: string, Identifier of the course. This identifier can be either the Classroom-assigned identifier or an alias. (required)
  courseWorkId: string, Identifier of the course work. (required)
  id: string, Identifier of the student submission. (required)
  body: object, The request body.
    The object takes the form of:

{ # Request to turn in a student submission.
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # 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); }
}</pre>
</div>

</body></html>