Skip to main content

Classrooms and diagnostics

Console client configuration · Response and shared models

Classrooms support realtime and live modes. Creation accepts the name, teacher, scheduled start, and durationMinutes; the server derives the scheduled end. update modifies configuration before class starts and requires classroomId, name, and teacherEduUserId. It does not update the start, duration, or courseware bindings.

replaceStudents replaces the student roster. bindCoursewares associates courseware with a class. addWhiteboardCourseware adds ready, bound courseware to its whiteboard using requestId as the operation identifier. Unbinding preserves the courseware asset.

listEnteredUsers returns users who entered the class. Join attempts use cursor pagination. Entry traces contain independent eventPage and sessionsPage cursors; pass cursor and sessionsCursor respectively. Use attemptId to select an entry attempt. To export diagnostics, collect both page streams and serialize the result as JSON.

Attendance returns member totals and segments. Open segments are marked open=true and excluded from totals. Live source kinds are device, file, push, and pull. Playback credentials contain status, relayVersion, and streams; streams are empty when none are ready.

Application backends use application business APIs with app credentials. This page describes the separate tenant management calls.

classrooms.list​

List classrooms.

GET /v1/classrooms

Authentication: tenant Bearer token and x-app-id.

LanguageCall
Node.jsc.classrooms.list(appId, input)
Pythonc.classrooms.list(app_id, **input)
Javac.classrooms.list(appId, input)
Goc.Classrooms.List(ctx, appID, input, &result)
PHP$c->classrooms->list($appId, $input)

Input: ListClassroomsQuery. Fields are sent as URL query parameters.

FieldRequiredTypeDescription
statusNoClassroomStatus | undefinedStatus filter or target status
qNostring | undefinedSearch keyword
startsAtFromNostring | undefinedInclusive scheduled-start lower bound
startsAtToNostring | undefinedExclusive scheduled-start upper bound
actualStartedAtFromNostring | undefinedActual-start lower bound
actualStartedAtToNostring | undefinedActual-start upper bound
pageNonumber | undefinedPage number starting at 1
pageSizeNonumber | undefinedMaximum items per page

Returns: ListClassroomsResult. See shared models for nested fields.

classrooms.get​

Get classroom.

GET /v1/classrooms/detail

Authentication: tenant Bearer token and x-app-id.

LanguageCall
Node.jsc.classrooms.get(appId, input)
Pythonc.classrooms.get(app_id, **input)
Javac.classrooms.get(appId, input)
Goc.Classrooms.Get(ctx, appID, input, &result)
PHP$c->classrooms->get($appId, $input)

Input: ClassroomIdInput. Fields are sent as URL query parameters.

FieldRequiredTypeDescription
classroomIdYesstringClassroom ID

Returns: ClassroomRecord. See shared models for nested fields.

classrooms.create​

Create classroom.

POST /v1/classrooms

Authentication: tenant Bearer token and x-app-id.

LanguageCall
Node.jsc.classrooms.create(appId, input)
Pythonc.classrooms.create(app_id, **input)
Javac.classrooms.create(appId, input)
Goc.Classrooms.Create(ctx, appID, input, &result)
PHP$c->classrooms->create($appId, $input)

Input: CreateClassroomPayload. Fields are sent in the JSON body.

FieldRequiredTypeDescription
nameYesstringApplication or classroom name
teacherEduUserIdYesstringTeacher user ID
startsAtYesstringScheduled start, ISO 8601
durationMinutesYesnumberDuration in minutes; classroom creation accepts 5–480
resolutionNoClassroomResolution | undefinedClassroom video resolution
maxOnStageNonumber | undefinedConcurrent on-stage limit, 1–16
maxAudienceNonumber | undefinedTotal concurrent room limit including on-stage users, up to 100000
classroomTypeNoClassroomType | undefinedrealtime or live classroom
liveSourceKindNostring | undefinedLive source kind at classroom creation
liveVideoIdNostring | undefinedLive video asset ID
pullStreamUrlNostring | undefinedSource pull-stream URL
recordModeNoClassroomRecordMode | undefinedRecording mode
avSubscribeModeNoClassroomAvSubscribeMode | undefinedAudio/video subscription mode
defaultOnStageNoboolean | undefinedDefault on-stage state for students and assistants
allowTeacherControlDeviceNoboolean | undefinedAllow teacher device control
overtimeMinutesNonumber | undefinedAllowed overtime in minutes, 0–180
autoStartOnScheduleNoboolean | undefinedAutomatically start on schedule
recordBackgroundUrlNostring | undefinedRecording background image URL
joinPolicyNoClassroomJoinPolicy | undefinedInvited-only or open-application joining policy
videoOnlyNoboolean | undefinedVideo-only classroom without whiteboard
coursewareIdsNostring[] | undefinedCourseware IDs, at most 50 per binding request
studentEduUserIdsNostring[] | undefinedStudent IDs to add on creation
uiConfigNoRecord<string, unknown> | undefinedClassroom UI configuration

Returns: ClassroomRecord. See shared models for nested fields.

classrooms.update​

Update classroom.

PATCH /v1/classrooms/update

Authentication: tenant Bearer token and x-app-id.

LanguageCall
Node.jsc.classrooms.update(appId, input)
Pythonc.classrooms.update(app_id, **input)
Javac.classrooms.update(appId, input)
Goc.Classrooms.Update(ctx, appID, input, &result)
PHP$c->classrooms->update($appId, $input)

Input: UpdateClassroomInput. Fields are sent in the JSON body.

FieldRequiredTypeDescription
classroomIdYesstringClassroom ID
nameYesstringApplication or classroom name
teacherEduUserIdYesstringTeacher user ID
resolutionNoClassroomResolution | undefinedClassroom video resolution
maxOnStageNonumber | undefinedConcurrent on-stage limit, 1–16
maxAudienceNonumber | undefinedTotal concurrent room limit including on-stage users, up to 100000
classroomTypeNoClassroomType | undefinedrealtime or live classroom
liveSourceKindNostring | undefinedLive source kind at classroom creation
liveVideoIdNostring | undefinedLive video asset ID
pullStreamUrlNostring | undefinedSource pull-stream URL
recordModeNoClassroomRecordMode | undefinedRecording mode
avSubscribeModeNoClassroomAvSubscribeMode | undefinedAudio/video subscription mode
defaultOnStageNoboolean | undefinedDefault on-stage state for students and assistants
allowTeacherControlDeviceNoboolean | undefinedAllow teacher device control
overtimeMinutesNonumber | undefinedAllowed overtime in minutes, 0–180
autoStartOnScheduleNoboolean | undefinedAutomatically start on schedule
recordBackgroundUrlNostring | undefinedRecording background image URL
joinPolicyNoClassroomJoinPolicy | undefinedInvited-only or open-application joining policy
videoOnlyNoboolean | undefinedVideo-only classroom without whiteboard
uiConfigNoRecord<string, unknown> | undefinedClassroom UI configuration

Returns: ClassroomRecord. See shared models for nested fields.

classrooms.start​

Start classroom.

POST /v1/classrooms/start

Authentication: tenant Bearer token and x-app-id.

LanguageCall
Node.jsc.classrooms.start(appId, input)
Pythonc.classrooms.start(app_id, **input)
Javac.classrooms.start(appId, input)
Goc.Classrooms.Start(ctx, appID, input, &result)
PHP$c->classrooms->start($appId, $input)

Input: ClassroomIdInput. Fields are sent in the JSON body.

FieldRequiredTypeDescription
classroomIdYesstringClassroom ID

Returns: ClassroomRecord. See shared models for nested fields.

classrooms.end​

End classroom.

POST /v1/classrooms/end

Authentication: tenant Bearer token and x-app-id.

LanguageCall
Node.jsc.classrooms.end(appId, input)
Pythonc.classrooms.end(app_id, **input)
Javac.classrooms.end(appId, input)
Goc.Classrooms.End(ctx, appID, input, &result)
PHP$c->classrooms->end($appId, $input)

Input: ClassroomIdInput. Fields are sent in the JSON body.

FieldRequiredTypeDescription
classroomIdYesstringClassroom ID

Returns: ClassroomRecord. See shared models for nested fields.

classrooms.listMembers​

List classroom members.

GET /v1/classrooms/members

Authentication: tenant Bearer token and x-app-id.

LanguageCall
Node.jsc.classrooms.listMembers(appId, input)
Pythonc.classrooms.list_members(app_id, **input)
Javac.classrooms.listMembers(appId, input)
Goc.Classrooms.ListMembers(ctx, appID, input, &result)
PHP$c->classrooms->listMembers($appId, $input)

Input: ClassroomIdInput. Fields are sent as URL query parameters.

FieldRequiredTypeDescription
classroomIdYesstringClassroom ID

Returns: ListClassroomMembersResult. See shared models for nested fields.

classrooms.addMember​

Add classroom member.

POST /v1/classrooms/members

Authentication: tenant Bearer token and x-app-id.

LanguageCall
Node.jsc.classrooms.addMember(appId, input)
Pythonc.classrooms.add_member(app_id, **input)
Javac.classrooms.addMember(appId, input)
Goc.Classrooms.AddMember(ctx, appID, input, &result)
PHP$c->classrooms->addMember($appId, $input)

Input: AddMemberInput. Fields are sent in the JSON body.

FieldRequiredTypeDescription
eduUserIdYesstringClassroom user ID
roleYes"teacher" | "assistant" | "student" | "inspector"Member or entry code role
classroomIdYesstringClassroom ID

Returns: MembershipResult. See shared models for nested fields.

classrooms.replaceStudents​

Replace student roster.

PUT /v1/classrooms/members/students

Authentication: tenant Bearer token and x-app-id.

LanguageCall
Node.jsc.classrooms.replaceStudents(appId, input)
Pythonc.classrooms.replace_students(app_id, **input)
Javac.classrooms.replaceStudents(appId, input)
Goc.Classrooms.ReplaceStudents(ctx, appID, input, &result)
PHP$c->classrooms->replaceStudents($appId, $input)

Input: ReplaceStudentsInput. Fields are sent in the JSON body.

FieldRequiredTypeDescription
eduUserIdsYesstring[]Complete replacement student roster
classroomIdYesstringClassroom ID

Returns: SetClassroomStudentsResult. See shared models for nested fields.

classrooms.listCoursewares​

List classroom courseware.

GET /v1/classrooms/coursewares

Authentication: tenant Bearer token and x-app-id.

LanguageCall
Node.jsc.classrooms.listCoursewares(appId, input)
Pythonc.classrooms.list_coursewares(app_id, **input)
Javac.classrooms.listCoursewares(appId, input)
Goc.Classrooms.ListCoursewares(ctx, appID, input, &result)
PHP$c->classrooms->listCoursewares($appId, $input)

Input: ClassroomIdInput. Fields are sent as URL query parameters.

FieldRequiredTypeDescription
classroomIdYesstringClassroom ID

Returns: ClassroomCoursewaresResult. See shared models for nested fields.

classrooms.bindCoursewares​

Bind classroom courseware.

POST /v1/classrooms/coursewares

Authentication: tenant Bearer token and x-app-id.

LanguageCall
Node.jsc.classrooms.bindCoursewares(appId, input)
Pythonc.classrooms.bind_coursewares(app_id, **input)
Javac.classrooms.bindCoursewares(appId, input)
Goc.Classrooms.BindCoursewares(ctx, appID, input, &result)
PHP$c->classrooms->bindCoursewares($appId, $input)

Input: BindCoursewaresInput. Fields are sent in the JSON body.

FieldRequiredTypeDescription
coursewareIdsYesstring[]Courseware IDs, at most 50 per binding request
classroomIdYesstringClassroom ID

Returns: BindCoursewaresResult. See shared models for nested fields.

classrooms.unbindCoursewares​

Unbind classroom courseware.

DELETE /v1/classrooms/coursewares

Authentication: tenant Bearer token and x-app-id.

LanguageCall
Node.jsc.classrooms.unbindCoursewares(appId, input)
Pythonc.classrooms.unbind_coursewares(app_id, **input)
Javac.classrooms.unbindCoursewares(appId, input)
Goc.Classrooms.UnbindCoursewares(ctx, appID, input, &result)
PHP$c->classrooms->unbindCoursewares($appId, $input)

Input: BindCoursewaresInput. classroomId is sent in the query string; other fields are sent in the JSON body.

FieldRequiredTypeDescription
coursewareIdsYesstring[]Courseware IDs, at most 50 per binding request
classroomIdYesstringClassroom ID

Returns: UnbindCoursewaresResult. See shared models for nested fields.

classrooms.listWhiteboardCoursewares​

List whiteboard courseware.

GET /v1/classrooms/whiteboard/coursewares

Authentication: tenant Bearer token and x-app-id.

LanguageCall
Node.jsc.classrooms.listWhiteboardCoursewares(appId, input)
Pythonc.classrooms.list_whiteboard_coursewares(app_id, **input)
Javac.classrooms.listWhiteboardCoursewares(appId, input)
Goc.Classrooms.ListWhiteboardCoursewares(ctx, appID, input, &result)
PHP$c->classrooms->listWhiteboardCoursewares($appId, $input)

Input: ClassroomIdInput. Fields are sent as URL query parameters.

FieldRequiredTypeDescription
classroomIdYesstringClassroom ID

Returns: WhiteboardCoursewaresResult. See shared models for nested fields.

classrooms.addWhiteboardCourseware​

Add courseware to whiteboard.

POST /v1/classrooms/whiteboard/coursewares

Authentication: tenant Bearer token and x-app-id.

LanguageCall
Node.jsc.classrooms.addWhiteboardCourseware(appId, input)
Pythonc.classrooms.add_whiteboard_courseware(app_id, **input)
Javac.classrooms.addWhiteboardCourseware(appId, input)
Goc.Classrooms.AddWhiteboardCourseware(ctx, appID, input, &result)
PHP$c->classrooms->addWhiteboardCourseware($appId, $input)

Input: AddWhiteboardCoursewareInput. Fields are sent in the JSON body.

FieldRequiredTypeDescription
coursewareIdYesstringCourseware ID
requestIdYesstringIdentifier for the whiteboard courseware operation
classroomIdYesstringClassroom ID

Returns: ClassroomWhiteboardCoursewareRecord. See shared models for nested fields.

classrooms.attendance​

Classroom attendance.

GET /v1/classrooms/attendance

Authentication: tenant Bearer token and x-app-id.

LanguageCall
Node.jsc.classrooms.attendance(appId, input)
Pythonc.classrooms.attendance(app_id, **input)
Javac.classrooms.attendance(appId, input)
Goc.Classrooms.Attendance(ctx, appID, input, &result)
PHP$c->classrooms->attendance($appId, $input)

Input: AttendanceInput. Fields are sent as URL query parameters.

FieldRequiredTypeDescription
eduUserIdNostring | undefinedClassroom user ID
classroomIdYesstringClassroom ID

Returns: AttendanceResult. See shared models for nested fields.

classrooms.listEnteredUsers​

List entered users.

GET /v1/classrooms/entered-users

Authentication: tenant Bearer token and x-app-id.

LanguageCall
Node.jsc.classrooms.listEnteredUsers(appId, input)
Pythonc.classrooms.list_entered_users(app_id, **input)
Javac.classrooms.listEnteredUsers(appId, input)
Goc.Classrooms.ListEnteredUsers(ctx, appID, input, &result)
PHP$c->classrooms->listEnteredUsers($appId, $input)

Input: EnteredUsersInput. Fields are sent as URL query parameters.

FieldRequiredTypeDescription
classroomIdYesstringClassroom ID
pageNonumber | undefinedPage number starting at 1
pageSizeNonumber | undefinedMaximum items per page

Returns: ListClassroomEnteredUsersResult. See shared models for nested fields.

classrooms.listJoinAttempts​

List join attempts.

GET /v1/classrooms/join-attempts

Authentication: tenant Bearer token and x-app-id.

LanguageCall
Node.jsc.classrooms.listJoinAttempts(appId, input)
Pythonc.classrooms.list_join_attempts(app_id, **input)
Javac.classrooms.listJoinAttempts(appId, input)
Goc.Classrooms.ListJoinAttempts(ctx, appID, input, &result)
PHP$c->classrooms->listJoinAttempts($appId, $input)

Input: JoinAttemptsInput. Fields are sent as URL query parameters.

FieldRequiredTypeDescription
classroomIdYesstringClassroom ID
resultNostring | undefinedEntry-result filter
joinStatusNostring | undefinedJoin-status filter
failureDomainNostring | undefinedFailure-domain filter
platformNostring | undefinedClient platform
sdkVersionNostring | undefinedSDK version
appVersionNostring | undefinedClient application version
networkTypeNostring | undefinedNetwork type
providerNostring | undefinedProvider
eduUserIdNostring | undefinedClassroom user ID
startedAtFromNostring | undefinedAttempt-start lower bound
startedAtToNostring | undefinedAttempt-start upper bound
cursorNostring | undefinedCursor returned by the previous page
pageSizeNonumber | undefinedMaximum items per page

Returns: ListClassroomJoinAttemptsResult. See shared models for nested fields.

classrooms.getEnteredUserTrace​

Get user entry trace.

GET /v1/classrooms/entered-users/trace

Authentication: tenant Bearer token and x-app-id.

LanguageCall
Node.jsc.classrooms.getEnteredUserTrace(appId, input)
Pythonc.classrooms.get_entered_user_trace(app_id, **input)
Javac.classrooms.getEnteredUserTrace(appId, input)
Goc.Classrooms.GetEnteredUserTrace(ctx, appID, input, &result)
PHP$c->classrooms->getEnteredUserTrace($appId, $input)

Input: EnteredUserTraceInput. Fields are sent as URL query parameters.

FieldRequiredTypeDescription
classroomIdYesstringClassroom ID
attemptIdYesstringJoin attempt ID
cursorNostring | undefinedCursor returned by the previous page
pageSizeNonumber | undefinedMaximum items per page
sessionsCursorNostring | undefinedSession-page cursor
sessionsPageSizeNonumber | undefinedSession page size
eduUserIdYesstringClassroom user ID

Returns: ClassroomEnteredUserTrace. See shared models for nested fields.

classrooms.getLiveSource​

Get live source.

GET /v1/classrooms/live-source

Authentication: tenant Bearer token and x-app-id.

LanguageCall
Node.jsc.classrooms.getLiveSource(appId, input)
Pythonc.classrooms.get_live_source(app_id, **input)
Javac.classrooms.getLiveSource(appId, input)
Goc.Classrooms.GetLiveSource(ctx, appID, input, &result)
PHP$c->classrooms->getLiveSource($appId, $input)

Input: ClassroomIdInput. Fields are sent as URL query parameters.

FieldRequiredTypeDescription
classroomIdYesstringClassroom ID

Returns: LiveSourceRecord. See shared models for nested fields.

classrooms.setLiveSource​

Set live source.

PUT /v1/classrooms/live-source

Authentication: tenant Bearer token and x-app-id.

LanguageCall
Node.jsc.classrooms.setLiveSource(appId, input)
Pythonc.classrooms.set_live_source(app_id, **input)
Javac.classrooms.setLiveSource(appId, input)
Goc.Classrooms.SetLiveSource(ctx, appID, input, &result)
PHP$c->classrooms->setLiveSource($appId, $input)

Input: SetLiveSourceInput. Fields are sent in the JSON body.

FieldRequiredTypeDescription
kindYes"device" | "file" | "push" | "pull"Live source kind
liveVideoIdNostring | undefinedLive video asset ID
pullStreamUrlNostring | undefinedSource pull-stream URL
classroomIdYesstringClassroom ID

Returns: LiveSourceRecord. See shared models for nested fields.

classrooms.issueLivePushCredential​

Issue live push credential.

POST /v1/classrooms/live-source/push-credential

Authentication: tenant Bearer token and x-app-id.

LanguageCall
Node.jsc.classrooms.issueLivePushCredential(appId, input)
Pythonc.classrooms.issue_live_push_credential(app_id, **input)
Javac.classrooms.issueLivePushCredential(appId, input)
Goc.Classrooms.IssueLivePushCredential(ctx, appID, input, &result)
PHP$c->classrooms->issueLivePushCredential($appId, $input)

Input: ClassroomIdInput. Fields are sent in the JSON body.

FieldRequiredTypeDescription
classroomIdYesstringClassroom ID

Returns: LivePushCredential. See shared models for nested fields.

classrooms.getLivePlayCredentials​

Get live playback credentials.

GET /v1/classrooms/live/play-credentials

Authentication: tenant Bearer token and x-app-id.

LanguageCall
Node.jsc.classrooms.getLivePlayCredentials(appId, input)
Pythonc.classrooms.get_live_play_credentials(app_id, **input)
Javac.classrooms.getLivePlayCredentials(appId, input)
Goc.Classrooms.GetLivePlayCredentials(ctx, appID, input, &result)
PHP$c->classrooms->getLivePlayCredentials($appId, $input)

Input: ClassroomIdInput. Fields are sent as URL query parameters.

FieldRequiredTypeDescription
classroomIdYesstringClassroom ID

Returns: LivePlayCredentials. See shared models for nested fields.