MewCP LogoAStheTech
MCPsBlogsPricingDocsLogin
MewCP Logo

Infrastructure You Can Trust for Agentic Products

X

Categories

  • Productivity & Docs
  • Developer Tools
  • CRM & Sales
  • Finance & Commerce
  • Data & Analytics
  • Marketing & SEO
  • Search & Web
  • Communication
  • View All Servers →

Resources

  • Blog
  • Docs
  • Privacy Policy
  • Terms of Service

Blogs

  • View All Blogs →
Browse Servers|Pricing|Contact

Browse by Category

Productivity & Docs

  • Gmail
  • Google Drive
  • YouTube
  • Google Calendar
  • Google People
  • Google Classroom
  • Notion
  • ClickUp
  • Figma

Developer Tools

  • Gemini
  • Veo
  • ClickUp
  • Firecrawl
  • Vercel
  • Apify
  • Github
  • Chef
  • Scientific Calculator
  • Figma
  • HTTP
  • Perplexity

CRM & Sales

  • Google People

Finance & Commerce

  • Kite
  • Razorpay
  • Polymarket
  • Stripe
  • Binance

Marketing & SEO

  • YouTube
  • Google Business
  • Mailchimp

Search & Web

  • Web Scrapper
  • Firecrawl
  • Apify
  • Perplexity

Communication

  • Gmail
  • Google Meet
  • Google Calendar
  • Mailchimp
  • WhatsApp
  • Slack

© 2026 MewCP. All rights reserved.

Google Classroom

Google Classroom

v1.0.09 callsOAuthGitHub
Open in ChatGPTChatGPT
Open in ClaudeClaude

Documentation

Guide

Connect

Gateway URL

https://gateway.mewcp.com/google-classroom/mcp

Integrations

Click a client to view its config snippet and setup steps. Use for a guided setup with your MewCP key pre-filled.

Help Improve This Server

Missing a tool?

Found a bug?

Have an idea for an improvement?

Share your feedback directly with the maintainers - every feedback helps make this server better for everyone.

Open GitHub Issues →

Manage Google Classroom courses, assignments, and students with Agents.

A Model Context Protocol (MCP) server that exposes Google Classroom's API for managing courses, coursework, announcements, rosters, submissions, and guardians.

Overview

The Google Classroom MCP Server provides full lifecycle management of your Google Classroom environment:

  • Create and manage courses, topics, announcements, and coursework
  • Manage student and teacher rosters, invitations, and guardian links
  • Read and grade student submissions

Perfect for:

  • Educators automating course setup and content distribution
  • Administrators managing rosters and guardian communications at scale
  • Developers building learning management integrations on top of Google Classroom

Tools

Courses

Returns a list of courses the requesting user is permitted to view, optionally filtered by student, teacher, or course state.

Inputs:

- `student_id`     (string, optional)  — Restrict to courses with this student
- `teacher_id`     (string, optional)  — Restrict to courses with this teacher
- `course_states`  (string, optional)  — Restrict to courses in these states (e.g. ACTIVE, ARCHIVED)
- `page_size`      (integer, optional) — Maximum number of courses to return
- `page_token`     (string, optional)  — Token for the next page of results

output:

{
  "courses": [
    {
      "id": "123456789",
      "name": "Introduction to Python",
      "section": "Period 1",
      "ownerId": "987654321",
      "courseState": "ACTIVE",
      "enrollmentCode": "abc123",
      "updateTime": "2025-01-15T10:00:00.000Z"
    }
  ],
  "nextPageToken"

Returns a course by its identifier.

Inputs:

- `id` (string, required) — Identifier of the course

output:

{
  "id": "123456789",
  "name": "Introduction to Python",
  "section": "Period 1",
  "ownerId": "987654321",
  "courseState": "ACTIVE",


Creates a new course. The requesting user becomes the owner.

Inputs:

- `body` (string, required) — JSON string representing the Course object to create

output:

{
  "id": "123456789",
  "name": "Introduction to Python",
  "section": "Period 1",
  "ownerId": "987654321",
  "courseState": "PROVISIONED"


Replaces all fields of a course with the provided values.

Inputs:

- `id`   (string, required) — Identifier of the course to update
- `body` (string, required) — JSON string representing the updated Course object

output:

{
  "id": "123456789",
  "name": "Advanced Python",
  "section": "Period 2",
  "ownerId": "987654321",


Updates only the fields specified in update_mask.

Inputs:

- `id`           (string, required) — Identifier of the course to patch
- `update_mask`  (string, required) — Comma-separated list of fields to update (e.g. name,section)
- `body`         (string, required) — JSON string with the fields to update

output:

{
  "id": "123456789",
  "name": "Advanced Python",
  "section"



Permanently deletes a course. Only course owners may delete a course.

Inputs:

- `id` (string, required) — Identifier of the course to delete

output:

{}

Course Aliases

Creates an alias for a course so it can be referenced by an alternative identifier.

Inputs:

- `course_id` (string, required) — Identifier of the course
- `body`      (string, required) — JSON string representing the CourseAlias object

output:

{
  "alias": "d:intro-python-2025"
}

Returns all aliases for a course.

Inputs:

- `course_id`   (string, required)  — Identifier of the course
- `page_size`   (integer, optional) — Maximum number of aliases to return
- `page_token`  (string, optional)  — Token for the next page of results

output:

{
  "aliases": [
    { "alias": "d:intro-python-2025" },
    { "alias": "d:py101" }
  ]

Removes an alias from a course.

Inputs:

- `course_id` (string, required) — Identifier of the course
- `alias`     (string, required) — The alias to delete

output:

{}

Announcements

Posts a new announcement to a course.

Inputs:

- `course_id` (string, required) — Identifier of the course
- `body`      (string, required) — JSON string representing the Announcement object

output:

{
  "id": "111222333",
  "courseId": "123456789",
  "text": "Welcome to the course! Please review the syllabus.",
  "state": "PUBLISHED",


Returns announcements in a course, optionally filtered by state.

Inputs:

- `course_id`            (string, required)  — Identifier of the course
- `announcement_states`  (string, optional)  — Filter by state (PUBLISHED, DRAFT, DELETED)
- `order_by`             (string, optional)  — Sort order (e.g. updateTime desc)
- `page_size`            (integer, optional) — Maximum number of results
- `page_token`           (string, optional)  — Token for the next page

output:

{
  "announcements": [
    {
      "id": "111222333"







Returns a single announcement.

Inputs:

- `course_id` (string, required) — Identifier of the course
- `id`        (string, required) — Identifier of the announcement

output:

{
  "id": "111222333",
  "courseId": "123456789",
  "text": "Welcome to the course! Please review the syllabus.",
  "state": "PUBLISHED",


Updates only the fields specified in update_mask.

Inputs:

- `course_id`    (string, required) — Identifier of the course
- `id`           (string, required) — Identifier of the announcement
- `update_mask`  (string, required) — Fields to update (e.g. text,state)
- `body`         (string, required) — JSON string with updated fields

output:

{
  "id": "111222333",
  "courseId": "123456789"



Deletes an announcement. Only draft announcements may be deleted; published announcements must be archived first.

Inputs:

- `course_id` (string, required) — Identifier of the course
- `id`        (string, required) — Identifier of the announcement

output:

{}

Changes which students an announcement is assigned to.

Inputs:

- `course_id` (string, required) — Identifier of the course
- `id`        (string, required) — Identifier of the announcement
- `body`      (string, required) — JSON string with assignee mode and student IDs

output:

{
  "id": "111222333",
  "courseId": "123456789",
  "text": "Welcome to the course!",
  "state"





Course Work

Creates an assignment, short-answer question, or multiple-choice question in a course.

Inputs:

- `course_id` (string, required) — Identifier of the course
- `body`      (string, required) — JSON string representing the CourseWork object

output:

{
  "id": "222333444",
  "courseId": "123456789",
  "title": "Assignment 1: Hello World",
  "description": "Write your first Python program."






Returns coursework items in a course, optionally filtered by state.

Inputs:

- `course_id`           (string, required)  — Identifier of the course
- `course_work_states`  (string, optional)  — Filter by state (PUBLISHED, DRAFT, DELETED)
- `order_by`            (string, optional)  — Sort order (e.g. updateTime desc)
- `page_size`           (integer, optional) — Maximum number of results
- `page_token`          (string, optional)  — Token for the next page

output:

{
  "courseWork": [
    {
      "id": "222333444"









Returns a single coursework item.

Inputs:

- `course_id` (string, required) — Identifier of the course
- `id`        (string, required) — Identifier of the coursework item

output:

{
  "id": "222333444",
  "courseId": "123456789",
  "title": "Assignment 1: Hello World",
  "workType": "ASSIGNMENT",
  "state"



Updates only the fields specified in update_mask.

Inputs:

- `course_id`    (string, required) — Identifier of the course
- `id`           (string, required) — Identifier of the coursework item
- `update_mask`  (string, required) — Fields to update (e.g. title,maxPoints)
- `body`         (string, required) — JSON string with updated fields

output:

{
  "id": "222333444",
  "courseId": "123456789"





Deletes a coursework item.

Inputs:

- `course_id` (string, required) — Identifier of the course
- `id`        (string, required) — Identifier of the coursework item

output:

{}

Changes which students a coursework item is assigned to.

Inputs:

- `course_id` (string, required) — Identifier of the course
- `id`        (string, required) — Identifier of the coursework item
- `body`      (string, required) — JSON string with assignee mode and student IDs

output:

{
  "id": "222333444",
  "courseId": "123456789",
  "title": "Assignment 1: Hello World",






Student Submissions

Returns submissions for a coursework item, optionally filtered by user or state.

Inputs:

- `course_id`       (string, required)  — Identifier of the course
- `course_work_id`  (string, required)  — Identifier of the coursework item (use `-` for all)
- `user_id`         (string, optional)  — Restrict to submissions by this student
- `states`          (string, optional)  — Filter by state (TURNED_IN, RETURNED, CREATED)
- `page_size`       (integer, optional) — Maximum number of results
- `page_token`      (string, optional)  — Token for the next page

output:

{
  "studentSubmissions": [












Returns a single student submission.

Inputs:

- `course_id`       (string, required) — Identifier of the course
- `course_work_id`  (string, required) — Identifier of the coursework item
- `id`              (string, required) — Identifier of the submission

output:

{
  "id": "333444555",
  "courseId": "123456789",
  "courseWorkId": "222333444",
  "userId"




Updates fields on a submission, such as the assigned grade. Only certain fields may be updated by students or teachers.

Inputs:

- `course_id`       (string, required) — Identifier of the course
- `course_work_id`  (string, required) — Identifier of the coursework item
- `id`              (string, required) — Identifier of the submission
- `update_mask`     (string, required) — Fields to update (e.g. assignedGrade,draftGrade)
- `body`            (string, required) — JSON string with updated fields

output:

{
  "id": "333444555",
  "courseId"






Returns a turned-in submission to the student. The submission state changes to RETURNED.

Inputs:

- `course_id`       (string, required) — Identifier of the course
- `course_work_id`  (string, required) — Identifier of the coursework item
- `id`              (string, required) — Identifier of the submission

output:

{}

Allows a student to reclaim a turned-in submission for further editing. The submission state changes back to NEW.

Inputs:

- `course_id`       (string, required) — Identifier of the course
- `course_work_id`  (string, required) — Identifier of the coursework item
- `id`              (string, required) — Identifier of the submission

output:

{}

Course Work Materials

Creates a material resource (document, video, link, etc.) in a course.

Inputs:

- `course_id` (string, required) — Identifier of the course
- `body`      (string, required) — JSON string representing the CourseWorkMaterial object

output:

{
  "id": "444555666",
  "courseId": "123456789",
  "title": "Week 1 Reading: Python Basics",
  "description": "Required reading for Week 1."



Returns materials in a course, optionally filtered by Drive item or URL.

Inputs:

- `course_id`          (string, required)  — Identifier of the course
- `material_drive_id`  (string, optional)  — Filter by Google Drive item ID
- `material_link`      (string, optional)  — Filter by material URL
- `page_size`          (integer, optional) — Maximum number of results
- `page_token`         (string, optional)  — Token for the next page

output:

{
  "courseWorkMaterial": [
    {
      "id": "444555666"







Returns a single course material.

Inputs:

- `course_id` (string, required) — Identifier of the course
- `id`        (string, required) — Identifier of the material

output:

{
  "id": "444555666",
  "courseId": "123456789",
  "title": "Week 1 Reading: Python Basics",
  "description": "Required reading for Week 1.",


Updates only the fields specified in update_mask.

Inputs:

- `course_id`    (string, required) — Identifier of the course
- `id`           (string, required) — Identifier of the material
- `update_mask`  (string, required) — Fields to update (e.g. title,description)
- `body`         (string, required) — JSON string with updated fields

output:

{
  "id": "444555666",
  "courseId": "123456789"



Deletes a course material.

Inputs:

- `course_id` (string, required) — Identifier of the course
- `id`        (string, required) — Identifier of the material to delete

output:

{}

Students

Adds a user as a student of a course using an enrollment code.

Inputs:

- `course_id`        (string, required) — Identifier of the course
- `enrollment_code`  (string, required) — Enrollment code of the course
- `body`             (string, required) — JSON string representing the Student object

output:

{
  "courseId": "123456789",
  "userId": "555111",
  "profile": {
    "id": "555111"



Returns all students enrolled in a course.

Inputs:

- `course_id`   (string, required)  — Identifier of the course
- `page_size`   (integer, optional) — Maximum number of results
- `page_token`  (string, optional)  — Token for the next page

output:

{
  "students": [
    {
      "courseId": "123456789",
      "userId": "555111",
      "profile": {







Returns a specific student in a course.

Inputs:

- `course_id` (string, required) — Identifier of the course
- `user_id`   (string, required) — Identifier of the student

output:

{
  "courseId": "123456789",
  "userId": "555111",
  "profile": {
    "id": "555111",
    "name": { "givenName"


Removes a student from a course.

Inputs:

- `course_id` (string, required) — Identifier of the course
- `user_id`   (string, required) — Identifier of the student to remove

output:

{}

Teachers

Adds a user as a co-teacher of a course.

Inputs:

- `course_id` (string, required) — Identifier of the course
- `body`      (string, required) — JSON string representing the Teacher object

output:

{
  "courseId": "123456789",
  "userId": "666111",
  "profile": {
    "id": "666111",
    "name": { "fullName"


Returns all teachers of a course.

Inputs:

- `course_id`   (string, required)  — Identifier of the course
- `page_size`   (integer, optional) — Maximum number of results
- `page_token`  (string, optional)  — Token for the next page

output:

{
  "teachers": [
    {
      "courseId": "123456789",
      "userId": "666111",
      "profile": {







Returns a specific teacher of a course.

Inputs:

- `course_id` (string, required) — Identifier of the course
- `user_id`   (string, required) — Identifier of the teacher

output:

{
  "courseId": "123456789",
  "userId": "666111",
  "profile": {
    "id": "666111",
    "name": { "givenName"


Removes a teacher from a course.

Inputs:

- `course_id` (string, required) — Identifier of the course
- `user_id`   (string, required) — Identifier of the teacher to remove

output:

{}

Topics

Creates a topic in a course to organize coursework and materials.

Inputs:

- `course_id` (string, required) — Identifier of the course
- `body`      (string, required) — JSON string representing the Topic object

output:

{
  "courseId": "123456789",
  "topicId": "777888999",
  "name": "Unit 1: Variables and Data Types",
  "updateTime": "2025-01-15T10:00:00.000Z"
}

Returns all topics in a course.

Inputs:

- `course_id`   (string, required)  — Identifier of the course
- `page_size`   (integer, optional) — Maximum number of results
- `page_token`  (string, optional)  — Token for the next page

output:

{
  "topic": [
    {
      "courseId": "123456789",
      "topicId": "777888999",
      "name": "Unit 1: Variables and Data Types"




Returns a single topic.

Inputs:

- `course_id` (string, required) — Identifier of the course
- `id`        (string, required) — Identifier of the topic

output:

{
  "courseId": "123456789",
  "topicId": "777888999",
  "name": "Unit 1: Variables and Data Types",
  "updateTime": "2025-01-15T10:00:00.000Z"
}

Updates only the fields specified in update_mask.

Inputs:

- `course_id`    (string, required) — Identifier of the course
- `id`           (string, required) — Identifier of the topic
- `update_mask`  (string, required) — Fields to update (e.g. name)
- `body`         (string, required) — JSON string with updated fields

output:

{
  "courseId": "123456789",
  "topicId": "777888999",


Deletes a topic from a course.

Inputs:

- `course_id` (string, required) — Identifier of the course
- `id`        (string, required) — Identifier of the topic to delete

output:

{}

Invitations

Creates an invitation and sends an email asking the user to join a course as a student or teacher.

Inputs:

- `body` (string, required) — JSON string representing the Invitation object (userId, courseId, role)

output:

{
  "id": "888999111",
  "userId": "555222",
  "courseId": "123456789",
  "role": "STUDENT"
}

Returns pending invitations, optionally filtered by user or course.

Inputs:

- `user_id`     (string, optional)  — Restrict to invitations for this user
- `course_id`   (string, optional)  — Restrict to invitations for this course
- `page_size`   (integer, optional) — Maximum number of results
- `page_token`  (string, optional)  — Token for the next page

output:

{
  "invitations": [
    {
      "id": "888999111",
      "userId": "555222"





Returns a specific invitation.

Inputs:

- `id` (string, required) — Identifier of the invitation

output:

{
  "id": "888999111",
  "userId": "555222",
  "courseId": "123456789",
  "role": "STUDENT"
}

Deletes a pending invitation.

Inputs:

- `id` (string, required) — Identifier of the invitation to delete

output:

{}

Accepts an invitation, adding the invited user to the course as a student or teacher and removing the invitation.

Inputs:

- `id` (string, required) — Identifier of the invitation to accept

output:

{}

Registrations

Registers a Cloud Pub/Sub feed to receive Classroom push notifications.

Inputs:

- `body` (string, required) — JSON string representing the Registration object (feed, cloudPubsubTopic)

output:

{
  "registrationId": "999111222",
  "feed": {
    "feedType": "COURSE_ROSTER_CHANGES",
    "courseRosterChangesInfo": { "courseId": "123456789" }
  },




Deletes a push notification registration.

Inputs:

- `registration_id` (string, required) — Identifier of the registration to delete

output:

{}

User Profiles

Returns the profile of a user in the context of the authenticated user's courses.

Inputs:

- `user_id` (string, required) — Identifier of the user (or `me` for the authenticated user)

output:

{
  "id": "987654321",
  "name": {
    "givenName": "John",
    "familyName": "Doe",
    "fullName": "John Doe"
  },


Guardians

Sends an email invitation to a guardian asking them to confirm their relationship to a student.

Inputs:

- `student_id` (string, required) — Identifier of the student
- `body`       (string, required) — JSON string with the guardian's email address

output:

{
  "studentId": "555111",
  "invitationId": "aaa111bbb",
  "invitedEmailAddress": "parent@email.com",
  "state": "PENDING"

Returns a specific guardian invitation.

Inputs:

- `student_id`     (string, required) — Identifier of the student
- `invitation_id`  (string, required) — Identifier of the guardian invitation

output:

{
  "studentId": "555111",
  "invitationId": "aaa111bbb",
  "invitedEmailAddress": "parent@email.com",
  "state": "PENDING",

Updates a guardian invitation (e.g. cancel it by setting state to COMPLETE).

Inputs:

- `student_id`     (string, required) — Identifier of the student
- `invitation_id`  (string, required) — Identifier of the guardian invitation
- `update_mask`    (string, required) — Fields to update (e.g. state)
- `body`           (string, required) — JSON string with updated fields

output:

{
  "studentId": "555111",
  "invitationId": "aaa111bbb",
  "invitedEmailAddress"


Returns all confirmed guardians for a student.

Inputs:

- `student_id`             (string, required)  — Identifier of the student
- `invited_email_address`  (string, optional)  — Filter by guardian email address
- `page_size`              (integer, optional) — Maximum number of results
- `page_token`             (string, optional)  — Token for the next page

output:

{
  "guardians": [
    {
      "studentId": "555111",
      "guardianId": 









Returns a specific confirmed guardian for a student.

Inputs:

- `student_id`   (string, required) — Identifier of the student
- `guardian_id`  (string, required) — Identifier of the guardian

output:

{
  "studentId": "555111",
  "guardianId": "bbb222ccc",
  "invitedEmailAddress": "parent@email.com",
  "guardianProfile": {
    "id": 



Removes a guardian from a student, revoking their access to student progress emails.

Inputs:

- `student_id`   (string, required) — Identifier of the student
- `guardian_id`  (string, required) — Identifier of the guardian to remove

output:

{}

API Parameters Reference

  • page_size — Maximum number of items to return in a single response. The server may return fewer.
  • page_token — Token from a previous response's nextPageToken field. Pass it to retrieve the next page of results.
  • update_mask — Comma-separated list of field paths to update in a PATCH call. Only the listed fields are changed; omitted fields are left as-is.

Course ID:

numeric string assigned by Classroom, or an alias prefixed with "d:"
Example: 123456789  or  d:intro-python-2025

user ID:

numeric Google user ID, email address, or the literal "me" for the authenticated user
Example: 987654321  or  student@school.edu  or  me

coursework ID:



Troubleshooting

  • Cause: OAuth token not provided in request headers or incorrect format
  • Solution:
    1. Verify Authorization: Bearer YOUR_TOKEN and X-Mewcp-Credential-Id: CREDENTIAL-ID headers are present
    2. Check that your Google credential is active in your MewCP account
  • Cause: API calls have exceeded your request limits
  • Solution:
    1. Check credit usage in your Curious Layer dashboard
    2. Upgrade to a paid plan or add credits for higher limits
    3. Contact support for credit adjustments
  • Cause: No Google Classroom credential linked to your account
  • Solution:
    1. Go to Credentials in your MewCP dashboard
    2. Connect your Google account via OAuth
    3. Retry the request with the correct X-Mewcp-Credential-Id header
  • Cause: JSON payload passed to a body parameter is invalid or missing required fields
  • Solution:
    1. Validate JSON syntax before sending
    2. Ensure all required fields for the resource type are included
    3. Check parameter types match the Google Classroom API schema
  • Cause: Incorrect server name in the API endpoint
  • Solution:
    1. Verify endpoint format: {server-name}/mcp/{tool-name}
    2. Use correct server name from documentation
    3. Check available servers in your Curious Layer account
  • Cause: Upstream Google Classroom API returned an error (e.g. 403 Forbidden, 404 Not Found)
  • Solution:
    1. Check the Google Workspace Status Dashboard for outages
    2. Verify your Google account has the required role (teacher/admin) for the operation
    3. Ensure the requested course or resource exists and you have access to it

  • Google Classroom API Documentation — Official getting started guide
  • Google Classroom API Reference — Complete endpoint reference
  • FastMCP Docs — FastMCP specification
  • FastMCP Credentials — Credential handling package
:
"token_for_next_page"
}
"enrollmentCode": "abc123",
"updateTime": "2025-01-15T10:00:00.000Z"
}
,
"enrollmentCode": "abc123",
"updateTime": "2025-01-15T10:00:00.000Z"
}
"courseState"
:
"ACTIVE"
,
"updateTime": "2025-01-16T09:00:00.000Z"
}
:
"Period 1"
,
"ownerId": "987654321",
"courseState": "ACTIVE",
"updateTime": "2025-01-16T09:00:00.000Z"
}
}
"updateTime": "2025-01-15T10:00:00.000Z",
"creationTime": "2025-01-15T10:00:00.000Z"
}
,
"courseId": "123456789",
"text": "Welcome to the course!",
"state": "PUBLISHED",
"updateTime": "2025-01-15T10:00:00.000Z"
}
],
"nextPageToken": "token_for_next_page"
}
"updateTime"
:
"2025-01-15T10:00:00.000Z"
,
"creationTime": "2025-01-15T10:00:00.000Z"
}
,
"text": "Updated announcement text.",
"state": "PUBLISHED",
"updateTime": "2025-01-16T09:00:00.000Z"
}
:
"PUBLISHED"
,
"assigneeMode": "INDIVIDUAL_STUDENTS",
"individualStudentsOptions": {
"studentIds": ["555111", "555222"]
},
"updateTime": "2025-01-16T09:00:00.000Z"
}
,
"workType": "ASSIGNMENT",
"state": "PUBLISHED",
"maxPoints": 100,
"dueDate": { "year": 2025, "month": 2, "day": 1 },
"dueTime": { "hours": 23, "minutes": 59 },
"updateTime": "2025-01-15T10:00:00.000Z"
}
,
"courseId": "123456789",
"title": "Assignment 1: Hello World",
"workType": "ASSIGNMENT",
"state": "PUBLISHED",
"maxPoints": 100,
"updateTime": "2025-01-15T10:00:00.000Z"
}
],
"nextPageToken": "token_for_next_page"
}
:
"PUBLISHED"
,
"maxPoints": 100,
"dueDate": { "year": 2025, "month": 2, "day": 1 },
"updateTime": "2025-01-15T10:00:00.000Z"
}
,
"title": "Assignment 1: Hello World (Updated)",
"workType": "ASSIGNMENT",
"state": "PUBLISHED",
"maxPoints": 50,
"updateTime": "2025-01-16T09:00:00.000Z"
}
"workType"
:
"ASSIGNMENT"
,
"assigneeMode": "INDIVIDUAL_STUDENTS",
"individualStudentsOptions": {
"studentIds": ["555111", "555222"]
},
"updateTime": "2025-01-16T09:00:00.000Z"
}
{
"id": "333444555",
"courseId": "123456789",
"courseWorkId": "222333444",
"userId": "555111",
"state": "TURNED_IN",
"assignedGrade": 95,
"late": false,
"updateTime": "2025-01-31T22:00:00.000Z"
}
],
"nextPageToken": "token_for_next_page"
}
:
"555111"
,
"state": "TURNED_IN",
"assignedGrade": 95,
"late": false,
"updateTime": "2025-01-31T22:00:00.000Z"
}
:
"123456789"
,
"courseWorkId": "222333444",
"userId": "555111",
"state": "RETURNED",
"assignedGrade": 95,
"draftGrade": 95,
"updateTime": "2025-02-02T09:00:00.000Z"
}
,
"state": "PUBLISHED",
"updateTime": "2025-01-15T10:00:00.000Z",
"creationTime": "2025-01-15T10:00:00.000Z"
}
,
"courseId": "123456789",
"title": "Week 1 Reading: Python Basics",
"state": "PUBLISHED",
"updateTime": "2025-01-15T10:00:00.000Z"
}
],
"nextPageToken": "token_for_next_page"
}
"state"
:
"PUBLISHED"
,
"updateTime": "2025-01-15T10:00:00.000Z"
}
,
"title": "Week 1 Reading: Python Basics (Updated)",
"state": "PUBLISHED",
"updateTime": "2025-01-16T09:00:00.000Z"
}
,
"name": { "fullName": "Jane Smith" },
"emailAddress": "jane.smith@school.edu"
}
}
"id"
:
"555111"
,
"name": { "fullName": "Jane Smith" },
"emailAddress": "jane.smith@school.edu"
}
}
],
"nextPageToken": "token_for_next_page"
}
:
"Jane"
,
"familyName"
:
"Smith"
,
"fullName"
:
"Jane Smith"
},
"emailAddress": "jane.smith@school.edu"
}
}
:
"Prof. Jones"
},
"emailAddress": "jones@school.edu"
}
}
"id"
:
"666111"
,
"name": { "fullName": "Prof. Jones" },
"emailAddress": "jones@school.edu"
}
}
],
"nextPageToken": "token_for_next_page"
}
:
"Robert"
,
"familyName"
:
"Jones"
,
"fullName"
:
"Prof. Jones"
},
"emailAddress": "jones@school.edu"
}
}
,
"updateTime": "2025-01-15T10:00:00.000Z"
}
],
"nextPageToken": "token_for_next_page"
}
"name": "Unit 1: Introduction to Python",
"updateTime": "2025-01-16T09:00:00.000Z"
}
,
"courseId": "123456789",
"role": "STUDENT"
}
],
"nextPageToken": "token_for_next_page"
}
"cloudPubsubTopic": {
"topicName": "projects/my-project/topics/classroom-notifications"
},
"expiryTime": "2025-02-15T10:00:00.000Z"
}
"emailAddress": "john.doe@school.edu",
"photoUrl": "https://lh3.googleusercontent.com/a/photo"
}
,
"creationTime": "2025-01-15T10:00:00.000Z"
}
"creationTime": "2025-01-15T10:00:00.000Z"
}
:
"parent@email.com"
,
"state": "COMPLETE",
"creationTime": "2025-01-15T10:00:00.000Z"
}
"bbb222ccc"
,
"invitedEmailAddress": "parent@email.com",
"guardianProfile": {
"id": "bbb222ccc",
"name": { "fullName": "Jane Parent" },
"emailAddress": "parent@email.com"
}
}
],
"nextPageToken": "token_for_next_page"
}
"bbb222ccc"
,
"name": { "givenName": "Jane", "familyName": "Parent", "fullName": "Jane Parent" },
"emailAddress": "parent@email.com"
}
}
numeric string assigned by Classroom.
Use "-" as a wildcard to list submissions across all coursework in list_student_submissions.
Example: 222333444