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: $.