Bỏ qua, đến nội dung

Đọ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ẫnQuyền
GET/seasonsseasons:read
GET/seasons/{id}seasons:read
GET/studentsstudents:read
GET/students/{studentCode}students:read
GET/seasons/{id}/enrollmentsenrollments:read
GET/seasons/{id}/resultsresults:read
GET/seasons/{id}/companiescompanies: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, cursorPhân trang
updatedSinceChỉ sinh viên có thay đổi từ thời điểm này (ISO 8601)
statusactive hoặc blocked
seasonid 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 theo email) hoặc password (đăng nhập bằng loginName và mật khẩu).
  • email là null khi 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: false và 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.

Trong trang này