Đọc dữ liệu
Đọc đợt thực tập, sinh viên, ghi danh, kết quả thực tập và doanh nghiệp đã duyệt.
Mọi đường dẫn dưới đây tính từ https://<trường>.<tên-miền-nền-tảng>/integration/v1.
| Lệnh | Đường dẫn | Quyền |
|---|---|---|
GET | /seasons | seasons:read |
GET | /seasons/{id} | seasons:read |
GET | /students | students:read |
GET | /students/{studentCode} | students:read |
GET | /seasons/{id}/enrollments | enrollments:read |
GET | /seasons/{id}/results | results:read |
GET | /seasons/{id}/companies | companies:read |
Đợt thực tập
GET /seasons trả mọi đợt của trường (tối đa 500, cũ trước). Lọc theo mã kỳ học: ?externalId=HK1-2026.
{
"data": [
{
"id": "k3v9x2m1q8w7e6r5t4y3u2i1",
"externalId": "HK1-2026",
"name": "Đợt thực tập học kỳ 1 năm học 2026-2027",
"status": "open",
"openedAt": "2026-09-01T01:00:00.000Z",
"closesAt": "2027-01-15T16:59:59.000Z",
"closedAt": null,
"updatedAt": "2026-11-02T03:12:44.000Z"
}
]
}status: open (đang mở), upcoming (chưa mở), closed (đã đóng). Mỗi trường chỉ có một đợt đang mở.
Sinh viên
GET /students trả sinh viên của trường theo trang (xem Phân trang).
| Tham số | Ý nghĩa |
|---|---|
limit, cursor | Phân trang |
updatedSince | Chỉ sinh viên có thay đổi từ thời điểm này (ISO 8601) |
status | active hoặc blocked |
season | id của đợt: chỉ sinh viên trong đợt đó |
{
"data": [
{
"id": "p0o9i8u7y6t5r4e3w2q1a2s3",
"studentCode": "SV2026001",
"externalId": "U-1001",
"name": "Nguyễn Văn An",
"email": "[email protected]",
"signIn": "google",
"loginName": null,
"status": "active",
"createdAt": "2026-09-02T02:00:00.000Z",
"updatedAt": "2026-11-02T03:12:44.000Z"
}
],
"next": "eyJhZnRlciI6MTIzfQ"
}signIn:google(đăng nhập bằng tài khoản Google theoemail) hoặcpassword(đăng nhập bằngloginNamevà mật khẩu).emaillànullkhi sinh viên đăng nhập bằng tên đăng nhập và chưa có email thật.
GET /students/{studentCode} trả một sinh viên trong data, hoặc 404.
Sinh viên trong đợt
GET /seasons/{id}/enrollments trả theo trang:
{
"data": [
{
"id": "z1x2c3v4b5n6m7a8s9d0f1g2",
"externalId": null,
"season": "k3v9x2m1q8w7e6r5t4y3u2i1",
"student": { "id": "p0o9i8u7y6t5r4e3w2q1a2s3", "studentCode": "SV2026001", "externalId": "U-1001", "name": "Nguyễn Văn An" },
"placed": false,
"admittedAt": "2026-09-02T02:00:00.000Z"
}
],
"next": null
}placed: sinh viên đã có nơi thực tập trong đợt này chưa.
Kết quả thực tập
GET /seasons/{id}/results trả, cho mỗi sinh viên trong đợt, nơi thực tập đã chốt:
{
"data": [
{
"student": { "id": "p0o9i8u7y6t5r4e3w2q1a2s3", "studentCode": "SV2026001", "externalId": "U-1001", "name": "Nguyễn Văn An" },
"season": "k3v9x2m1q8w7e6r5t4y3u2i1",
"placed": true,
"company": { "id": "c8d7e6f5g4h3j2k1l0m9n8b7", "name": "Công ty Cổ phần Ví dụ" },
"acceptedAt": "2026-10-05T08:30:00.000Z",
"pendingApplications": 0
}
],
"next": null
}placed: falsevàcompany: null: chưa có nơi thực tập.pendingApplications: số hồ sơ đang chờ doanh nghiệp xét hoặc chờ sinh viên trả lời.
Doanh nghiệp đã duyệt
GET /seasons/{id}/companies trả các doanh nghiệp nhà trường đã duyệt tham gia đợt (không phân trang):
{
"data": [
{
"id": "c8d7e6f5g4h3j2k1l0m9n8b7",
"name": "Công ty Cổ phần Ví dụ",
"shortName": "Ví dụ",
"sponsor": false,
"hiringOpen": true,
"maximumWaitingApplications": 30,
"maximumAcceptedStudents": 10
}
]
}hiringOpen: doanh nghiệp còn nhận hồ sơ. Hai số tối đa là null khi không giới hạn.