Skip to main content

Application business APIs

sdk.client calls edu_service/server-api with x-app-key and x-app-secret. The server resolves the application ID from verified credentials. These calls do not require a console tenant session or x-app-id.

The current source provides 50 application-authenticated HTTP routes, including the 45 console application operations listed below. Classroom user tokens are signed locally by client.auth.issueToken. Member permissions and application UI configuration are documented in Classroom APIs. The additions require the matching server-api deployment and a source build of this SDK; published 0.1.5 packages do not include them.

Account sign-in and binding, application creation and cross-application management, tenant dashboards, wallet, purchases, and auto recharge use the separate tenant management client. Application credentials cannot call these tenant APIs.

Business controllers validate HTTP input and call existing domain RPCs. Classroom entry diagnostics and activity queries use the shared classroom-insights library. Both gateways use the same ClickHouse read configuration (CLICKHOUSE_URL, CLICKHOUSE_USER, CLICKHOUSE_PASSWORD, CLICKHOUSE_DATABASE); unavailable diagnostic storage returns TELEMETRY_SINK_UNAVAILABLE. Every diagnostic query is scoped to the authenticated application and classroom.

Configuration​

import { Eduskit } from '@eduskit/server-sdk';

const sdk = new Eduskit({
client: {
baseUrl: process.env.EDU_SERVER_URL!,
appId: process.env.EDU_APP_ID!,
appKey: process.env.EDU_APP_KEY!,
appSecret: process.env.EDU_APP_SECRET!,
},
});
const c = sdk.client;
const users = await c.users.list({ page: 1, pageSize: 20 });
const files = await c.coursewares.list({ status: 'ready' });

Use the same application configuration in Python, Java, Go, and PHP. In the tables below, c is sdk.client (Node/Python/PHP), sdk.client() (Java), or the result of sdk.Client() (Go). Python method names use snake_case; JSON field names stay camelCase. Go returns (map[string]any, error).

Upload workflow: request a signed URL, call c.uploadFile(url, bytes, contentType), then create the courseware or video record. The upload sends only the content type and bytes to object storage. Python uses upload_file; Go uses UploadFile(ctx, url, bytes, contentType). See business workflow examples for conversion polling, classroom creation, entry codes, and complete diagnostic exports.

Business methodHTTPOperation
client.users.listGET /v1/usersList users
client.users.searchGET /v1/users/searchSearch users
client.users.registerPOST /v1/usersCreate user
client.users.setStatusPATCH /v1/users/statusSet user status
client.classrooms.listGET /v1/classroomsList classrooms
client.classrooms.getGET /v1/classrooms/detailGet classroom
client.classrooms.createPOST /v1/classroomsCreate classroom
client.classrooms.updatePATCH /v1/classrooms/updateUpdate classroom
client.classrooms.startPOST /v1/classrooms/startStart classroom
client.classrooms.endPOST /v1/classrooms/endEnd classroom
client.classrooms.members.listGET /v1/classrooms/membersList classroom members
client.classrooms.members.addPOST /v1/classrooms/membersAdd classroom member
client.classrooms.members.replaceStudentsPUT /v1/classrooms/members/studentsReplace student roster
client.classrooms.coursewares.listGET /v1/classrooms/coursewaresList classroom courseware
client.classrooms.coursewares.bindPOST /v1/classrooms/coursewaresBind classroom courseware
client.classrooms.coursewares.unbindDELETE /v1/classrooms/coursewaresUnbind classroom courseware
client.classroomMedia.listWhiteboardCoursewaresGET /v1/classrooms/whiteboard/coursewaresList whiteboard courseware
client.classroomMedia.addWhiteboardCoursewarePOST /v1/classrooms/whiteboard/coursewaresAdd courseware to whiteboard
client.classrooms.attendanceGET /v1/classrooms/attendanceClassroom attendance
client.classrooms.listEnteredUsersGET /v1/classrooms/entered-usersList entered users
client.classrooms.listJoinAttemptsGET /v1/classrooms/join-attemptsList join attempts
client.classrooms.getEnteredUserTraceGET /v1/classrooms/entered-users/traceGet user entry trace
client.classroomMedia.getLiveSourceGET /v1/classrooms/live-sourceGet live source
client.classroomMedia.setLiveSourcePUT /v1/classrooms/live-sourceSet live source
client.classroomMedia.issueLivePushCredentialPOST /v1/classrooms/live-source/push-credentialIssue live push credential
client.classroomMedia.getLivePlayCredentialsGET /v1/classrooms/live/play-credentialsGet live playback credentials
client.classrooms.entryCode.listGET /v1/classrooms/entry-codesList entry codes and claims
client.classrooms.entryCode.issuePOST /v1/classrooms/entry-codesIssue entry codes
client.classrooms.entryCode.updatePOST /v1/classrooms/entry-codes/updateUpdate or rotate entry code
client.classrooms.entryCode.revokePOST /v1/classrooms/entry-codes/revokeRevoke entry code
client.activity.listGET /v1/classrooms/activityList classroom activity
client.activity.tracksGET /v1/classrooms/activity/tracksGet activity tracks
client.activity.overviewGET /v1/classrooms/activity/overviewGet activity overview
client.activity.detailGET /v1/classrooms/activity/detailGet activity detail
client.coursewares.listGET /v1/coursewaresList courseware library
client.coursewares.createUploadUrlPOST /v1/coursewares/upload-urlCreate courseware upload URL
client.coursewares.createPOST /v1/coursewaresCreate and convert courseware
client.coursewares.getGET /v1/coursewares/detailGet courseware
client.coursewares.getManifestGET /v1/coursewares/manifestGet courseware manifest
client.coursewares.removeDELETE /v1/coursewares/removeDelete courseware
client.coursewares.retryPOST /v1/coursewares/retryRetry courseware conversion
client.liveVideos.listGET /v1/live-videosList live video assets
client.liveVideos.createUploadUrlPOST /v1/live-videos/upload-urlCreate live video upload URL
client.liveVideos.createPOST /v1/live-videosCreate live video asset
client.liveVideos.removeDELETE /v1/live-videos/removeDelete live video asset

users.list​

List users.

GET /v1/users

LanguageCall
Node.jsc.users.list(input)
Pythonc.users.list(**input)
Javac.users.list(input)
Goc.Users.List(ctx, input)
PHP$c->users->list($input)

HTTP fields: ListEduUsersQuery. Sent as URL query parameters.

FieldRequiredTypeDescription
statusNoEduUserStatus | undefinedStatus filter or target status
qNostring | undefinedSearch keyword
pageNonumber | undefinedPage number starting at 1
pageSizeNonumber | undefinedMaximum items per page

Returns HTTP JSON fields described by ListEduUsersResult (shared models).

users.search​

Search users.

GET /v1/users/search

LanguageCall
Node.jsc.users.search(input)
Pythonc.users.search(**input)
Javac.users.search(input)
Goc.Users.Search(ctx, input)
PHP$c->users->search($input)

HTTP fields: SearchEduUsersQuery. Sent as URL query parameters.

FieldRequiredTypeDescription
qNostring | undefinedSearch keyword
statusNoEduUserStatus | undefinedStatus filter or target status
limitNonumber | undefinedSearch result limit, maximum 50
requireOriginIdNoboolean | undefinedOnly users with a business identity

Returns HTTP JSON fields described by SearchEduUsersResult (shared models).

users.register​

Create user.

POST /v1/users

LanguageCall
Node.jsc.users.register(input)
Pythonc.users.register(**input)
Javac.users.register(input)
Goc.Users.Register(ctx, input)
PHP$c->users->register($input)

HTTP fields: CreateEduUserPayload. Sent as a JSON body.

FieldRequiredTypeDescription
originIdNostring | undefinedBusiness user identifier
nicknameYesstringDisplay name
avatarYesstringAvatar URL

Returns HTTP JSON fields described by EduUserRecord (shared models).

users.setStatus​

Set user status.

PATCH /v1/users/status

LanguageCall
Node.jsc.users.setStatus(input)
Pythonc.users.set_status(**input)
Javac.users.setStatus(input)
Goc.Users.SetStatus(ctx, input)
PHP$c->users->setStatus($input)

HTTP fields: UserStatusInput. Sent as a JSON body.

FieldRequiredTypeDescription
eduUserIdYesstringClassroom user ID
statusYesEduUserStatusStatus filter or target status

Returns HTTP JSON fields described by EduUserRecord (shared models).

classrooms.list​

List classrooms.

GET /v1/classrooms

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

HTTP fields: ListClassroomsQuery. 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 HTTP JSON fields described by ListClassroomsResult (shared models).

classrooms.get​

Get classroom.

GET /v1/classrooms/detail

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

HTTP fields: ClassroomIdInput. Sent as URL query parameters.

FieldRequiredTypeDescription
classroomIdYesstringClassroom ID

Returns HTTP JSON fields described by ClassroomRecord (shared models).

classrooms.create​

Create classroom.

POST /v1/classrooms

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

HTTP fields: CreateClassroomPayload. Sent as a 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 HTTP JSON fields described by ClassroomRecord (shared models).

classrooms.update​

Update classroom.

PATCH /v1/classrooms/update

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

HTTP fields: UpdateClassroomInput. Sent as a 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 HTTP JSON fields described by ClassroomRecord (shared models).

classrooms.start​

Start classroom.

POST /v1/classrooms/start

LanguageCall
Node.jsc.classrooms.start(classroomId)
Pythonc.classrooms.start(classroom_id)
Javac.classrooms.start(classroomId)
Goc.Classrooms.Start(ctx, classroomId)
PHP$c->classrooms->start($classroomId)

Pass classroomId as separate method arguments. Other fields go in input.

HTTP fields: ClassroomIdInput. Sent as a JSON body.

FieldRequiredTypeDescription
classroomIdYesstringClassroom ID

Returns HTTP JSON fields described by ClassroomRecord (shared models).

classrooms.end​

End classroom.

POST /v1/classrooms/end

LanguageCall
Node.jsc.classrooms.end(classroomId)
Pythonc.classrooms.end(classroom_id)
Javac.classrooms.end(classroomId)
Goc.Classrooms.End(ctx, classroomId)
PHP$c->classrooms->end($classroomId)

Pass classroomId as separate method arguments. Other fields go in input.

HTTP fields: ClassroomIdInput. Sent as a JSON body.

FieldRequiredTypeDescription
classroomIdYesstringClassroom ID

Returns HTTP JSON fields described by ClassroomRecord (shared models).

classrooms.members.list​

List classroom members.

GET /v1/classrooms/members

LanguageCall
Node.jsc.classrooms.members.list(classroomId)
Pythonc.classrooms.members.list(classroom_id)
Javac.classrooms.members.list(classroomId)
Goc.Classrooms.Members.List(ctx, classroomId)
PHP$c->classrooms->members->list($classroomId)

Pass classroomId as separate method arguments. Other fields go in input.

HTTP fields: ClassroomIdInput. Sent as URL query parameters.

FieldRequiredTypeDescription
classroomIdYesstringClassroom ID

Returns HTTP JSON fields described by ListClassroomMembersResult (shared models).

classrooms.members.add​

Add classroom member.

POST /v1/classrooms/members

LanguageCall
Node.jsc.classrooms.members.add(classroomId, input)
Pythonc.classrooms.members.add(classroom_id, **input)
Javac.classrooms.members.add(classroomId, input)
Goc.Classrooms.Members.Add(ctx, classroomId, input)
PHP$c->classrooms->members->add($classroomId, $input)

Pass classroomId as separate method arguments. Other fields go in input.

HTTP fields: AddMemberInput. Sent as a JSON body.

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

Returns HTTP JSON fields described by MembershipResult (shared models).

classrooms.members.replaceStudents​

Replace student roster.

PUT /v1/classrooms/members/students

LanguageCall
Node.jsc.classrooms.members.replaceStudents(classroomId, input)
Pythonc.classrooms.members.replace_students(classroom_id, **input)
Javac.classrooms.members.replaceStudents(classroomId, input)
Goc.Classrooms.Members.ReplaceStudents(ctx, classroomId, input)
PHP$c->classrooms->members->replaceStudents($classroomId, $input)

Pass classroomId as separate method arguments. Other fields go in input.

HTTP fields: ReplaceStudentsInput. Sent as a JSON body.

FieldRequiredTypeDescription
eduUserIdsYesstring[]Complete replacement student roster
classroomIdYesstringClassroom ID

Returns HTTP JSON fields described by SetClassroomStudentsResult (shared models).

classrooms.coursewares.list​

List classroom courseware.

GET /v1/classrooms/coursewares

LanguageCall
Node.jsc.classrooms.coursewares.list(classroomId)
Pythonc.classrooms.coursewares.list(classroom_id)
Javac.classrooms.coursewares.list(classroomId)
Goc.Classrooms.Coursewares.List(ctx, classroomId)
PHP$c->classrooms->coursewares->list($classroomId)

Pass classroomId as separate method arguments. Other fields go in input.

HTTP fields: ClassroomIdInput. Sent as URL query parameters.

FieldRequiredTypeDescription
classroomIdYesstringClassroom ID

Returns HTTP JSON fields described by ClassroomCoursewaresResult (shared models).

classrooms.coursewares.bind​

Bind classroom courseware.

POST /v1/classrooms/coursewares

LanguageCall
Node.jsc.classrooms.coursewares.bind(classroomId, input)
Pythonc.classrooms.coursewares.bind(classroom_id, **input)
Javac.classrooms.coursewares.bind(classroomId, input)
Goc.Classrooms.Coursewares.Bind(ctx, classroomId, input)
PHP$c->classrooms->coursewares->bind($classroomId, $input)

Pass classroomId as separate method arguments. Other fields go in input.

HTTP fields: BindCoursewaresInput. Sent as a JSON body.

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

Returns HTTP JSON fields described by BindCoursewaresResult (shared models).

classrooms.coursewares.unbind​

Unbind classroom courseware.

DELETE /v1/classrooms/coursewares

LanguageCall
Node.jsc.classrooms.coursewares.unbind(classroomId, input)
Pythonc.classrooms.coursewares.unbind(classroom_id, **input)
Javac.classrooms.coursewares.unbind(classroomId, input)
Goc.Classrooms.Coursewares.Unbind(ctx, classroomId, input)
PHP$c->classrooms->coursewares->unbind($classroomId, $input)

Pass classroomId as separate method arguments. Other fields go in input.

HTTP fields: BindCoursewaresInput. classroomId is a query parameter and coursewareIds is in the JSON body.

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

Returns HTTP JSON fields described by UnbindCoursewaresResult (shared models).

classroomMedia.listWhiteboardCoursewares​

List whiteboard courseware.

GET /v1/classrooms/whiteboard/coursewares

LanguageCall
Node.jsc.classroomMedia.listWhiteboardCoursewares(input)
Pythonc.classroom_media.list_whiteboard_coursewares(**input)
Javac.classroomMedia.listWhiteboardCoursewares(input)
Goc.ClassroomMedia.ListWhiteboardCoursewares(ctx, input)
PHP$c->classroomMedia->listWhiteboardCoursewares($input)

HTTP fields: ClassroomIdInput. Sent as URL query parameters.

FieldRequiredTypeDescription
classroomIdYesstringClassroom ID

Returns HTTP JSON fields described by WhiteboardCoursewaresResult (shared models).

classroomMedia.addWhiteboardCourseware​

Add courseware to whiteboard.

POST /v1/classrooms/whiteboard/coursewares

LanguageCall
Node.jsc.classroomMedia.addWhiteboardCourseware(input)
Pythonc.classroom_media.add_whiteboard_courseware(**input)
Javac.classroomMedia.addWhiteboardCourseware(input)
Goc.ClassroomMedia.AddWhiteboardCourseware(ctx, input)
PHP$c->classroomMedia->addWhiteboardCourseware($input)

HTTP fields: AddWhiteboardCoursewareInput. Sent as a JSON body.

FieldRequiredTypeDescription
coursewareIdYesstringCourseware ID
requestIdYesstringIdentifier for the whiteboard courseware operation
classroomIdYesstringClassroom ID

Returns HTTP JSON fields described by ClassroomWhiteboardCoursewareRecord (shared models).

classrooms.attendance​

Classroom attendance.

GET /v1/classrooms/attendance

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

HTTP fields: AttendanceInput. Sent as URL query parameters.

FieldRequiredTypeDescription
eduUserIdNostring | undefinedClassroom user ID
classroomIdYesstringClassroom ID

Returns HTTP JSON fields described by AttendanceResult (shared models).

classrooms.listEnteredUsers​

List entered users.

GET /v1/classrooms/entered-users

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

HTTP fields: EnteredUsersInput. Sent as URL query parameters.

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

Returns HTTP JSON fields described by ListClassroomEnteredUsersResult (shared models).

classrooms.listJoinAttempts​

List join attempts.

GET /v1/classrooms/join-attempts

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

HTTP fields: JoinAttemptsInput. 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 HTTP JSON fields described by ListClassroomJoinAttemptsResult (shared models).

classrooms.getEnteredUserTrace​

Get user entry trace.

GET /v1/classrooms/entered-users/trace

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

HTTP fields: EnteredUserTraceInput. 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 HTTP JSON fields described by ClassroomEnteredUserTrace (shared models).

classroomMedia.getLiveSource​

Get live source.

GET /v1/classrooms/live-source

LanguageCall
Node.jsc.classroomMedia.getLiveSource(input)
Pythonc.classroom_media.get_live_source(**input)
Javac.classroomMedia.getLiveSource(input)
Goc.ClassroomMedia.GetLiveSource(ctx, input)
PHP$c->classroomMedia->getLiveSource($input)

HTTP fields: ClassroomIdInput. Sent as URL query parameters.

FieldRequiredTypeDescription
classroomIdYesstringClassroom ID

Returns HTTP JSON fields described by LiveSourceRecord (shared models).

classroomMedia.setLiveSource​

Set live source.

PUT /v1/classrooms/live-source

LanguageCall
Node.jsc.classroomMedia.setLiveSource(input)
Pythonc.classroom_media.set_live_source(**input)
Javac.classroomMedia.setLiveSource(input)
Goc.ClassroomMedia.SetLiveSource(ctx, input)
PHP$c->classroomMedia->setLiveSource($input)

HTTP fields: SetLiveSourceInput. Sent as a JSON body.

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

Returns HTTP JSON fields described by LiveSourceRecord (shared models).

classroomMedia.issueLivePushCredential​

Issue live push credential.

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

LanguageCall
Node.jsc.classroomMedia.issueLivePushCredential(input)
Pythonc.classroom_media.issue_live_push_credential(**input)
Javac.classroomMedia.issueLivePushCredential(input)
Goc.ClassroomMedia.IssueLivePushCredential(ctx, input)
PHP$c->classroomMedia->issueLivePushCredential($input)

HTTP fields: ClassroomIdInput. Sent as a JSON body.

FieldRequiredTypeDescription
classroomIdYesstringClassroom ID

Returns HTTP JSON fields described by LivePushCredential (shared models).

classroomMedia.getLivePlayCredentials​

Get live playback credentials.

GET /v1/classrooms/live/play-credentials

LanguageCall
Node.jsc.classroomMedia.getLivePlayCredentials(input)
Pythonc.classroom_media.get_live_play_credentials(**input)
Javac.classroomMedia.getLivePlayCredentials(input)
Goc.ClassroomMedia.GetLivePlayCredentials(ctx, input)
PHP$c->classroomMedia->getLivePlayCredentials($input)

HTTP fields: ClassroomIdInput. Sent as URL query parameters.

FieldRequiredTypeDescription
classroomIdYesstringClassroom ID

Returns HTTP JSON fields described by LivePlayCredentials (shared models).

classrooms.entryCode.list​

List entry codes and claims.

GET /v1/classrooms/entry-codes

LanguageCall
Node.jsc.classrooms.entryCode.list(classroomId)
Pythonc.classrooms.entry_code.list(classroom_id)
Javac.classrooms.entryCode.list(classroomId)
Goc.Classrooms.EntryCode.List(ctx, classroomId)
PHP$c->classrooms->entryCode->list($classroomId)

Pass classroomId as separate method arguments. Other fields go in input.

HTTP fields: ClassroomIdInput. Sent as URL query parameters.

FieldRequiredTypeDescription
classroomIdYesstringClassroom ID

Returns HTTP JSON fields described by EntryCodeList (shared models).

classrooms.entryCode.issue​

Issue entry codes.

POST /v1/classrooms/entry-codes

LanguageCall
Node.jsc.classrooms.entryCode.issue(classroomId, input)
Pythonc.classrooms.entry_code.issue(classroom_id, **input)
Javac.classrooms.entryCode.issue(classroomId, input)
Goc.Classrooms.EntryCode.Issue(ctx, classroomId, input)
PHP$c->classrooms->entryCode->issue($classroomId, $input)

Pass classroomId as separate method arguments. Other fields go in input.

HTTP fields: IssueEntryCodesInput. Sent as a JSON body.

FieldRequiredTypeDescription
roleYes"teacher" | "student"Member or entry code role
maxClaimsYesnumberMaximum claims, 1–500; teacher code uses 1
countNonumber | undefinedIssue count, 1–20; teacher code uses 1
remarkNostring | undefinedRemark, up to 64 characters
classroomIdYesstringClassroom ID

Returns HTTP JSON fields described by EntryCodeList (shared models).

classrooms.entryCode.update​

Update or rotate entry code.

POST /v1/classrooms/entry-codes/update

LanguageCall
Node.jsc.classrooms.entryCode.update(classroomId, input)
Pythonc.classrooms.entry_code.update(classroom_id, **input)
Javac.classrooms.entryCode.update(classroomId, input)
Goc.Classrooms.EntryCode.Update(ctx, classroomId, input)
PHP$c->classrooms->entryCode->update($classroomId, $input)

Pass classroomId as separate method arguments. Other fields go in input.

HTTP fields: UpdateEntryCodeInput. Sent as a JSON body.

FieldRequiredTypeDescription
entryCodeIdYesstringEntry-code record ID
maxClaimsNonumber | undefinedMaximum claims, 1–500; teacher code uses 1
remarkNostring | undefinedRemark, up to 64 characters
rotateNoboolean | undefinedRotate entry-code value
classroomIdYesstringClassroom ID

Returns HTTP JSON fields described by EntryCodeRecord (shared models).

classrooms.entryCode.revoke​

Revoke entry code.

POST /v1/classrooms/entry-codes/revoke

LanguageCall
Node.jsc.classrooms.entryCode.revoke(classroomId, entryCodeId)
Pythonc.classrooms.entry_code.revoke(classroom_id, entry_code_id)
Javac.classrooms.entryCode.revoke(classroomId, entryCodeId)
Goc.Classrooms.EntryCode.Revoke(ctx, classroomId, entryCodeId)
PHP$c->classrooms->entryCode->revoke($classroomId, $entryCodeId)

Pass classroomId, entryCodeId as separate method arguments. Other fields go in input.

HTTP fields: RevokeEntryCodeInput. Sent as a JSON body.

FieldRequiredTypeDescription
entryCodeIdYesstringEntry-code record ID
classroomIdYesstringClassroom ID

Returns HTTP JSON fields described by EntryCodeRecord (shared models).

activity.list​

List classroom activity.

GET /v1/classrooms/activity

LanguageCall
Node.jsc.activity.list(input)
Pythonc.activity.list(**input)
Javac.activity.list(input)
Goc.Activity.List(ctx, input)
PHP$c->activity->list($input)

HTTP fields: ActivityQuery. Sent as URL query parameters.

FieldRequiredTypeDescription
classroomIdYesstringClassroom ID
fromNostring | undefinedRange start, ISO 8601
toNostring | undefinedRange end, ISO 8601
deviceIdNostring | undefinedDevice identifier
attemptIdNostring | undefinedJoin attempt ID
categoryNo"join" | "stage" | "media" | "permission" | "message" | "whiteboard" | "tool" | "connection" | "lifecycle" | "other" | undefinedActivity category
relationNo"initiated" | "affected" | "observed" | "system" | "server" | undefinedUser relation to the activity
eduUserIdYesstringClassroom user ID
cursorNostring | undefinedCursor returned by the previous page
pageSizeNonumber | undefinedMaximum items per page

Returns HTTP JSON fields described by ActivityPage (shared models).

activity.tracks​

Get activity tracks.

GET /v1/classrooms/activity/tracks

LanguageCall
Node.jsc.activity.tracks(input)
Pythonc.activity.tracks(**input)
Javac.activity.tracks(input)
Goc.Activity.Tracks(ctx, input)
PHP$c->activity->tracks($input)

HTTP fields: ActivityQuery. Sent as URL query parameters.

FieldRequiredTypeDescription
classroomIdYesstringClassroom ID
fromNostring | undefinedRange start, ISO 8601
toNostring | undefinedRange end, ISO 8601
deviceIdNostring | undefinedDevice identifier
attemptIdNostring | undefinedJoin attempt ID
categoryNo"join" | "stage" | "media" | "permission" | "message" | "whiteboard" | "tool" | "connection" | "lifecycle" | "other" | undefinedActivity category
relationNo"initiated" | "affected" | "observed" | "system" | "server" | undefinedUser relation to the activity
eduUserIdYesstringClassroom user ID
cursorNostring | undefinedCursor returned by the previous page
pageSizeNonumber | undefinedMaximum items per page

Returns HTTP JSON fields described by ActivityTracks (shared models).

activity.overview​

Get activity overview.

GET /v1/classrooms/activity/overview

LanguageCall
Node.jsc.activity.overview(input)
Pythonc.activity.overview(**input)
Javac.activity.overview(input)
Goc.Activity.Overview(ctx, input)
PHP$c->activity->overview($input)

HTTP fields: ActivityQuery. Sent as URL query parameters.

FieldRequiredTypeDescription
classroomIdYesstringClassroom ID
fromNostring | undefinedRange start, ISO 8601
toNostring | undefinedRange end, ISO 8601
deviceIdNostring | undefinedDevice identifier
attemptIdNostring | undefinedJoin attempt ID
categoryNo"join" | "stage" | "media" | "permission" | "message" | "whiteboard" | "tool" | "connection" | "lifecycle" | "other" | undefinedActivity category
relationNo"initiated" | "affected" | "observed" | "system" | "server" | undefinedUser relation to the activity
eduUserIdYesstringClassroom user ID
cursorNostring | undefinedCursor returned by the previous page
pageSizeNonumber | undefinedMaximum items per page

Returns HTTP JSON fields described by ActivityOverview (shared models).

activity.detail​

Get activity detail.

GET /v1/classrooms/activity/detail

LanguageCall
Node.jsc.activity.detail(input)
Pythonc.activity.detail(**input)
Javac.activity.detail(input)
Goc.Activity.Detail(ctx, input)
PHP$c->activity->detail($input)

HTTP fields: ActivityDetailInput. Sent as URL query parameters.

FieldRequiredTypeDescription
classroomIdYesstringClassroom ID
fromYesstringRange start, ISO 8601
toYesstringRange end, ISO 8601
asOfYesstringObservation cutoff returned by the list
eduUserIdYesstringClassroom user ID
activityIdYesstringActivity ID
cursorNostring | undefinedCursor returned by the previous page
pageSizeNonumber | undefinedMaximum items per page

Returns HTTP JSON fields described by ActivityDetail (shared models).

coursewares.list​

List courseware library.

GET /v1/coursewares

LanguageCall
Node.jsc.coursewares.list(input)
Pythonc.coursewares.list(**input)
Javac.coursewares.list(input)
Goc.Coursewares.List(ctx, input)
PHP$c->coursewares->list($input)

HTTP fields: ListCoursewaresInput. Sent as URL query parameters.

FieldRequiredTypeDescription
classroomIdNostring | undefinedClassroom ID
ownerEduUserIdNostring | undefinedPrivate-library owner; keep consistent between upload and creation
statusNoCoursewareStatus | undefinedStatus filter or target status
qNostring | undefinedSearch keyword
pageNonumber | undefinedPage number starting at 1
pageSizeNonumber | undefinedMaximum items per page

Returns HTTP JSON fields described by ListCoursewaresResult (shared models).

coursewares.createUploadUrl​

Create courseware upload URL.

POST /v1/coursewares/upload-url

LanguageCall
Node.jsc.coursewares.createUploadUrl(input)
Pythonc.coursewares.create_upload_url(**input)
Javac.coursewares.createUploadUrl(input)
Goc.Coursewares.CreateUploadUrl(ctx, input)
PHP$c->coursewares->createUploadUrl($input)

HTTP fields: CreateUploadUrlPayload. Sent as a JSON body.

FieldRequiredTypeDescription
fileNameYesstringFile name including extension
contentHashYesstringFile SHA-256 in lowercase hex; courseware requires 64 characters
contentTypeNostring | undefinedFile MIME type
expiresSecondsNonumber | undefinedUpload URL lifetime in seconds, 0–86400; 0 uses the default
ownerEduUserIdNostring | undefinedPrivate-library owner; keep consistent between upload and creation

Returns HTTP JSON fields described by UploadUrlResult (shared models).

coursewares.create​

Create and convert courseware.

POST /v1/coursewares

LanguageCall
Node.jsc.coursewares.create(input)
Pythonc.coursewares.create(**input)
Javac.coursewares.create(input)
Goc.Coursewares.Create(ctx, input)
PHP$c->coursewares->create($input)

HTTP fields: CreateCoursewarePayload. Sent as a JSON body.

FieldRequiredTypeDescription
fileNameYesstringFile name including extension
originalNameYesstringOriginal file name including extension
formatYesstringCourseware file format
sizeBytesYesnumberFile size in bytes
objectKeyYesstringObject key from the upload response
sourceUrlYesstringSource file URL from the upload response
contentHashYesstringFile SHA-256 in lowercase hex; courseware requires 64 characters
ownerEduUserIdNostring | undefinedPrivate-library owner; keep consistent between upload and creation

Returns HTTP JSON fields described by CoursewareRecord (shared models).

coursewares.get​

Get courseware.

GET /v1/coursewares/detail

LanguageCall
Node.jsc.coursewares.get(input)
Pythonc.coursewares.get(**input)
Javac.coursewares.get(input)
Goc.Coursewares.Get(ctx, input)
PHP$c->coursewares->get($input)

HTTP fields: CoursewareIdInput. Sent as URL query parameters.

FieldRequiredTypeDescription
coursewareIdYesstringCourseware ID

Returns HTTP JSON fields described by CoursewareRecord (shared models).

coursewares.getManifest​

Get courseware manifest.

GET /v1/coursewares/manifest

LanguageCall
Node.jsc.coursewares.getManifest(input)
Pythonc.coursewares.get_manifest(**input)
Javac.coursewares.getManifest(input)
Goc.Coursewares.GetManifest(ctx, input)
PHP$c->coursewares->getManifest($input)

HTTP fields: CoursewareIdInput. Sent as URL query parameters.

FieldRequiredTypeDescription
coursewareIdYesstringCourseware ID

Returns HTTP JSON fields described by CoursewareManifest (shared models).

coursewares.remove​

Delete courseware.

DELETE /v1/coursewares/remove

LanguageCall
Node.jsc.coursewares.remove(input)
Pythonc.coursewares.remove(**input)
Javac.coursewares.remove(input)
Goc.Coursewares.Remove(ctx, input)
PHP$c->coursewares->remove($input)

HTTP fields: CoursewareIdInput. Sent as URL query parameters.

FieldRequiredTypeDescription
coursewareIdYesstringCourseware ID

Returns HTTP JSON fields described by DeleteResult (shared models).

coursewares.retry​

Retry courseware conversion.

POST /v1/coursewares/retry

LanguageCall
Node.jsc.coursewares.retry(input)
Pythonc.coursewares.retry(**input)
Javac.coursewares.retry(input)
Goc.Coursewares.Retry(ctx, input)
PHP$c->coursewares->retry($input)

HTTP fields: CoursewareIdInput. Sent as a JSON body.

FieldRequiredTypeDescription
coursewareIdYesstringCourseware ID

Returns HTTP JSON fields described by CoursewareRecord (shared models).

liveVideos.list​

List live video assets.

GET /v1/live-videos

LanguageCall
Node.jsc.liveVideos.list(input)
Pythonc.live_videos.list(**input)
Javac.liveVideos.list(input)
Goc.LiveVideos.List(ctx, input)
PHP$c->liveVideos->list($input)

HTTP fields: PaginationInput. Sent as URL query parameters.

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

Returns HTTP JSON fields described by ListLiveVideosResult (shared models).

liveVideos.createUploadUrl​

Create live video upload URL.

POST /v1/live-videos/upload-url

LanguageCall
Node.jsc.liveVideos.createUploadUrl(input)
Pythonc.live_videos.create_upload_url(**input)
Javac.liveVideos.createUploadUrl(input)
Goc.LiveVideos.CreateUploadUrl(ctx, input)
PHP$c->liveVideos->createUploadUrl($input)

HTTP fields: LiveVideoUploadInput. Sent as a JSON body.

FieldRequiredTypeDescription
fileNameYesstringFile name including extension
contentTypeNostring | undefinedFile MIME type

Returns HTTP JSON fields described by LiveVideoUploadResult (shared models).

liveVideos.create​

Create live video asset.

POST /v1/live-videos

LanguageCall
Node.jsc.liveVideos.create(input)
Pythonc.live_videos.create(**input)
Javac.liveVideos.create(input)
Goc.LiveVideos.Create(ctx, input)
PHP$c->liveVideos->create($input)

HTTP fields: CreateLiveVideoInput. Sent as a JSON body.

FieldRequiredTypeDescription
titleYesstringVideo asset title
objectKeyYesstringObject key from the upload response
contentHashNostring | undefinedFile SHA-256 in lowercase hex; courseware requires 64 characters
sizeBytesNonumber | undefinedFile size in bytes

Returns HTTP JSON fields described by LiveVideoRecord (shared models).

liveVideos.remove​

Delete live video asset.

DELETE /v1/live-videos/remove

LanguageCall
Node.jsc.liveVideos.remove(input)
Pythonc.live_videos.remove(**input)
Javac.liveVideos.remove(input)
Goc.LiveVideos.Remove(ctx, input)
PHP$c->liveVideos->remove($input)

HTTP fields: LiveVideoIdInput. Sent as URL query parameters.

FieldRequiredTypeDescription
liveVideoIdYesstringLive video asset ID

Returns HTTP JSON fields described by DeleteResult (shared models).