<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.students.html">students</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="#create">create(courseId, body=None, enrollmentCode=None, x__xgafv=None)</a></code></p>
<p class="firstline">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.</p>
<p class="toc_element">
  <code><a href="#delete">delete(courseId, userId, x__xgafv=None)</a></code></p>
<p class="firstline">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.</p>
<p class="toc_element">
  <code><a href="#get">get(courseId, userId, x__xgafv=None)</a></code></p>
<p class="firstline">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.</p>
<p class="toc_element">
  <code><a href="#list">list(courseId, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">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.</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>
<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="create">create(courseId, body=None, enrollmentCode=None, x__xgafv=None)</code>
  <pre>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&#x27;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.

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

{ # Student in a course.
  &quot;courseId&quot;: &quot;A String&quot;, # Identifier of the course. Read-only.
  &quot;profile&quot;: { # Global information for a user. # Global user information for the student. Read-only.
    &quot;emailAddress&quot;: &quot;A String&quot;, # Email address of the user. Read-only.
    &quot;id&quot;: &quot;A String&quot;, # Identifier of the user. Read-only.
    &quot;name&quot;: { # Details of the user&#x27;s name. # Name of the user. Read-only.
      &quot;familyName&quot;: &quot;A String&quot;, # The user&#x27;s last name. Read-only.
      &quot;fullName&quot;: &quot;A String&quot;, # The user&#x27;s full name formed by concatenating the first and last name values. Read-only.
      &quot;givenName&quot;: &quot;A String&quot;, # The user&#x27;s first name. Read-only.
    },
    &quot;permissions&quot;: [ # Global permissions of the user. Read-only.
      { # Global user permission description.
        &quot;permission&quot;: &quot;A String&quot;, # Permission value.
      },
    ],
    &quot;photoUrl&quot;: &quot;A String&quot;, # URL of user&#x27;s profile photo. Read-only.
    &quot;verifiedTeacher&quot;: True or False, # Represents whether a G Suite for Education user&#x27;s domain administrator has explicitly verified them as being a teacher. If the user is not a member of a G Suite for Education domain, than this field is always false. Read-only
  },
  &quot;studentWorkFolder&quot;: { # Representation of a Google Drive folder. # Information about a Drive Folder for this student&#x27;s work in this course. Only visible to the student and domain administrators. Read-only.
    &quot;alternateLink&quot;: &quot;A String&quot;, # URL that can be used to access the Drive folder. Read-only.
    &quot;id&quot;: &quot;A String&quot;, # Drive API resource ID.
    &quot;title&quot;: &quot;A String&quot;, # Title of the Drive folder. Read-only.
  },
  &quot;userId&quot;: &quot;A String&quot;, # 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 `&quot;me&quot;`, indicating the requesting user
}

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

Returns:
  An object of the form:

    { # Student in a course.
  &quot;courseId&quot;: &quot;A String&quot;, # Identifier of the course. Read-only.
  &quot;profile&quot;: { # Global information for a user. # Global user information for the student. Read-only.
    &quot;emailAddress&quot;: &quot;A String&quot;, # Email address of the user. Read-only.
    &quot;id&quot;: &quot;A String&quot;, # Identifier of the user. Read-only.
    &quot;name&quot;: { # Details of the user&#x27;s name. # Name of the user. Read-only.
      &quot;familyName&quot;: &quot;A String&quot;, # The user&#x27;s last name. Read-only.
      &quot;fullName&quot;: &quot;A String&quot;, # The user&#x27;s full name formed by concatenating the first and last name values. Read-only.
      &quot;givenName&quot;: &quot;A String&quot;, # The user&#x27;s first name. Read-only.
    },
    &quot;permissions&quot;: [ # Global permissions of the user. Read-only.
      { # Global user permission description.
        &quot;permission&quot;: &quot;A String&quot;, # Permission value.
      },
    ],
    &quot;photoUrl&quot;: &quot;A String&quot;, # URL of user&#x27;s profile photo. Read-only.
    &quot;verifiedTeacher&quot;: True or False, # Represents whether a G Suite for Education user&#x27;s domain administrator has explicitly verified them as being a teacher. If the user is not a member of a G Suite for Education domain, than this field is always false. Read-only
  },
  &quot;studentWorkFolder&quot;: { # Representation of a Google Drive folder. # Information about a Drive Folder for this student&#x27;s work in this course. Only visible to the student and domain administrators. Read-only.
    &quot;alternateLink&quot;: &quot;A String&quot;, # URL that can be used to access the Drive folder. Read-only.
    &quot;id&quot;: &quot;A String&quot;, # Drive API resource ID.
    &quot;title&quot;: &quot;A String&quot;, # Title of the Drive folder. Read-only.
  },
  &quot;userId&quot;: &quot;A String&quot;, # 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 `&quot;me&quot;`, indicating the requesting user
}</pre>
</div>

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

Args:
  courseId: string, Identifier of the course. This identifier can be either the Classroom-assigned identifier or an alias. (required)
  userId: string, 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 `&quot;me&quot;`, indicating the requesting user (required)
  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); } The JSON representation for `Empty` is empty JSON object `{}`.
}</pre>
</div>

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

Args:
  courseId: string, Identifier of the course. This identifier can be either the Classroom-assigned identifier or an alias. (required)
  userId: string, 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 `&quot;me&quot;`, indicating the requesting user (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Student in a course.
  &quot;courseId&quot;: &quot;A String&quot;, # Identifier of the course. Read-only.
  &quot;profile&quot;: { # Global information for a user. # Global user information for the student. Read-only.
    &quot;emailAddress&quot;: &quot;A String&quot;, # Email address of the user. Read-only.
    &quot;id&quot;: &quot;A String&quot;, # Identifier of the user. Read-only.
    &quot;name&quot;: { # Details of the user&#x27;s name. # Name of the user. Read-only.
      &quot;familyName&quot;: &quot;A String&quot;, # The user&#x27;s last name. Read-only.
      &quot;fullName&quot;: &quot;A String&quot;, # The user&#x27;s full name formed by concatenating the first and last name values. Read-only.
      &quot;givenName&quot;: &quot;A String&quot;, # The user&#x27;s first name. Read-only.
    },
    &quot;permissions&quot;: [ # Global permissions of the user. Read-only.
      { # Global user permission description.
        &quot;permission&quot;: &quot;A String&quot;, # Permission value.
      },
    ],
    &quot;photoUrl&quot;: &quot;A String&quot;, # URL of user&#x27;s profile photo. Read-only.
    &quot;verifiedTeacher&quot;: True or False, # Represents whether a G Suite for Education user&#x27;s domain administrator has explicitly verified them as being a teacher. If the user is not a member of a G Suite for Education domain, than this field is always false. Read-only
  },
  &quot;studentWorkFolder&quot;: { # Representation of a Google Drive folder. # Information about a Drive Folder for this student&#x27;s work in this course. Only visible to the student and domain administrators. Read-only.
    &quot;alternateLink&quot;: &quot;A String&quot;, # URL that can be used to access the Drive folder. Read-only.
    &quot;id&quot;: &quot;A String&quot;, # Drive API resource ID.
    &quot;title&quot;: &quot;A String&quot;, # Title of the Drive folder. Read-only.
  },
  &quot;userId&quot;: &quot;A String&quot;, # 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 `&quot;me&quot;`, indicating the requesting user
}</pre>
</div>

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

Args:
  courseId: string, Identifier of the course. This identifier can be either the Classroom-assigned identifier or an alias. (required)
  pageSize: integer, Maximum number of items to return. The default is 30 if unspecified or `0`. 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.
  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 students.
  &quot;nextPageToken&quot;: &quot;A String&quot;, # Token identifying the next page of results to return. If empty, no further results are available.
  &quot;students&quot;: [ # Students who match the list request.
    { # Student in a course.
      &quot;courseId&quot;: &quot;A String&quot;, # Identifier of the course. Read-only.
      &quot;profile&quot;: { # Global information for a user. # Global user information for the student. Read-only.
        &quot;emailAddress&quot;: &quot;A String&quot;, # Email address of the user. Read-only.
        &quot;id&quot;: &quot;A String&quot;, # Identifier of the user. Read-only.
        &quot;name&quot;: { # Details of the user&#x27;s name. # Name of the user. Read-only.
          &quot;familyName&quot;: &quot;A String&quot;, # The user&#x27;s last name. Read-only.
          &quot;fullName&quot;: &quot;A String&quot;, # The user&#x27;s full name formed by concatenating the first and last name values. Read-only.
          &quot;givenName&quot;: &quot;A String&quot;, # The user&#x27;s first name. Read-only.
        },
        &quot;permissions&quot;: [ # Global permissions of the user. Read-only.
          { # Global user permission description.
            &quot;permission&quot;: &quot;A String&quot;, # Permission value.
          },
        ],
        &quot;photoUrl&quot;: &quot;A String&quot;, # URL of user&#x27;s profile photo. Read-only.
        &quot;verifiedTeacher&quot;: True or False, # Represents whether a G Suite for Education user&#x27;s domain administrator has explicitly verified them as being a teacher. If the user is not a member of a G Suite for Education domain, than this field is always false. Read-only
      },
      &quot;studentWorkFolder&quot;: { # Representation of a Google Drive folder. # Information about a Drive Folder for this student&#x27;s work in this course. Only visible to the student and domain administrators. Read-only.
        &quot;alternateLink&quot;: &quot;A String&quot;, # URL that can be used to access the Drive folder. Read-only.
        &quot;id&quot;: &quot;A String&quot;, # Drive API resource ID.
        &quot;title&quot;: &quot;A String&quot;, # Title of the Drive folder. Read-only.
      },
      &quot;userId&quot;: &quot;A String&quot;, # 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 `&quot;me&quot;`, indicating the requesting user
    },
  ],
}</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>

</body></html>