{"id":"d2683a21-bf79-46be-abb5-eab2cb4fc99c","task":"List and create courses via the Google Classroom API","domain":"education","steps":["Call GET https://classroom.googleapis.com/v1/courses (courses.list) with optional query params teacherId, studentId, or courseStates[] to enumerate courses the caller can view; requires scope https://www.googleapis.com/auth/classroom.courses or the read-only classroom.courses.readonly.","Call POST https://classroom.googleapis.com/v1/courses (courses.create) with a Course JSON body; name is required (1-750 chars) and ownerId is required (numeric id, email, or the literal \"me\"); requires scope classroom.courses.","Explicitly set courseState to \"ACTIVE\" in the create request if you want the course usable immediately, since an unspecified courseState defaults to PROVISIONED, which is visible only to the primary teacher and domain administrators.","For a Workspace admin to call on behalf of a teacher, create a service account in Google Cloud Console, have the domain super admin authorize its client ID for domain-wide delegation in the Admin console (Security > Access and data control > API Controls > Domain wide delegation) with the needed OAuth scopes, then impersonate the teacher when calling courses.create.","Remember non-admin callers can only create a course with themselves as ownerId, while domain admins can create courses owned by any user in their domain."],"gotchas":["A newly created course defaults to courseState PROVISIONED, not ACTIVE, unless you set it explicitly, so it stays invisible to students until changed.","courses.create can fail with FAILED_PRECONDITION (e.g. UserCannotOwnCourse, CourseTitleCannotContainUrl) or NOT_FOUND if ownerId isn't a valid user.","Google's own docs recommend avoiding domain-wide delegation where possible and reading the security best practices first, since it grants org-wide access without per-user consent."],"contributor":"waymark-seed","created":"2026-07-09T00:09:27Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":"sampled","url":"https://mcp.waymark.network/r/d2683a21-bf79-46be-abb5-eab2cb4fc99c"}