Google Classroom · Capability

Google Classroom API — Courses

Google Classroom API — Courses. 20 operations. Lead operation: Google Classroom List courses. Self-contained Naftiko capability covering one Google Classroom business surface.

Run with Naftiko Google ClassroomCourses

What You Can Do

GET
Listcourses — Google Classroom List courses
/v1/v1/courses
POST
Createcourse — Google Classroom Create course
/v1/v1/courses
GET
Listannouncements — Google Classroom List announcements
/v1/v1/courses/{courseid}/announcements
POST
Createannouncement — Google Classroom Create announcement
/v1/v1/courses/{courseid}/announcements
GET
Listcoursework — Google Classroom List course work
/v1/v1/courses/{courseid}/coursework
POST
Createcoursework — Google Classroom Create course work
/v1/v1/courses/{courseid}/coursework
GET
Liststudentsubmissions — Google Classroom List student submissions
/v1/v1/courses/{courseid}/coursework/{courseworkid}/studentsubmissions
GET
Getcoursework — Google Classroom Get course work
/v1/v1/courses/{courseid}/coursework/{id}
PATCH
Patchcoursework — Google Classroom Patch course work
/v1/v1/courses/{courseid}/coursework/{id}
DELETE
Deletecoursework — Google Classroom Delete course work
/v1/v1/courses/{courseid}/coursework/{id}
GET
Liststudents — Google Classroom List students
/v1/v1/courses/{courseid}/students
POST
Addstudent — Google Classroom Add student
/v1/v1/courses/{courseid}/students
GET
Listteachers — Google Classroom List teachers
/v1/v1/courses/{courseid}/teachers
POST
Addteacher — Google Classroom Add teacher
/v1/v1/courses/{courseid}/teachers
GET
Listtopics — Google Classroom List topics
/v1/v1/courses/{courseid}/topics
POST
Createtopic — Google Classroom Create topic
/v1/v1/courses/{courseid}/topics
GET
Getcourse — Google Classroom Get course
/v1/v1/courses/{id}
PUT
Updatecourse — Google Classroom Update course
/v1/v1/courses/{id}
PATCH
Patchcourse — Google Classroom Patch course
/v1/v1/courses/{id}
DELETE
Deletecourse — Google Classroom Delete course
/v1/v1/courses/{id}

MCP Tools

google-classroom-list-courses

Google Classroom List courses

read-only idempotent
google-classroom-create-course

Google Classroom Create course

google-classroom-list-announcements

Google Classroom List announcements

read-only idempotent
google-classroom-create-announcement

Google Classroom Create announcement

google-classroom-list-course-work

Google Classroom List course work

read-only idempotent
google-classroom-create-course-work

Google Classroom Create course work

google-classroom-list-student-submissions

Google Classroom List student submissions

read-only idempotent
google-classroom-get-course-work

Google Classroom Get course work

read-only idempotent
google-classroom-patch-course-work

Google Classroom Patch course work

idempotent
google-classroom-delete-course-work

Google Classroom Delete course work

idempotent
google-classroom-list-students

Google Classroom List students

read-only idempotent
google-classroom-add-student

Google Classroom Add student

google-classroom-list-teachers

Google Classroom List teachers

read-only idempotent
google-classroom-add-teacher

Google Classroom Add teacher

google-classroom-list-topics

Google Classroom List topics

read-only idempotent
google-classroom-create-topic

Google Classroom Create topic

google-classroom-get-course

Google Classroom Get course

read-only idempotent
google-classroom-update-course

Google Classroom Update course

idempotent
google-classroom-patch-course

Google Classroom Patch course

idempotent
google-classroom-delete-course

Google Classroom Delete course

idempotent

Capability Spec

openapi-courses.yaml Raw ↑
naftiko: 1.0.0-alpha2
info:
  label: Google Classroom API — Courses
  description: 'Google Classroom API — Courses. 20 operations. Lead operation: Google Classroom List courses. Self-contained
    Naftiko capability covering one Google Classroom business surface.'
  tags:
  - Google Classroom
  - Courses
  created: '2026-05-19'
  modified: '2026-05-19'
binds:
- namespace: env
  keys:
    GOOGLE_CLASSROOM_API_KEY: GOOGLE_CLASSROOM_API_KEY
capability:
  consumes:
  - type: http
    namespace: openapi-courses
    baseUri: https://classroom.googleapis.com
    description: Google Classroom API — Courses business capability. Self-contained, no shared references.
    resources:
    - name: v1-courses
      path: /v1/courses
      operations:
      - name: listcourses
        method: GET
        description: Google Classroom List courses
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: pageSize
          in: query
          type: integer
        - name: pageToken
          in: query
          type: string
        - name: studentId
          in: query
          type: string
        - name: teacherId
          in: query
          type: string
        - name: courseStates
          in: query
          type: array
      - name: createcourse
        method: POST
        description: Google Classroom Create course
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: false
    - name: v1-courses-courseId-announcements
      path: /v1/courses/{courseId}/announcements
      operations:
      - name: listannouncements
        method: GET
        description: Google Classroom List announcements
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: courseId
          in: path
          type: string
          required: true
        - name: pageSize
          in: query
          type: integer
        - name: pageToken
          in: query
          type: string
      - name: createannouncement
        method: POST
        description: Google Classroom Create announcement
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: courseId
          in: path
          type: string
          required: true
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: false
    - name: v1-courses-courseId-courseWork
      path: /v1/courses/{courseId}/courseWork
      operations:
      - name: listcoursework
        method: GET
        description: Google Classroom List course work
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: courseId
          in: path
          type: string
          required: true
        - name: pageSize
          in: query
          type: integer
        - name: pageToken
          in: query
          type: string
      - name: createcoursework
        method: POST
        description: Google Classroom Create course work
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: courseId
          in: path
          type: string
          required: true
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: false
    - name: v1-courses-courseId-courseWork-courseWorkId-studentSubmissions
      path: /v1/courses/{courseId}/courseWork/{courseWorkId}/studentSubmissions
      operations:
      - name: liststudentsubmissions
        method: GET
        description: Google Classroom List student submissions
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: courseId
          in: path
          type: string
          required: true
        - name: courseWorkId
          in: path
          type: string
          required: true
        - name: pageSize
          in: query
          type: integer
        - name: pageToken
          in: query
          type: string
    - name: v1-courses-courseId-courseWork-id
      path: /v1/courses/{courseId}/courseWork/{id}
      operations:
      - name: getcoursework
        method: GET
        description: Google Classroom Get course work
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: courseId
          in: path
          type: string
          required: true
        - name: id
          in: path
          type: string
          required: true
      - name: patchcoursework
        method: PATCH
        description: Google Classroom Patch course work
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: courseId
          in: path
          type: string
          required: true
        - name: id
          in: path
          type: string
          required: true
        - name: updateMask
          in: query
          type: string
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: false
      - name: deletecoursework
        method: DELETE
        description: Google Classroom Delete course work
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: courseId
          in: path
          type: string
          required: true
        - name: id
          in: path
          type: string
          required: true
    - name: v1-courses-courseId-students
      path: /v1/courses/{courseId}/students
      operations:
      - name: liststudents
        method: GET
        description: Google Classroom List students
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: courseId
          in: path
          type: string
          required: true
        - name: pageSize
          in: query
          type: integer
        - name: pageToken
          in: query
          type: string
      - name: addstudent
        method: POST
        description: Google Classroom Add student
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: courseId
          in: path
          type: string
          required: true
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: false
    - name: v1-courses-courseId-teachers
      path: /v1/courses/{courseId}/teachers
      operations:
      - name: listteachers
        method: GET
        description: Google Classroom List teachers
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: courseId
          in: path
          type: string
          required: true
        - name: pageSize
          in: query
          type: integer
        - name: pageToken
          in: query
          type: string
      - name: addteacher
        method: POST
        description: Google Classroom Add teacher
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: courseId
          in: path
          type: string
          required: true
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: false
    - name: v1-courses-courseId-topics
      path: /v1/courses/{courseId}/topics
      operations:
      - name: listtopics
        method: GET
        description: Google Classroom List topics
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: courseId
          in: path
          type: string
          required: true
      - name: createtopic
        method: POST
        description: Google Classroom Create topic
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: courseId
          in: path
          type: string
          required: true
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: false
    - name: v1-courses-id
      path: /v1/courses/{id}
      operations:
      - name: getcourse
        method: GET
        description: Google Classroom Get course
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: string
          required: true
      - name: updatecourse
        method: PUT
        description: Google Classroom Update course
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: string
          required: true
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: false
      - name: patchcourse
        method: PATCH
        description: Google Classroom Patch course
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: string
          required: true
        - name: updateMask
          in: query
          type: string
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: false
      - name: deletecourse
        method: DELETE
        description: Google Classroom Delete course
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: string
          required: true
  exposes:
  - type: rest
    namespace: openapi-courses-rest
    port: 8080
    description: REST adapter for Google Classroom API — Courses. One Spectral-compliant resource per consumed operation,
      prefixed with /v1.
    resources:
    - path: /v1/v1/courses
      name: v1-courses
      description: REST surface for v1-courses.
      operations:
      - method: GET
        name: listcourses
        description: Google Classroom List courses
        call: openapi-courses.listcourses
        with:
          pageSize: rest.pageSize
          pageToken: rest.pageToken
          studentId: rest.studentId
          teacherId: rest.teacherId
          courseStates: rest.courseStates
        outputParameters:
        - type: object
          mapping: $.
      - method: POST
        name: createcourse
        description: Google Classroom Create course
        call: openapi-courses.createcourse
        with:
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/v1/courses/{courseid}/announcements
      name: v1-courses-courseid-announcements
      description: REST surface for v1-courses-courseId-announcements.
      operations:
      - method: GET
        name: listannouncements
        description: Google Classroom List announcements
        call: openapi-courses.listannouncements
        with:
          courseId: rest.courseId
          pageSize: rest.pageSize
          pageToken: rest.pageToken
        outputParameters:
        - type: object
          mapping: $.
      - method: POST
        name: createannouncement
        description: Google Classroom Create announcement
        call: openapi-courses.createannouncement
        with:
          courseId: rest.courseId
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/v1/courses/{courseid}/coursework
      name: v1-courses-courseid-coursework
      description: REST surface for v1-courses-courseId-courseWork.
      operations:
      - method: GET
        name: listcoursework
        description: Google Classroom List course work
        call: openapi-courses.listcoursework
        with:
          courseId: rest.courseId
          pageSize: rest.pageSize
          pageToken: rest.pageToken
        outputParameters:
        - type: object
          mapping: $.
      - method: POST
        name: createcoursework
        description: Google Classroom Create course work
        call: openapi-courses.createcoursework
        with:
          courseId: rest.courseId
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/v1/courses/{courseid}/coursework/{courseworkid}/studentsubmissions
      name: v1-courses-courseid-coursework-courseworkid-studentsubmissions
      description: REST surface for v1-courses-courseId-courseWork-courseWorkId-studentSubmissions.
      operations:
      - method: GET
        name: liststudentsubmissions
        description: Google Classroom List student submissions
        call: openapi-courses.liststudentsubmissions
        with:
          courseId: rest.courseId
          courseWorkId: rest.courseWorkId
          pageSize: rest.pageSize
          pageToken: rest.pageToken
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/v1/courses/{courseid}/coursework/{id}
      name: v1-courses-courseid-coursework-id
      description: REST surface for v1-courses-courseId-courseWork-id.
      operations:
      - method: GET
        name: getcoursework
        description: Google Classroom Get course work
        call: openapi-courses.getcoursework
        with:
          courseId: rest.courseId
          id: rest.id
        outputParameters:
        - type: object
          mapping: $.
      - method: PATCH
        name: patchcoursework
        description: Google Classroom Patch course work
        call: openapi-courses.patchcoursework
        with:
          courseId: rest.courseId
          id: rest.id
          updateMask: rest.updateMask
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
      - method: DELETE
        name: deletecoursework
        description: Google Classroom Delete course work
        call: openapi-courses.deletecoursework
        with:
          courseId: rest.courseId
          id: rest.id
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/v1/courses/{courseid}/students
      name: v1-courses-courseid-students
      description: REST surface for v1-courses-courseId-students.
      operations:
      - method: GET
        name: liststudents
        description: Google Classroom List students
        call: openapi-courses.liststudents
        with:
          courseId: rest.courseId
          pageSize: rest.pageSize
          pageToken: rest.pageToken
        outputParameters:
        - type: object
          mapping: $.
      - method: POST
        name: addstudent
        description: Google Classroom Add student
        call: openapi-courses.addstudent
        with:
          courseId: rest.courseId
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/v1/courses/{courseid}/teachers
      name: v1-courses-courseid-teachers
      description: REST surface for v1-courses-courseId-teachers.
      operations:
      - method: GET
        name: listteachers
        description: Google Classroom List teachers
        call: openapi-courses.listteachers
        with:
          courseId: rest.courseId
          pageSize: rest.pageSize
          pageToken: rest.pageToken
        outputParameters:
        - type: object
          mapping: $.
      - method: POST
        name: addteacher
        description: Google Classroom Add teacher
        call: openapi-courses.addteacher
        with:
          courseId: rest.courseId
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/v1/courses/{courseid}/topics
      name: v1-courses-courseid-topics
      description: REST surface for v1-courses-courseId-topics.
      operations:
      - method: GET
        name: listtopics
        description: Google Classroom List topics
        call: openapi-courses.listtopics
        with:
          courseId: rest.courseId
        outputParameters:
        - type: object
          mapping: $.
      - method: POST
        name: createtopic
        description: Google Classroom Create topic
        call: openapi-courses.createtopic
        with:
          courseId: rest.courseId
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/v1/courses/{id}
      name: v1-courses-id
      description: REST surface for v1-courses-id.
      operations:
      - method: GET
        name: getcourse
        description: Google Classroom Get course
        call: openapi-courses.getcourse
        with:
          id: rest.id
        outputParameters:
        - type: object
          mapping: $.
      - method: PUT
        name: updatecourse
        description: Google Classroom Update course
        call: openapi-courses.updatecourse
        with:
          id: rest.id
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
      - method: PATCH
        name: patchcourse
        description: Google Classroom Patch course
        call: openapi-courses.patchcourse
        with:
          id: rest.id
          updateMask: rest.updateMask
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
      - method: DELETE
        name: deletecourse
        description: Google Classroom Delete course
        call: openapi-courses.deletecourse
        with:
          id: rest.id
        outputParameters:
        - type: object
          mapping: $.
  - type: mcp
    namespace: openapi-courses-mcp
    port: 9090
    transport: http
    description: MCP adapter for Google Classroom API — Courses. One tool per consumed operation, routed inline through this
      capability's consumes block.
    tools:
    - name: google-classroom-list-courses
      description: Google Classroom List courses
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: openapi-courses.listcourses
      with:
        pageSize: tools.pageSize
        pageToken: tools.pageToken
        studentId: tools.studentId
        teacherId: tools.teacherId
        courseStates: tools.courseStates
      outputParameters:
      - type: object
        mapping: $.
    - name: google-classroom-create-course
      description: Google Classroom Create course
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: openapi-courses.createcourse
      with:
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: google-classroom-list-announcements
      description: Google Classroom List announcements
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: openapi-courses.listannouncements
      with:
        courseId: tools.courseId
        pageSize: tools.pageSize
        pageToken: tools.pageToken
      outputParameters:
      - type: object
        mapping: $.
    - name: google-classroom-create-announcement
      description: Google Classroom Create announcement
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: openapi-courses.createannouncement
      with:
        courseId: tools.courseId
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: google-classroom-list-course-work
      description: Google Classroom List course work
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: openapi-courses.listcoursework
      with:
        courseId: tools.courseId
        pageSize: tools.pageSize
        pageToken: tools.pageToken
      outputParameters:
      - type: object
        mapping: $.
    - name: google-classroom-create-course-work
      description: Google Classroom Create course work
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: openapi-courses.createcoursework
      with:
        courseId: tools.courseId
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: google-classroom-list-student-submissions
      description: Google Classroom List student submissions
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: openapi-courses.liststudentsubmissions
      with:
        courseId: tools.courseId
        courseWorkId: tools.courseWorkId
        pageSize: tools.pageSize
        pageToken: tools.pageToken
      outputParameters:
      - type: object
        mapping: $.
    - name: google-classroom-get-course-work
      description: Google Classroom Get course work
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: openapi-courses.getcoursework
      with:
        courseId: tools.courseId
        id: tools.id
      outputParameters:
      - type: object
        mapping: $.
    - name: google-classroom-patch-course-work
      description: Google Classroom Patch course work
      hints:
        readOnly: false
        destructive: false
        idempotent: true
      call: openapi-courses.patchcoursework
      with:
        courseId: tools.courseId
        id: tools.id
        updateMask: tools.updateMask
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: google-classroom-delete-course-work
      description: Google Classroom Delete course work
      hints:
        readOnly: false
        destructive: true
        idempotent: true
      call: openapi-courses.deletecoursework
      with:
        courseId: tools.courseId
        id: tools.id
      outputParameters:
      - type: object
        mapping: $.
    - name: google-classroom-list-students
      description: Google Classroom List students
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: openapi-courses.liststudents
      with:
        courseId: tools.courseId
        pageSize: tools.pageSize
        pageToken: tools.pageToken
      outputParameters:
      - type: object
        mapping: $.
    - name: google-classroom-add-student
      description: Google Classroom Add student
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: openapi-courses.addstudent
      with:
        courseId: tools.courseId
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: google-classroom-list-teachers
      description: Google Classroom List teachers
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: openapi-courses.listteachers
      with:
        courseId: tools.courseId
        pageSize: tools.pageSize
        pageToken: tools.pageToken
      outputParameters:
      - type: object
        mapping: $.
    - name: google-classroom-add-teacher
      description: Google Classroom Add teacher
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: openapi-courses.addteacher
      with:
        courseId: tools.courseId
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: google-classroom-list-topics
      description: Google Classroom List topics
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: openapi-courses.listtopics
      with:
        courseId: tools.courseId
      outputParameters:
      - type: object
        mapping: $.
    - name: google-classroom-create-topic
      description: Google Classroom Create topic
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: openapi-courses.createtopic
      with:
        courseId: tools.courseId
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: google-classroom-get-course
      description: Google Classroom Get course
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: openapi-courses.getcourse
      with:
        id: tools.id
      outputParameters:
      - type: object
        mapping: $.
    - name: google-classroom-update-course
      description: Google Classroom Update course
      hints:
        readOnly: false
        destructive: false
        idempotent: true
      call: openapi-courses.updatecourse
      with:
        id: tools.id
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: google-classroom-patch-course
      description: Google Classroom Patch course
      hints:
        readOnly: false
        destructive: false
        idempotent: true
      call: openapi-courses.patchcourse
      with:
        id: tools.id
        updateMask: tools.updateMask
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: google-classroom-delete-course
      description: Google Classroom Delete course
      hints:
        readOnly: false
        destructive: true
        idempotent: true
      call: openapi-courses.deletecourse
      with:
        id: tools.id
      outputParameters:
      - type: object
        mapping: $.