Bỏ qua, đến nội dung

Gói CSV OneRoster

Gửi gói CSV theo chuẩn OneRoster 1.2 để cổng nhận đợt, sinh viên và ghi danh.

Nhiều phần mềm quản lý đào tạo xuất được gói CSV OneRoster (một tệp .zip). Cổng nhận gói này theo hai cách:

  • Cán bộ nhà trường tải gói lên ở trang Kết nối hệ thống (luôn xem trước rồi mới áp dụng).
  • Hệ thống của trường gửi qua API: POST /integration/v1/imports/oneroster, quyền imports:write.

Gửi qua API

Thân yêu cầu là chính tệp zip, Content-Type: application/zip, tối đa 20 MB.

curl -X POST -H "Authorization: Bearer ACCESS_TOKEN" \
  -H "Content-Type: application/zip" \
  -H "Idempotency-Key: 2026-11-13-oneroster" \
  --data-binary @oneroster.zip \
  "https://<trường>.<tên-miền-nền-tảng>/integration/v1/imports/oneroster?dryRun=true"

Phản hồi 202 kèm một lượt xử lý, theo dõi ở /jobs/{id} như Gửi dữ liệu. Với ?dryRun=true, counts cho biết những gì sẽ thay đổi mà không lưu gì; bỏ dryRun để áp dụng thật. warnings.package ghi phiên bản gói, chế độ từng tệp, số người không phải sinh viên bị bỏ qua và các lưu ý.

Gói không đọc được trả 422 với type là urn:ttdn:problem:invalid-package và lý do trong detail.

Gói cần có gì

TệpBắt buộcCổng dùng
manifest.csvcóoneroster.version (1.2, cũng đọc 1.1), và file.<tên> = bulk, delta hoặc absent cho từng tệp
users.csvcóNgười dùng; chỉ lấy người có vai trò sinh viên
roles.csvvới bản 1.2Vai trò của người dùng (bản 1.1 lấy cột role trong users.csv)
academicSessions.csvkhôngKỳ học (term, semester) thành đợt thực tập
classes.csvkhôngLớp, để biết kỳ của từng ghi danh
enrollments.csvkhôngGhi danh của sinh viên vào lớp

Các tệp khác (orgs.csv, courses.csv, demographics.csv...) được bỏ qua. Mỗi tệp có dòng tiêu đề, tối đa 50.000 dòng.

Cổng hiểu gói thế nào

  • Đợt thực tập: mỗi kỳ học (term hoặc semester) mà các lớp trong gói dùng thành một đợt, xếp theo ngày như gửi đợt qua API. Gói không có lớp thì dùng mọi kỳ học.
  • Sinh viên: mọi người có vai trò student. Mã sinh viên lấy theo thứ tự: cột identifier, userIds dạng {studentCode:SV2026001}, rồi username. Họ tên ghép theo thứ tự Việt Nam: familyName middleName givenName. sourcedId thành externalId.
  • Cách đăng nhập: dòng có password thì sinh viên đăng nhập bằng tên đăng nhập (username, hoặc mã sinh viên) và mật khẩu; không có thì đăng nhập bằng Google theo email.
  • Ghi danh: sinh viên ghi danh vào lớp thì được đưa vào đợt của kỳ của lớp đó. Gói không có enrollments.csv thì sinh viên được đưa vào đợt đang mở.
  • Khoá: dòng có status = tobedeleted hoặc enabledUser = false thì tài khoản bị khoá.
  • Không xoá: sinh viên vắng mặt trong tệp bulk được giữ nguyên. Kỳ học và ghi danh bị đánh dấu xoá chỉ được ghi chú, không áp dụng.
  • Người có vai trò khác (giáo viên, phụ huynh...) được bỏ qua và đếm trong ignoredUsers.

Khi kỳ học đang diễn ra mà trường đang mở một đợt khác, cổng tạo đợt mới ở trạng thái chưa mở và báo switchSeason trong warnings. Cán bộ nhà trường xác nhận chuyển đợt ở trang Kết nối hệ thống.

Trong trang này