Guides
Canvas
Sync sections, launch GroutCode from a module item, and post scores to Canvas assignments.
Roster sync#
Scopes: students:write, groups:write.
GET /api/v1/courses/:id/sections?include[]=studentson Canvas.- For each student without a Grout id,
POST /studentswithstudent_id= Canvassis_user_idandpersonal_email= Canvas login email; store the returnedidandlogin_emailas a custom user data entry. - One Grout group per Canvas section:
POST /groupsthenPATCH /groups/{id}with the fullstudent_idseach run.
Launch from a module item#
Scope: sso:write.
Create an External URL module item pointing at your service. The service mints a token (POST /sso/tokens { email, app: "groutcode", redirect: "exam:<id>" }) and redirects to launch_url. If you use LTI 1.3, do the same from your launch endpoint after validating the id token.
Scores to Canvas#
Scopes: submissions:read, webhooks:write.
Subscribe to exam.graded. Map each Grout exam_id to a Canvas assignment id, then:
PUT /api/v1/courses/:course_id/assignments/:assignment_id/submissions/:user_id
Content-Type: application/json
{ "submission": { "posted_grade": "87" } }Use resubmission_required to leave a comment instead of a grade. Canvas rate limits apply; batch updates with POST …/submissions/update_grades for large classes.
Guardians#
If parents use Canvas observer accounts, mirror them: POST /guardians per observer with guardian_type: "guardian" so they can also follow Alpha Learning reports at audit.grout.app.