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ềnimports: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ệp | Bắt buộc | Cổng dùng |
|---|---|---|
manifest.csv | có | oneroster.version (1.2, cũng đọc 1.1), và file.<tên> = bulk, delta hoặc absent cho từng tệp |
users.csv | có | Người dùng; chỉ lấy người có vai trò sinh viên |
roles.csv | với bản 1.2 | Vai trò của người dùng (bản 1.1 lấy cột role trong users.csv) |
academicSessions.csv | không | Kỳ học (term, semester) thành đợt thực tập |
classes.csv | không | Lớp, để biết kỳ của từng ghi danh |
enrollments.csv | không | Ghi 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 (
termhoặcsemester) 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ộtidentifier,userIdsdạng{studentCode:SV2026001}, rồiusername. Họ tên ghép theo thứ tự Việt Nam:familyName middleName givenName.sourcedIdthànhexternalId. - Cách đăng nhập: dòng có
passwordthì 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 theoemail. - 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.csvthì sinh viên được đưa vào đợt đang mở. - Khoá: dòng có
status = tobedeletedhoặcenabledUser = falsethì 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.