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 method | HTTP | Operation |
|---|---|---|
client.users.list | GET /v1/users | List users |
client.users.search | GET /v1/users/search | Search users |
client.users.register | POST /v1/users | Create user |
client.users.setStatus | PATCH /v1/users/status | Set user status |
client.classrooms.list | GET /v1/classrooms | List classrooms |
client.classrooms.get | GET /v1/classrooms/detail | Get classroom |
client.classrooms.create | POST /v1/classrooms | Create classroom |
client.classrooms.update | PATCH /v1/classrooms/update | Update classroom |
client.classrooms.start | POST /v1/classrooms/start | Start classroom |
client.classrooms.end | POST /v1/classrooms/end | End classroom |
client.classrooms.members.list | GET /v1/classrooms/members | List classroom members |
client.classrooms.members.add | POST /v1/classrooms/members | Add classroom member |
client.classrooms.members.replaceStudents | PUT /v1/classrooms/members/students | Replace student roster |
client.classrooms.coursewares.list | GET /v1/classrooms/coursewares | List classroom courseware |
client.classrooms.coursewares.bind | POST /v1/classrooms/coursewares | Bind classroom courseware |
client.classrooms.coursewares.unbind | DELETE /v1/classrooms/coursewares | Unbind classroom courseware |
client.classroomMedia.listWhiteboardCoursewares | GET /v1/classrooms/whiteboard/coursewares | List whiteboard courseware |
client.classroomMedia.addWhiteboardCourseware | POST /v1/classrooms/whiteboard/coursewares | Add courseware to whiteboard |
client.classrooms.attendance | GET /v1/classrooms/attendance | Classroom attendance |
client.classrooms.listEnteredUsers | GET /v1/classrooms/entered-users | List entered users |
client.classrooms.listJoinAttempts | GET /v1/classrooms/join-attempts | List join attempts |
client.classrooms.getEnteredUserTrace | GET /v1/classrooms/entered-users/trace | Get user entry trace |
client.classroomMedia.getLiveSource | GET /v1/classrooms/live-source | Get live source |
client.classroomMedia.setLiveSource | PUT /v1/classrooms/live-source | Set live source |
client.classroomMedia.issueLivePushCredential | POST /v1/classrooms/live-source/push-credential | Issue live push credential |
client.classroomMedia.getLivePlayCredentials | GET /v1/classrooms/live/play-credentials | Get live playback credentials |
client.classrooms.entryCode.list | GET /v1/classrooms/entry-codes | List entry codes and claims |
client.classrooms.entryCode.issue | POST /v1/classrooms/entry-codes | Issue entry codes |
client.classrooms.entryCode.update | POST /v1/classrooms/entry-codes/update | Update or rotate entry code |
client.classrooms.entryCode.revoke | POST /v1/classrooms/entry-codes/revoke | Revoke entry code |
client.activity.list | GET /v1/classrooms/activity | List classroom activity |
client.activity.tracks | GET /v1/classrooms/activity/tracks | Get activity tracks |
client.activity.overview | GET /v1/classrooms/activity/overview | Get activity overview |
client.activity.detail | GET /v1/classrooms/activity/detail | Get activity detail |
client.coursewares.list | GET /v1/coursewares | List courseware library |
client.coursewares.createUploadUrl | POST /v1/coursewares/upload-url | Create courseware upload URL |
client.coursewares.create | POST /v1/coursewares | Create and convert courseware |
client.coursewares.get | GET /v1/coursewares/detail | Get courseware |
client.coursewares.getManifest | GET /v1/coursewares/manifest | Get courseware manifest |
client.coursewares.remove | DELETE /v1/coursewares/remove | Delete courseware |
client.coursewares.retry | POST /v1/coursewares/retry | Retry courseware conversion |
client.liveVideos.list | GET /v1/live-videos | List live video assets |
client.liveVideos.createUploadUrl | POST /v1/live-videos/upload-url | Create live video upload URL |
client.liveVideos.create | POST /v1/live-videos | Create live video asset |
client.liveVideos.remove | DELETE /v1/live-videos/remove | Delete live video asset |
users.list
List users.
GET /v1/users
| Language | Call |
|---|---|
| Node.js | c.users.list(input) |
| Python | c.users.list(**input) |
| Java | c.users.list(input) |
| Go | c.Users.List(ctx, input) |
| PHP | $c->users->list($input) |
HTTP fields: ListEduUsersQuery. Sent as URL query parameters.
| Field | Required | Type | Description |
|---|---|---|---|
status | No | EduUserStatus | undefined | Status filter or target status |
q | No | string | undefined | Search keyword |
page | No | number | undefined | Page number starting at 1 |
pageSize | No | number | undefined | Maximum items per page |
Returns HTTP JSON fields described by ListEduUsersResult (shared models).
users.search
Search users.
GET /v1/users/search
| Language | Call |
|---|---|
| Node.js | c.users.search(input) |
| Python | c.users.search(**input) |
| Java | c.users.search(input) |
| Go | c.Users.Search(ctx, input) |
| PHP | $c->users->search($input) |
HTTP fields: SearchEduUsersQuery. Sent as URL query parameters.
| Field | Required | Type | Description |
|---|---|---|---|
q | No | string | undefined | Search keyword |
status | No | EduUserStatus | undefined | Status filter or target status |
limit | No | number | undefined | Search result limit, maximum 50 |
requireOriginId | No | boolean | undefined | Only users with a business identity |
Returns HTTP JSON fields described by SearchEduUsersResult (shared models).
users.register
Create user.
POST /v1/users
| Language | Call |
|---|---|
| Node.js | c.users.register(input) |
| Python | c.users.register(**input) |
| Java | c.users.register(input) |
| Go | c.Users.Register(ctx, input) |
| PHP | $c->users->register($input) |
HTTP fields: CreateEduUserPayload. Sent as a JSON body.
| Field | Required | Type | Description |
|---|---|---|---|
originId | No | string | undefined | Business user identifier |
nickname | Yes | string | Display name |
avatar | Yes | string | Avatar URL |
Returns HTTP JSON fields described by EduUserRecord (shared models).
users.setStatus
Set user status.
PATCH /v1/users/status
| Language | Call |
|---|---|
| Node.js | c.users.setStatus(input) |
| Python | c.users.set_status(**input) |
| Java | c.users.setStatus(input) |
| Go | c.Users.SetStatus(ctx, input) |
| PHP | $c->users->setStatus($input) |
HTTP fields: UserStatusInput. Sent as a JSON body.
| Field | Required | Type | Description |
|---|---|---|---|
eduUserId | Yes | string | Classroom user ID |
status | Yes | EduUserStatus | Status filter or target status |
Returns HTTP JSON fields described by EduUserRecord (shared models).
classrooms.list
List classrooms.
GET /v1/classrooms
| Language | Call |
|---|---|
| Node.js | c.classrooms.list(input) |
| Python | c.classrooms.list(**input) |
| Java | c.classrooms.list(input) |
| Go | c.Classrooms.List(ctx, input) |
| PHP | $c->classrooms->list($input) |
HTTP fields: ListClassroomsQuery. Sent as URL query parameters.
| Field | Required | Type | Description |
|---|---|---|---|
status | No | ClassroomStatus | undefined | Status filter or target status |
q | No | string | undefined | Search keyword |
startsAtFrom | No | string | undefined | Inclusive scheduled-start lower bound |
startsAtTo | No | string | undefined | Exclusive scheduled-start upper bound |
actualStartedAtFrom | No | string | undefined | Actual-start lower bound |
actualStartedAtTo | No | string | undefined | Actual-start upper bound |
page | No | number | undefined | Page number starting at 1 |
pageSize | No | number | undefined | Maximum items per page |
Returns HTTP JSON fields described by ListClassroomsResult (shared models).
classrooms.get
Get classroom.
GET /v1/classrooms/detail
| Language | Call |
|---|---|
| Node.js | c.classrooms.get(input) |
| Python | c.classrooms.get(**input) |
| Java | c.classrooms.get(input) |
| Go | c.Classrooms.Get(ctx, input) |
| PHP | $c->classrooms->get($input) |
HTTP fields: ClassroomIdInput. Sent as URL query parameters.
| Field | Required | Type | Description |
|---|---|---|---|
classroomId | Yes | string | Classroom ID |
Returns HTTP JSON fields described by ClassroomRecord (shared models).
classrooms.create
Create classroom.
POST /v1/classrooms
| Language | Call |
|---|---|
| Node.js | c.classrooms.create(input) |
| Python | c.classrooms.create(**input) |
| Java | c.classrooms.create(input) |
| Go | c.Classrooms.Create(ctx, input) |
| PHP | $c->classrooms->create($input) |
HTTP fields: CreateClassroomPayload. Sent as a JSON body.
| Field | Required | Type | Description |
|---|---|---|---|
name | Yes | string | Application or classroom name |
teacherEduUserId | Yes | string | Teacher user ID |
startsAt | Yes | string | Scheduled start, ISO 8601 |
durationMinutes | Yes | number | Duration in minutes; classroom creation accepts 5–480 |
resolution | No | ClassroomResolution | undefined | Classroom video resolution |
maxOnStage | No | number | undefined | Concurrent on-stage limit, 1–16 |
maxAudience | No | number | undefined | Total concurrent room limit including on-stage users, up to 100000 |
classroomType | No | ClassroomType | undefined | realtime or live classroom |
liveSourceKind | No | string | undefined | Live source kind at classroom creation |
liveVideoId | No | string | undefined | Live video asset ID |
pullStreamUrl | No | string | undefined | Source pull-stream URL |
recordMode | No | ClassroomRecordMode | undefined | Recording mode |
avSubscribeMode | No | ClassroomAvSubscribeMode | undefined | Audio/video subscription mode |
defaultOnStage | No | boolean | undefined | Default on-stage state for students and assistants |
allowTeacherControlDevice | No | boolean | undefined | Allow teacher device control |
overtimeMinutes | No | number | undefined | Allowed overtime in minutes, 0–180 |
autoStartOnSchedule | No | boolean | undefined | Automatically start on schedule |
recordBackgroundUrl | No | string | undefined | Recording background image URL |
joinPolicy | No | ClassroomJoinPolicy | undefined | Invited-only or open-application joining policy |
videoOnly | No | boolean | undefined | Video-only classroom without whiteboard |
coursewareIds | No | string[] | undefined | Courseware IDs, at most 50 per binding request |
studentEduUserIds | No | string[] | undefined | Student IDs to add on creation |
uiConfig | No | Record<string, unknown> | undefined | Classroom UI configuration |
Returns HTTP JSON fields described by ClassroomRecord (shared models).
classrooms.update
Update classroom.
PATCH /v1/classrooms/update
| Language | Call |
|---|---|
| Node.js | c.classrooms.update(input) |
| Python | c.classrooms.update(**input) |
| Java | c.classrooms.update(input) |
| Go | c.Classrooms.Update(ctx, input) |
| PHP | $c->classrooms->update($input) |
HTTP fields: UpdateClassroomInput. Sent as a JSON body.
| Field | Required | Type | Description |
|---|---|---|---|
classroomId | Yes | string | Classroom ID |
name | Yes | string | Application or classroom name |
teacherEduUserId | Yes | string | Teacher user ID |
resolution | No | ClassroomResolution | undefined | Classroom video resolution |
maxOnStage | No | number | undefined | Concurrent on-stage limit, 1–16 |
maxAudience | No | number | undefined | Total concurrent room limit including on-stage users, up to 100000 |
classroomType | No | ClassroomType | undefined | realtime or live classroom |
liveSourceKind | No | string | undefined | Live source kind at classroom creation |
liveVideoId | No | string | undefined | Live video asset ID |
pullStreamUrl | No | string | undefined | Source pull-stream URL |
recordMode | No | ClassroomRecordMode | undefined | Recording mode |
avSubscribeMode | No | ClassroomAvSubscribeMode | undefined | Audio/video subscription mode |
defaultOnStage | No | boolean | undefined | Default on-stage state for students and assistants |
allowTeacherControlDevice | No | boolean | undefined | Allow teacher device control |
overtimeMinutes | No | number | undefined | Allowed overtime in minutes, 0–180 |
autoStartOnSchedule | No | boolean | undefined | Automatically start on schedule |
recordBackgroundUrl | No | string | undefined | Recording background image URL |
joinPolicy | No | ClassroomJoinPolicy | undefined | Invited-only or open-application joining policy |
videoOnly | No | boolean | undefined | Video-only classroom without whiteboard |
uiConfig | No | Record<string, unknown> | undefined | Classroom UI configuration |
Returns HTTP JSON fields described by ClassroomRecord (shared models).
classrooms.start
Start classroom.
POST /v1/classrooms/start
| Language | Call |
|---|---|
| Node.js | c.classrooms.start(classroomId) |
| Python | c.classrooms.start(classroom_id) |
| Java | c.classrooms.start(classroomId) |
| Go | c.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.
| Field | Required | Type | Description |
|---|---|---|---|
classroomId | Yes | string | Classroom ID |
Returns HTTP JSON fields described by ClassroomRecord (shared models).
classrooms.end
End classroom.
POST /v1/classrooms/end
| Language | Call |
|---|---|
| Node.js | c.classrooms.end(classroomId) |
| Python | c.classrooms.end(classroom_id) |
| Java | c.classrooms.end(classroomId) |
| Go | c.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.
| Field | Required | Type | Description |
|---|---|---|---|
classroomId | Yes | string | Classroom ID |
Returns HTTP JSON fields described by ClassroomRecord (shared models).
classrooms.members.list
List classroom members.
GET /v1/classrooms/members
| Language | Call |
|---|---|
| Node.js | c.classrooms.members.list(classroomId) |
| Python | c.classrooms.members.list(classroom_id) |
| Java | c.classrooms.members.list(classroomId) |
| Go | c.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.
| Field | Required | Type | Description |
|---|---|---|---|
classroomId | Yes | string | Classroom ID |
Returns HTTP JSON fields described by ListClassroomMembersResult (shared models).
classrooms.members.add
Add classroom member.
POST /v1/classrooms/members
| Language | Call |
|---|---|
| Node.js | c.classrooms.members.add(classroomId, input) |
| Python | c.classrooms.members.add(classroom_id, **input) |
| Java | c.classrooms.members.add(classroomId, input) |
| Go | c.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.
| Field | Required | Type | Description |
|---|---|---|---|
eduUserId | Yes | string | Classroom user ID |
role | Yes | "teacher" | "assistant" | "student" | "inspector" | Member or entry code role |
classroomId | Yes | string | Classroom ID |
Returns HTTP JSON fields described by MembershipResult (shared models).
classrooms.members.replaceStudents
Replace student roster.
PUT /v1/classrooms/members/students
| Language | Call |
|---|---|
| Node.js | c.classrooms.members.replaceStudents(classroomId, input) |
| Python | c.classrooms.members.replace_students(classroom_id, **input) |
| Java | c.classrooms.members.replaceStudents(classroomId, input) |
| Go | c.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.
| Field | Required | Type | Description |
|---|---|---|---|
eduUserIds | Yes | string[] | Complete replacement student roster |
classroomId | Yes | string | Classroom ID |
Returns HTTP JSON fields described by SetClassroomStudentsResult (shared models).
classrooms.coursewares.list
List classroom courseware.
GET /v1/classrooms/coursewares
| Language | Call |
|---|---|
| Node.js | c.classrooms.coursewares.list(classroomId) |
| Python | c.classrooms.coursewares.list(classroom_id) |
| Java | c.classrooms.coursewares.list(classroomId) |
| Go | c.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.
| Field | Required | Type | Description |
|---|---|---|---|
classroomId | Yes | string | Classroom ID |
Returns HTTP JSON fields described by ClassroomCoursewaresResult (shared models).
classrooms.coursewares.bind
Bind classroom courseware.
POST /v1/classrooms/coursewares
| Language | Call |
|---|---|
| Node.js | c.classrooms.coursewares.bind(classroomId, input) |
| Python | c.classrooms.coursewares.bind(classroom_id, **input) |
| Java | c.classrooms.coursewares.bind(classroomId, input) |
| Go | c.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.
| Field | Required | Type | Description |
|---|---|---|---|
coursewareIds | Yes | string[] | Courseware IDs, at most 50 per binding request |
classroomId | Yes | string | Classroom ID |
Returns HTTP JSON fields described by BindCoursewaresResult (shared models).
classrooms.coursewares.unbind
Unbind classroom courseware.
DELETE /v1/classrooms/coursewares
| Language | Call |
|---|---|
| Node.js | c.classrooms.coursewares.unbind(classroomId, input) |
| Python | c.classrooms.coursewares.unbind(classroom_id, **input) |
| Java | c.classrooms.coursewares.unbind(classroomId, input) |
| Go | c.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.
| Field | Required | Type | Description |
|---|---|---|---|
coursewareIds | Yes | string[] | Courseware IDs, at most 50 per binding request |
classroomId | Yes | string | Classroom ID |
Returns HTTP JSON fields described by UnbindCoursewaresResult (shared models).
classroomMedia.listWhiteboardCoursewares
List whiteboard courseware.
GET /v1/classrooms/whiteboard/coursewares
| Language | Call |
|---|---|
| Node.js | c.classroomMedia.listWhiteboardCoursewares(input) |
| Python | c.classroom_media.list_whiteboard_coursewares(**input) |
| Java | c.classroomMedia.listWhiteboardCoursewares(input) |
| Go | c.ClassroomMedia.ListWhiteboardCoursewares(ctx, input) |
| PHP | $c->classroomMedia->listWhiteboardCoursewares($input) |
HTTP fields: ClassroomIdInput. Sent as URL query parameters.
| Field | Required | Type | Description |
|---|---|---|---|
classroomId | Yes | string | Classroom ID |
Returns HTTP JSON fields described by WhiteboardCoursewaresResult (shared models).
classroomMedia.addWhiteboardCourseware
Add courseware to whiteboard.
POST /v1/classrooms/whiteboard/coursewares
| Language | Call |
|---|---|
| Node.js | c.classroomMedia.addWhiteboardCourseware(input) |
| Python | c.classroom_media.add_whiteboard_courseware(**input) |
| Java | c.classroomMedia.addWhiteboardCourseware(input) |
| Go | c.ClassroomMedia.AddWhiteboardCourseware(ctx, input) |
| PHP | $c->classroomMedia->addWhiteboardCourseware($input) |
HTTP fields: AddWhiteboardCoursewareInput. Sent as a JSON body.
| Field | Required | Type | Description |
|---|---|---|---|
coursewareId | Yes | string | Courseware ID |
requestId | Yes | string | Identifier for the whiteboard courseware operation |
classroomId | Yes | string | Classroom ID |
Returns HTTP JSON fields described by ClassroomWhiteboardCoursewareRecord (shared models).
classrooms.attendance
Classroom attendance.
GET /v1/classrooms/attendance
| Language | Call |
|---|---|
| Node.js | c.classrooms.attendance(input) |
| Python | c.classrooms.attendance(**input) |
| Java | c.classrooms.attendance(input) |
| Go | c.Classrooms.Attendance(ctx, input) |
| PHP | $c->classrooms->attendance($input) |
HTTP fields: AttendanceInput. Sent as URL query parameters.
| Field | Required | Type | Description |
|---|---|---|---|
eduUserId | No | string | undefined | Classroom user ID |
classroomId | Yes | string | Classroom ID |
Returns HTTP JSON fields described by AttendanceResult (shared models).
classrooms.listEnteredUsers
List entered users.
GET /v1/classrooms/entered-users
| Language | Call |
|---|---|
| Node.js | c.classrooms.listEnteredUsers(input) |
| Python | c.classrooms.list_entered_users(**input) |
| Java | c.classrooms.listEnteredUsers(input) |
| Go | c.Classrooms.ListEnteredUsers(ctx, input) |
| PHP | $c->classrooms->listEnteredUsers($input) |
HTTP fields: EnteredUsersInput. Sent as URL query parameters.
| Field | Required | Type | Description |
|---|---|---|---|
classroomId | Yes | string | Classroom ID |
page | No | number | undefined | Page number starting at 1 |
pageSize | No | number | undefined | Maximum items per page |
Returns HTTP JSON fields described by ListClassroomEnteredUsersResult (shared models).
classrooms.listJoinAttempts
List join attempts.
GET /v1/classrooms/join-attempts
| Language | Call |
|---|---|
| Node.js | c.classrooms.listJoinAttempts(input) |
| Python | c.classrooms.list_join_attempts(**input) |
| Java | c.classrooms.listJoinAttempts(input) |
| Go | c.Classrooms.ListJoinAttempts(ctx, input) |
| PHP | $c->classrooms->listJoinAttempts($input) |
HTTP fields: JoinAttemptsInput. Sent as URL query parameters.
| Field | Required | Type | Description |
|---|---|---|---|
classroomId | Yes | string | Classroom ID |
result | No | string | undefined | Entry-result filter |
joinStatus | No | string | undefined | Join-status filter |
failureDomain | No | string | undefined | Failure-domain filter |
platform | No | string | undefined | Client platform |
sdkVersion | No | string | undefined | SDK version |
appVersion | No | string | undefined | Client application version |
networkType | No | string | undefined | Network type |
provider | No | string | undefined | Provider |
eduUserId | No | string | undefined | Classroom user ID |
startedAtFrom | No | string | undefined | Attempt-start lower bound |
startedAtTo | No | string | undefined | Attempt-start upper bound |
cursor | No | string | undefined | Cursor returned by the previous page |
pageSize | No | number | undefined | Maximum items per page |
Returns HTTP JSON fields described by ListClassroomJoinAttemptsResult (shared models).
classrooms.getEnteredUserTrace
Get user entry trace.
GET /v1/classrooms/entered-users/trace
| Language | Call |
|---|---|
| Node.js | c.classrooms.getEnteredUserTrace(input) |
| Python | c.classrooms.get_entered_user_trace(**input) |
| Java | c.classrooms.getEnteredUserTrace(input) |
| Go | c.Classrooms.GetEnteredUserTrace(ctx, input) |
| PHP | $c->classrooms->getEnteredUserTrace($input) |
HTTP fields: EnteredUserTraceInput. Sent as URL query parameters.
| Field | Required | Type | Description |
|---|---|---|---|
classroomId | Yes | string | Classroom ID |
attemptId | Yes | string | Join attempt ID |
cursor | No | string | undefined | Cursor returned by the previous page |
pageSize | No | number | undefined | Maximum items per page |
sessionsCursor | No | string | undefined | Session-page cursor |
sessionsPageSize | No | number | undefined | Session page size |
eduUserId | Yes | string | Classroom user ID |
Returns HTTP JSON fields described by ClassroomEnteredUserTrace (shared models).
classroomMedia.getLiveSource
Get live source.
GET /v1/classrooms/live-source
| Language | Call |
|---|---|
| Node.js | c.classroomMedia.getLiveSource(input) |
| Python | c.classroom_media.get_live_source(**input) |
| Java | c.classroomMedia.getLiveSource(input) |
| Go | c.ClassroomMedia.GetLiveSource(ctx, input) |
| PHP | $c->classroomMedia->getLiveSource($input) |
HTTP fields: ClassroomIdInput. Sent as URL query parameters.
| Field | Required | Type | Description |
|---|---|---|---|
classroomId | Yes | string | Classroom ID |
Returns HTTP JSON fields described by LiveSourceRecord (shared models).
classroomMedia.setLiveSource
Set live source.
PUT /v1/classrooms/live-source
| Language | Call |
|---|---|
| Node.js | c.classroomMedia.setLiveSource(input) |
| Python | c.classroom_media.set_live_source(**input) |
| Java | c.classroomMedia.setLiveSource(input) |
| Go | c.ClassroomMedia.SetLiveSource(ctx, input) |
| PHP | $c->classroomMedia->setLiveSource($input) |
HTTP fields: SetLiveSourceInput. Sent as a JSON body.
| Field | Required | Type | Description |
|---|---|---|---|
kind | Yes | "device" | "file" | "push" | "pull" | Live source kind |
liveVideoId | No | string | undefined | Live video asset ID |
pullStreamUrl | No | string | undefined | Source pull-stream URL |
classroomId | Yes | string | Classroom ID |
Returns HTTP JSON fields described by LiveSourceRecord (shared models).
classroomMedia.issueLivePushCredential
Issue live push credential.
POST /v1/classrooms/live-source/push-credential
| Language | Call |
|---|---|
| Node.js | c.classroomMedia.issueLivePushCredential(input) |
| Python | c.classroom_media.issue_live_push_credential(**input) |
| Java | c.classroomMedia.issueLivePushCredential(input) |
| Go | c.ClassroomMedia.IssueLivePushCredential(ctx, input) |
| PHP | $c->classroomMedia->issueLivePushCredential($input) |
HTTP fields: ClassroomIdInput. Sent as a JSON body.
| Field | Required | Type | Description |
|---|---|---|---|
classroomId | Yes | string | Classroom ID |
Returns HTTP JSON fields described by LivePushCredential (shared models).
classroomMedia.getLivePlayCredentials
Get live playback credentials.
GET /v1/classrooms/live/play-credentials
| Language | Call |
|---|---|
| Node.js | c.classroomMedia.getLivePlayCredentials(input) |
| Python | c.classroom_media.get_live_play_credentials(**input) |
| Java | c.classroomMedia.getLivePlayCredentials(input) |
| Go | c.ClassroomMedia.GetLivePlayCredentials(ctx, input) |
| PHP | $c->classroomMedia->getLivePlayCredentials($input) |
HTTP fields: ClassroomIdInput. Sent as URL query parameters.
| Field | Required | Type | Description |
|---|---|---|---|
classroomId | Yes | string | Classroom ID |
Returns HTTP JSON fields described by LivePlayCredentials (shared models).
classrooms.entryCode.list
List entry codes and claims.
GET /v1/classrooms/entry-codes
| Language | Call |
|---|---|
| Node.js | c.classrooms.entryCode.list(classroomId) |
| Python | c.classrooms.entry_code.list(classroom_id) |
| Java | c.classrooms.entryCode.list(classroomId) |
| Go | c.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.
| Field | Required | Type | Description |
|---|---|---|---|
classroomId | Yes | string | Classroom ID |
Returns HTTP JSON fields described by EntryCodeList (shared models).
classrooms.entryCode.issue
Issue entry codes.
POST /v1/classrooms/entry-codes
| Language | Call |
|---|---|
| Node.js | c.classrooms.entryCode.issue(classroomId, input) |
| Python | c.classrooms.entry_code.issue(classroom_id, **input) |
| Java | c.classrooms.entryCode.issue(classroomId, input) |
| Go | c.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.
| Field | Required | Type | Description |
|---|---|---|---|
role | Yes | "teacher" | "student" | Member or entry code role |
maxClaims | Yes | number | Maximum claims, 1–500; teacher code uses 1 |
count | No | number | undefined | Issue count, 1–20; teacher code uses 1 |
remark | No | string | undefined | Remark, up to 64 characters |
classroomId | Yes | string | Classroom ID |
Returns HTTP JSON fields described by EntryCodeList (shared models).
classrooms.entryCode.update
Update or rotate entry code.
POST /v1/classrooms/entry-codes/update
| Language | Call |
|---|---|
| Node.js | c.classrooms.entryCode.update(classroomId, input) |
| Python | c.classrooms.entry_code.update(classroom_id, **input) |
| Java | c.classrooms.entryCode.update(classroomId, input) |
| Go | c.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.
| Field | Required | Type | Description |
|---|---|---|---|
entryCodeId | Yes | string | Entry-code record ID |
maxClaims | No | number | undefined | Maximum claims, 1–500; teacher code uses 1 |
remark | No | string | undefined | Remark, up to 64 characters |
rotate | No | boolean | undefined | Rotate entry-code value |
classroomId | Yes | string | Classroom ID |
Returns HTTP JSON fields described by EntryCodeRecord (shared models).
classrooms.entryCode.revoke
Revoke entry code.
POST /v1/classrooms/entry-codes/revoke
| Language | Call |
|---|---|
| Node.js | c.classrooms.entryCode.revoke(classroomId, entryCodeId) |
| Python | c.classrooms.entry_code.revoke(classroom_id, entry_code_id) |
| Java | c.classrooms.entryCode.revoke(classroomId, entryCodeId) |
| Go | c.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.
| Field | Required | Type | Description |
|---|---|---|---|
entryCodeId | Yes | string | Entry-code record ID |
classroomId | Yes | string | Classroom ID |
Returns HTTP JSON fields described by EntryCodeRecord (shared models).
activity.list
List classroom activity.
GET /v1/classrooms/activity
| Language | Call |
|---|---|
| Node.js | c.activity.list(input) |
| Python | c.activity.list(**input) |
| Java | c.activity.list(input) |
| Go | c.Activity.List(ctx, input) |
| PHP | $c->activity->list($input) |
HTTP fields: ActivityQuery. Sent as URL query parameters.
| Field | Required | Type | Description |
|---|---|---|---|
classroomId | Yes | string | Classroom ID |
from | No | string | undefined | Range start, ISO 8601 |
to | No | string | undefined | Range end, ISO 8601 |
deviceId | No | string | undefined | Device identifier |
attemptId | No | string | undefined | Join attempt ID |
category | No | "join" | "stage" | "media" | "permission" | "message" | "whiteboard" | "tool" | "connection" | "lifecycle" | "other" | undefined | Activity category |
relation | No | "initiated" | "affected" | "observed" | "system" | "server" | undefined | User relation to the activity |
eduUserId | Yes | string | Classroom user ID |
cursor | No | string | undefined | Cursor returned by the previous page |
pageSize | No | number | undefined | Maximum items per page |
Returns HTTP JSON fields described by ActivityPage (shared models).
activity.tracks
Get activity tracks.
GET /v1/classrooms/activity/tracks
| Language | Call |
|---|---|
| Node.js | c.activity.tracks(input) |
| Python | c.activity.tracks(**input) |
| Java | c.activity.tracks(input) |
| Go | c.Activity.Tracks(ctx, input) |
| PHP | $c->activity->tracks($input) |
HTTP fields: ActivityQuery. Sent as URL query parameters.
| Field | Required | Type | Description |
|---|---|---|---|
classroomId | Yes | string | Classroom ID |
from | No | string | undefined | Range start, ISO 8601 |
to | No | string | undefined | Range end, ISO 8601 |
deviceId | No | string | undefined | Device identifier |
attemptId | No | string | undefined | Join attempt ID |
category | No | "join" | "stage" | "media" | "permission" | "message" | "whiteboard" | "tool" | "connection" | "lifecycle" | "other" | undefined | Activity category |
relation | No | "initiated" | "affected" | "observed" | "system" | "server" | undefined | User relation to the activity |
eduUserId | Yes | string | Classroom user ID |
cursor | No | string | undefined | Cursor returned by the previous page |
pageSize | No | number | undefined | Maximum items per page |
Returns HTTP JSON fields described by ActivityTracks (shared models).
activity.overview
Get activity overview.
GET /v1/classrooms/activity/overview
| Language | Call |
|---|---|
| Node.js | c.activity.overview(input) |
| Python | c.activity.overview(**input) |
| Java | c.activity.overview(input) |
| Go | c.Activity.Overview(ctx, input) |
| PHP | $c->activity->overview($input) |
HTTP fields: ActivityQuery. Sent as URL query parameters.
| Field | Required | Type | Description |
|---|---|---|---|
classroomId | Yes | string | Classroom ID |
from | No | string | undefined | Range start, ISO 8601 |
to | No | string | undefined | Range end, ISO 8601 |
deviceId | No | string | undefined | Device identifier |
attemptId | No | string | undefined | Join attempt ID |
category | No | "join" | "stage" | "media" | "permission" | "message" | "whiteboard" | "tool" | "connection" | "lifecycle" | "other" | undefined | Activity category |
relation | No | "initiated" | "affected" | "observed" | "system" | "server" | undefined | User relation to the activity |
eduUserId | Yes | string | Classroom user ID |
cursor | No | string | undefined | Cursor returned by the previous page |
pageSize | No | number | undefined | Maximum items per page |
Returns HTTP JSON fields described by ActivityOverview (shared models).
activity.detail
Get activity detail.
GET /v1/classrooms/activity/detail
| Language | Call |
|---|---|
| Node.js | c.activity.detail(input) |
| Python | c.activity.detail(**input) |
| Java | c.activity.detail(input) |
| Go | c.Activity.Detail(ctx, input) |
| PHP | $c->activity->detail($input) |
HTTP fields: ActivityDetailInput. Sent as URL query parameters.
| Field | Required | Type | Description |
|---|---|---|---|
classroomId | Yes | string | Classroom ID |
from | Yes | string | Range start, ISO 8601 |
to | Yes | string | Range end, ISO 8601 |
asOf | Yes | string | Observation cutoff returned by the list |
eduUserId | Yes | string | Classroom user ID |
activityId | Yes | string | Activity ID |
cursor | No | string | undefined | Cursor returned by the previous page |
pageSize | No | number | undefined | Maximum items per page |
Returns HTTP JSON fields described by ActivityDetail (shared models).
coursewares.list
List courseware library.
GET /v1/coursewares
| Language | Call |
|---|---|
| Node.js | c.coursewares.list(input) |
| Python | c.coursewares.list(**input) |
| Java | c.coursewares.list(input) |
| Go | c.Coursewares.List(ctx, input) |
| PHP | $c->coursewares->list($input) |
HTTP fields: ListCoursewaresInput. Sent as URL query parameters.
| Field | Required | Type | Description |
|---|---|---|---|
classroomId | No | string | undefined | Classroom ID |
ownerEduUserId | No | string | undefined | Private-library owner; keep consistent between upload and creation |
status | No | CoursewareStatus | undefined | Status filter or target status |
q | No | string | undefined | Search keyword |
page | No | number | undefined | Page number starting at 1 |
pageSize | No | number | undefined | Maximum items per page |
Returns HTTP JSON fields described by ListCoursewaresResult (shared models).
coursewares.createUploadUrl
Create courseware upload URL.
POST /v1/coursewares/upload-url
| Language | Call |
|---|---|
| Node.js | c.coursewares.createUploadUrl(input) |
| Python | c.coursewares.create_upload_url(**input) |
| Java | c.coursewares.createUploadUrl(input) |
| Go | c.Coursewares.CreateUploadUrl(ctx, input) |
| PHP | $c->coursewares->createUploadUrl($input) |
HTTP fields: CreateUploadUrlPayload. Sent as a JSON body.
| Field | Required | Type | Description |
|---|---|---|---|
fileName | Yes | string | File name including extension |
contentHash | Yes | string | File SHA-256 in lowercase hex; courseware requires 64 characters |
contentType | No | string | undefined | File MIME type |
expiresSeconds | No | number | undefined | Upload URL lifetime in seconds, 0–86400; 0 uses the default |
ownerEduUserId | No | string | undefined | Private-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
| Language | Call |
|---|---|
| Node.js | c.coursewares.create(input) |
| Python | c.coursewares.create(**input) |
| Java | c.coursewares.create(input) |
| Go | c.Coursewares.Create(ctx, input) |
| PHP | $c->coursewares->create($input) |
HTTP fields: CreateCoursewarePayload. Sent as a JSON body.
| Field | Required | Type | Description |
|---|---|---|---|
fileName | Yes | string | File name including extension |
originalName | Yes | string | Original file name including extension |
format | Yes | string | Courseware file format |
sizeBytes | Yes | number | File size in bytes |
objectKey | Yes | string | Object key from the upload response |
sourceUrl | Yes | string | Source file URL from the upload response |
contentHash | Yes | string | File SHA-256 in lowercase hex; courseware requires 64 characters |
ownerEduUserId | No | string | undefined | Private-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
| Language | Call |
|---|---|
| Node.js | c.coursewares.get(input) |
| Python | c.coursewares.get(**input) |
| Java | c.coursewares.get(input) |
| Go | c.Coursewares.Get(ctx, input) |
| PHP | $c->coursewares->get($input) |
HTTP fields: CoursewareIdInput. Sent as URL query parameters.
| Field | Required | Type | Description |
|---|---|---|---|
coursewareId | Yes | string | Courseware ID |
Returns HTTP JSON fields described by CoursewareRecord (shared models).
coursewares.getManifest
Get courseware manifest.
GET /v1/coursewares/manifest
| Language | Call |
|---|---|
| Node.js | c.coursewares.getManifest(input) |
| Python | c.coursewares.get_manifest(**input) |
| Java | c.coursewares.getManifest(input) |
| Go | c.Coursewares.GetManifest(ctx, input) |
| PHP | $c->coursewares->getManifest($input) |
HTTP fields: CoursewareIdInput. Sent as URL query parameters.
| Field | Required | Type | Description |
|---|---|---|---|
coursewareId | Yes | string | Courseware ID |
Returns HTTP JSON fields described by CoursewareManifest (shared models).
coursewares.remove
Delete courseware.
DELETE /v1/coursewares/remove
| Language | Call |
|---|---|
| Node.js | c.coursewares.remove(input) |
| Python | c.coursewares.remove(**input) |
| Java | c.coursewares.remove(input) |
| Go | c.Coursewares.Remove(ctx, input) |
| PHP | $c->coursewares->remove($input) |
HTTP fields: CoursewareIdInput. Sent as URL query parameters.
| Field | Required | Type | Description |
|---|---|---|---|
coursewareId | Yes | string | Courseware ID |
Returns HTTP JSON fields described by DeleteResult (shared models).
coursewares.retry
Retry courseware conversion.
POST /v1/coursewares/retry
| Language | Call |
|---|---|
| Node.js | c.coursewares.retry(input) |
| Python | c.coursewares.retry(**input) |
| Java | c.coursewares.retry(input) |
| Go | c.Coursewares.Retry(ctx, input) |
| PHP | $c->coursewares->retry($input) |
HTTP fields: CoursewareIdInput. Sent as a JSON body.
| Field | Required | Type | Description |
|---|---|---|---|
coursewareId | Yes | string | Courseware ID |
Returns HTTP JSON fields described by CoursewareRecord (shared models).
liveVideos.list
List live video assets.
GET /v1/live-videos
| Language | Call |
|---|---|
| Node.js | c.liveVideos.list(input) |
| Python | c.live_videos.list(**input) |
| Java | c.liveVideos.list(input) |
| Go | c.LiveVideos.List(ctx, input) |
| PHP | $c->liveVideos->list($input) |
HTTP fields: PaginationInput. Sent as URL query parameters.
| Field | Required | Type | Description |
|---|---|---|---|
page | No | number | undefined | Page number starting at 1 |
pageSize | No | number | undefined | Maximum 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
| Language | Call |
|---|---|
| Node.js | c.liveVideos.createUploadUrl(input) |
| Python | c.live_videos.create_upload_url(**input) |
| Java | c.liveVideos.createUploadUrl(input) |
| Go | c.LiveVideos.CreateUploadUrl(ctx, input) |
| PHP | $c->liveVideos->createUploadUrl($input) |
HTTP fields: LiveVideoUploadInput. Sent as a JSON body.
| Field | Required | Type | Description |
|---|---|---|---|
fileName | Yes | string | File name including extension |
contentType | No | string | undefined | File MIME type |
Returns HTTP JSON fields described by LiveVideoUploadResult (shared models).
liveVideos.create
Create live video asset.
POST /v1/live-videos
| Language | Call |
|---|---|
| Node.js | c.liveVideos.create(input) |
| Python | c.live_videos.create(**input) |
| Java | c.liveVideos.create(input) |
| Go | c.LiveVideos.Create(ctx, input) |
| PHP | $c->liveVideos->create($input) |
HTTP fields: CreateLiveVideoInput. Sent as a JSON body.
| Field | Required | Type | Description |
|---|---|---|---|
title | Yes | string | Video asset title |
objectKey | Yes | string | Object key from the upload response |
contentHash | No | string | undefined | File SHA-256 in lowercase hex; courseware requires 64 characters |
sizeBytes | No | number | undefined | File size in bytes |
Returns HTTP JSON fields described by LiveVideoRecord (shared models).
liveVideos.remove
Delete live video asset.
DELETE /v1/live-videos/remove
| Language | Call |
|---|---|
| Node.js | c.liveVideos.remove(input) |
| Python | c.live_videos.remove(**input) |
| Java | c.liveVideos.remove(input) |
| Go | c.LiveVideos.Remove(ctx, input) |
| PHP | $c->liveVideos->remove($input) |
HTTP fields: LiveVideoIdInput. Sent as URL query parameters.
| Field | Required | Type | Description |
|---|---|---|---|
liveVideoId | Yes | string | Live video asset ID |
Returns HTTP JSON fields described by DeleteResult (shared models).