openapi: 3.1.0 info: title: Google Classroom Courses API description: The Google Classroom API manages courses, coursework, student submissions, announcements, materials, rosters, topics, invitations, guardians, and integrations with third-party add-ons for educational workflows. version: v1 contact: name: Google url: https://developers.google.com/classroom servers: - url: https://classroom.googleapis.com tags: - name: Courses paths: /v1/courses: get: operationId: listCourses summary: Google Classroom List courses description: Returns a list of courses that the requesting user is permitted to view. parameters: - name: pageSize in: query schema: type: integer - name: pageToken in: query schema: type: string - name: studentId in: query schema: type: string - name: teacherId in: query schema: type: string - name: courseStates in: query schema: type: array items: type: string enum: - COURSE_STATE_UNSPECIFIED - ACTIVE - ARCHIVED - PROVISIONED - DECLINED - SUSPENDED responses: '200': description: Successful response content: application/json: schema: $ref: '#/components/schemas/ListCoursesResponse' tags: - Courses post: operationId: createCourse summary: Google Classroom Create course description: Creates a course. requestBody: content: application/json: schema: $ref: '#/components/schemas/Course' responses: '200': description: Successful response content: application/json: schema: $ref: '#/components/schemas/Course' tags: - Courses /v1/courses/{id}: get: operationId: getCourse summary: Google Classroom Get course description: Returns a course. parameters: - name: id in: path required: true schema: type: string responses: '200': description: Successful response content: application/json: schema: $ref: '#/components/schemas/Course' tags: - Courses put: operationId: updateCourse summary: Google Classroom Update course description: Updates a course. parameters: - name: id in: path required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/Course' responses: '200': description: Successful response content: application/json: schema: $ref: '#/components/schemas/Course' tags: - Courses patch: operationId: patchCourse summary: Google Classroom Patch course description: Updates one or more fields in a course. parameters: - name: id in: path required: true schema: type: string - name: updateMask in: query schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/Course' responses: '200': description: Successful response content: application/json: schema: $ref: '#/components/schemas/Course' tags: - Courses delete: operationId: deleteCourse summary: Google Classroom Delete course description: Deletes a course. parameters: - name: id in: path required: true schema: type: string responses: '204': description: Successful deletion tags: - Courses /v1/courses/{courseId}/courseWork: get: operationId: listCourseWork summary: Google Classroom List course work description: Returns a list of course work that the requester is permitted to view. parameters: - name: courseId in: path required: true schema: type: string - name: pageSize in: query schema: type: integer - name: pageToken in: query schema: type: string responses: '200': description: Successful response content: application/json: schema: $ref: '#/components/schemas/ListCourseWorkResponse' tags: - Courses post: operationId: createCourseWork summary: Google Classroom Create course work description: Creates course work. parameters: - name: courseId in: path required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/CourseWork' responses: '200': description: Successful response content: application/json: schema: $ref: '#/components/schemas/CourseWork' tags: - Courses /v1/courses/{courseId}/courseWork/{id}: get: operationId: getCourseWork summary: Google Classroom Get course work description: Returns course work. parameters: - name: courseId in: path required: true schema: type: string - name: id in: path required: true schema: type: string responses: '200': description: Successful response content: application/json: schema: $ref: '#/components/schemas/CourseWork' tags: - Courses patch: operationId: patchCourseWork summary: Google Classroom Patch course work description: Updates one or more fields of a course work. parameters: - name: courseId in: path required: true schema: type: string - name: id in: path required: true schema: type: string - name: updateMask in: query schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/CourseWork' responses: '200': description: Successful response content: application/json: schema: $ref: '#/components/schemas/CourseWork' tags: - Courses delete: operationId: deleteCourseWork summary: Google Classroom Delete course work description: Deletes a course work. parameters: - name: courseId in: path required: true schema: type: string - name: id in: path required: true schema: type: string responses: '204': description: Successful deletion tags: - Courses /v1/courses/{courseId}/courseWork/{courseWorkId}/studentSubmissions: get: operationId: listStudentSubmissions summary: Google Classroom List student submissions description: Returns a list of student submissions. parameters: - name: courseId in: path required: true schema: type: string - name: courseWorkId in: path required: true schema: type: string - name: pageSize in: query schema: type: integer - name: pageToken in: query schema: type: string responses: '200': description: Successful response content: application/json: schema: $ref: '#/components/schemas/ListStudentSubmissionsResponse' tags: - Courses /v1/courses/{courseId}/students: get: operationId: listStudents summary: Google Classroom List students description: Returns a list of students of this course. parameters: - name: courseId in: path required: true schema: type: string - name: pageSize in: query schema: type: integer - name: pageToken in: query schema: type: string responses: '200': description: Successful response content: application/json: schema: $ref: '#/components/schemas/ListStudentsResponse' tags: - Courses post: operationId: addStudent summary: Google Classroom Add student description: Adds a user as a student of a course. parameters: - name: courseId in: path required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/Student' responses: '200': description: Successful response content: application/json: schema: $ref: '#/components/schemas/Student' tags: - Courses /v1/courses/{courseId}/teachers: get: operationId: listTeachers summary: Google Classroom List teachers description: Returns a list of teachers of this course. parameters: - name: courseId in: path required: true schema: type: string - name: pageSize in: query schema: type: integer - name: pageToken in: query schema: type: string responses: '200': description: Successful response content: application/json: schema: $ref: '#/components/schemas/ListTeachersResponse' tags: - Courses post: operationId: addTeacher summary: Google Classroom Add teacher description: Creates a teacher of a course. parameters: - name: courseId in: path required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/Teacher' responses: '200': description: Successful response content: application/json: schema: $ref: '#/components/schemas/Teacher' tags: - Courses /v1/courses/{courseId}/announcements: get: operationId: listAnnouncements summary: Google Classroom List announcements description: Returns a list of announcements. parameters: - name: courseId in: path required: true schema: type: string - name: pageSize in: query schema: type: integer - name: pageToken in: query schema: type: string responses: '200': description: Successful response tags: - Courses post: operationId: createAnnouncement summary: Google Classroom Create announcement description: Creates an announcement. parameters: - name: courseId in: path required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/Announcement' responses: '200': description: Successful response content: application/json: schema: $ref: '#/components/schemas/Announcement' tags: - Courses /v1/courses/{courseId}/topics: get: operationId: listTopics summary: Google Classroom List topics description: Returns the list of topics that the requester is permitted to view. parameters: - name: courseId in: path required: true schema: type: string responses: '200': description: Successful response tags: - Courses post: operationId: createTopic summary: Google Classroom Create topic description: Creates a topic. parameters: - name: courseId in: path required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/Topic' responses: '200': description: Successful response content: application/json: schema: $ref: '#/components/schemas/Topic' tags: - Courses components: schemas: Course: type: object properties: id: type: string name: type: string section: type: string descriptionHeading: type: string description: type: string room: type: string ownerId: type: string courseState: type: string enum: - COURSE_STATE_UNSPECIFIED - ACTIVE - ARCHIVED - PROVISIONED - DECLINED - SUSPENDED enrollmentCode: type: string creationTime: type: string format: date-time updateTime: type: string format: date-time CourseWork: type: object properties: courseId: type: string id: type: string title: type: string description: type: string state: type: string enum: - COURSE_WORK_STATE_UNSPECIFIED - PUBLISHED - DRAFT - DELETED workType: type: string enum: - COURSE_WORK_TYPE_UNSPECIFIED - ASSIGNMENT - SHORT_ANSWER_QUESTION - MULTIPLE_CHOICE_QUESTION maxPoints: type: number dueDate: type: object properties: year: type: integer month: type: integer day: type: integer dueTime: type: object properties: hours: type: integer minutes: type: integer creationTime: type: string format: date-time updateTime: type: string format: date-time ListCoursesResponse: type: object properties: courses: type: array items: $ref: '#/components/schemas/Course' nextPageToken: type: string Student: type: object properties: courseId: type: string userId: type: string profile: $ref: '#/components/schemas/UserProfile' ListCourseWorkResponse: type: object properties: courseWork: type: array items: $ref: '#/components/schemas/CourseWork' nextPageToken: type: string Topic: type: object properties: courseId: type: string topicId: type: string name: type: string updateTime: type: string format: date-time UserProfile: type: object properties: id: type: string name: type: object properties: givenName: type: string familyName: type: string fullName: type: string emailAddress: type: string photoUrl: type: string StudentSubmission: type: object properties: courseId: type: string courseWorkId: type: string id: type: string userId: type: string state: type: string enum: - SUBMISSION_STATE_UNSPECIFIED - NEW - CREATED - TURNED_IN - RETURNED - RECLAIMED_BY_STUDENT assignedGrade: type: number draftGrade: type: number creationTime: type: string format: date-time updateTime: type: string format: date-time ListTeachersResponse: type: object properties: teachers: type: array items: $ref: '#/components/schemas/Teacher' nextPageToken: type: string ListStudentSubmissionsResponse: type: object properties: studentSubmissions: type: array items: $ref: '#/components/schemas/StudentSubmission' nextPageToken: type: string ListStudentsResponse: type: object properties: students: type: array items: $ref: '#/components/schemas/Student' nextPageToken: type: string Announcement: type: object properties: courseId: type: string id: type: string text: type: string state: type: string enum: - ANNOUNCEMENT_STATE_UNSPECIFIED - PUBLISHED - DRAFT - DELETED creationTime: type: string format: date-time updateTime: type: string format: date-time Teacher: type: object properties: courseId: type: string userId: type: string profile: $ref: '#/components/schemas/UserProfile'