Skip to main content

Classrooms, members and permissions

These methods belong to the classroom client. The table uses Node.js names; each language guide describes its naming conventions.

Methods and routes​

MethodHTTP
users.registerPOST /v1/users
auth.issueTokenLOCAL HS256 (eduskit-edu)
classrooms.createPOST /v1/classrooms
classrooms.startPOST /v1/classrooms/start
classrooms.endPOST /v1/classrooms/end
classrooms.members.addPOST /v1/classrooms/members
classrooms.members.listGET /v1/classrooms/members
classrooms.members.replaceStudentsPUT /v1/classrooms/members/students
classrooms.permissions.getGET /v1/classrooms/members/permissions
classrooms.permissions.setPOST /v1/classrooms/members/permissions
classrooms.permissions.clearDELETE /v1/classrooms/members/permissions
classrooms.coursewares.listGET /v1/classrooms/coursewares
classrooms.coursewares.bindPOST /v1/classrooms/coursewares
classrooms.coursewares.unbindDELETE /v1/classrooms/coursewares
app.getUiConfigGET /v1/app/ui-config
app.setUiConfigPUT /v1/app/ui-config

The SDK places GET/DELETE identifiers in query parameters and POST/PUT identifiers in JSON bodies. DELETE can also have a JSON body: clearing a permission requires operatorEduUserId, and unbinding courseware requires coursewareIds. Proxies must preserve these bodies.

Classroom creation​

FieldConstraint
nameRequired classroom name
startsAtISO 8601, at least 10 minutes after the current time
durationMinutesInteger, 5–480 minutes
teacherEduUserIdRegistered user in the same application; automatically added as teacher
studentEduUserIdsOptional student roster, excluding the lead teacher
joinPolicyinvite_only (default) or open_app
maxOnStageConcurrent stage limit, 1–16
videoOnlytrue disables classroom whiteboard initialization
recordModenone, classroom or mix
uiConfigMerged with application defaults into a snapshot at creation

The backend also checks application resources and plan constraints. Use returned classroomId and eduUserId values; short example names are not valid platform IDs.

Members and permissions​

Continue from the Node.js initialization. Use actual registration/creation results for classroomId, studentId and teacherId:

await sdk.client.classrooms.members.add(classroomId, {
eduUserId: studentId,
role: 'student',
});
const members = await sdk.client.classrooms.members.list(classroomId);
await sdk.client.classrooms.permissions.set(classroomId, studentId, {
permission: 'whiteboard',
effect: 'grant',
operatorEduUserId: teacherId,
});
const permissions = await sdk.client.classrooms.permissions.get(classroomId, studentId);
await sdk.client.classrooms.permissions.clear(classroomId, studentId, 'whiteboard', {
operatorEduUserId: teacherId,
});

set(... effect: 'revoke') writes a deny override. clear removes the override and restores role/application rules. replaceStudents(id, { eduUserIds }) replaces the complete student roster; an empty array removes all students.

Courseware and UI configuration​

coursewares.bind(id, { coursewareIds }) binds existing courseware in the application and is idempotent for repeated bindings. unbind removes the classroom association. A conversion job ID, whiteboard fileId and classroom coursewareId are distinct identifiers.

app.setUiConfig({ uiConfig }) changes application UI defaults. Existing classrooms retain the snapshot taken at creation.

Call classrooms.start(id) and classrooms.end(id) for explicit class start/end actions. A client leaving the room calls leaveClassroom() and does not end the class for others.

Application and tenant APIs​

Source builds provide 50 application-authenticated HTTP routes through client, including users, classrooms, courseware libraries, live assets, and diagnostics. See application business APIs and workflow examples. The separate tenant management client uses tenant sessions for account, application, dashboard, and billing operations. The new methods require the matching server-api deployment and a source build; public 0.1.5 packages do not include them.