> For clean Markdown of any page, append .md to the page URL. > For a complete documentation index, see https://developer.gitiho.com/gitiho-business-api/lms/báo-cáo-hoàn-thành-khoá-học/llms.txt. > For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://developer.gitiho.com/_mcp/server. # Báo cáo hoàn thành khoá học GET https://example.gitiho.com/api/report/course-completed Lấy báo cáo hoàn thành khoá học của nhân sự. Dữ liệu trả về dưới dạng phân trang Reference: https://developer.gitiho.com/gitiho-business-api/lms/báo-cáo-hoàn-thành-khoá-học ## Response ### 200 OK - `data` (BaoCaoHoanThanhKhoaHọcLmsResponseData, required) - `success` (boolean, required) ## Types ### BaoCaoHoanThanhKhoaHọcLmsResponseData - `items` (list of BaoCaoHoanThanhKhoaHọcLmsResponseDataItemsItem, required) - `total` (integer, required) - `last_page` (integer, required) - `current_page` (integer, required) ### BaoCaoHoanThanhKhoaHọcLmsResponseDataItemsItem - `name` (string, required) - `email` (string, required) - `course` (string, required) - `duration` (string, required) - `employer` (BaoCaoHoanThanhKhoaHọcLmsResponseDataItemsItemEmployer, required) - `username` (string, required) - `completed` (string, required) - `course_id` (integer, required) - `date_start` (string, required) - `departments` (list of string, required) - `code_employer` (string, required) - `deadline` (any, optional, nullable) ### BaoCaoHoanThanhKhoaHọcLmsResponseDataItemsItemEmployer - `id` (integer, required) - `name` (string, required) - `email` (string, required) - `username` (string, required) - `code_employer` (string, required) ## Examples **Response** ```json { "data": { "items": [ { "name": "Nguyễn Văn An", "email": "an.nguyen@company.com", "course": "Khoá học Chăm sóc khách hàng vượt trội cùng giảng viên Danny Võ Thành Đăng", "duration": "2.55(-2.55)", "employer": { "id": 10001, "name": "Nguyễn Văn An", "email": "an.nguyen@company.com", "username": "nguyenvanan", "code_employer": "CEO01" }, "username": "nguyenvanan", "completed": "100(-100)", "course_id": 1001, "date_start": "11:23:37 18/03/2025", "departments": [ "CEO" ], "code_employer": "CEO01" }, { "name": "Trần Thị Bình", "email": "binh.tran@company.com", "course": "Shakker AI – Biến Ý Tưởng Thành Ảnh Đẹp", "duration": "1.35(-1.35)", "employer": { "id": 10002, "name": "Trần Thị Bình", "email": "binh.tran@company.com", "username": "tranbinh", "code_employer": "PM01" }, "username": "tranbinh", "completed": "100(-100)", "course_id": 1002, "date_start": "08:45:05 04/03/2025", "departments": [ "CRD" ], "code_employer": "PM01" }, { "name": "Lê Minh Cường", "email": "cuong.le@company.com", "course": "Chỉnh sửa ảnh, cắt ghép ảnh với Photoshop", "duration": "6.62(-6.62)", "employer": { "id": 10003, "name": "Lê Minh Cường", "email": "cuong.le@company.com", "username": "leminhcuong", "code_employer": "AI01" }, "username": "leminhcuong", "completed": "100(-100)", "course_id": 1003, "date_start": "15:16:01 04/01/2025", "departments": [ "IT" ], "code_employer": "AI01" }, { "name": "Phạm Thị Dung", "email": "dung.pham@company.com", "course": "Quản trị Rủi ro và Kiểm soát Nội bộ", "duration": "2.57(-2.57)", "employer": { "id": 10004, "name": "Phạm Thị Dung", "email": "dung.pham@company.com", "username": "phamdung", "code_employer": "PM02" }, "username": "phamdung", "completed": "100(-100)", "course_id": 1004, "date_start": "08:57:31 04/03/2025", "departments": [ "CRD" ], "code_employer": "PM02", "deadline": "2025-04-15T23:59:59Z" }, { "name": "Hoàng Văn Em", "email": "em.hoang@company.com", "course": "Ebook Tuyệt đỉnh Excel - Khai phá 10 kỹ thuật ứng dụng Excel mà đại học không dạy bạn", "duration": "0.01(-0.01)", "employer": { "id": 10005, "name": "Hoàng Văn Em", "email": "em.hoang@company.com", "username": "hoangvanem", "code_employer": "ACC01" }, "username": "hoangvanem", "completed": "100(-100)", "course_id": 1005, "date_start": "08:55:20 06/01/2025", "departments": [ "Kế toán" ], "code_employer": "ACC01" }, { "name": "Đỗ Thị Hoa", "email": "hoa.do@company.com", "course": "Ebook thư viện code mẫu VBA", "duration": "0.04(-0.04)", "employer": { "id": 10006, "name": "Đỗ Thị Hoa", "email": "hoa.do@company.com", "username": "dothihoa", "code_employer": "PM03" }, "username": "dothihoa", "completed": "100(-100)", "course_id": 1006, "date_start": "09:47:28 09/04/2025", "departments": [ "CRD" ], "code_employer": "PM03" }, { "name": "Vũ Minh Giang", "email": "giang.vu@company.com", "course": "Nhập môn Kế Toán Điều Tra và Kiểm Tra Gian Lận", "duration": "1.79(-1.79)", "employer": { "id": 10007, "name": "Vũ Minh Giang", "email": "giang.vu@company.com", "username": "vuminhgiang", "code_employer": "PM04" }, "username": "vuminhgiang", "completed": "100(-100)", "course_id": 1007, "date_start": "09:16:30 04/03/2025", "departments": [ "CRD" ], "code_employer": "PM04" }, { "name": "Bùi Thị Hạnh", "email": "hanh.bui@company.com", "course": "Học AppSheet Tip & Tricks", "duration": "4.69(-4.69)", "employer": { "id": 10008, "name": "Bùi Thị Hạnh", "email": "hanh.bui@company.com", "username": "buithihanh", "code_employer": "TE01" }, "username": "buithihanh", "completed": "100(-100)", "course_id": 1008, "date_start": "14:34:32 03/01/2025", "departments": [ "CRD" ], "code_employer": "TE01" }, { "name": "Ngô Quốc Khánh", "email": "khanh.ngo@company.com", "course": "Ứng Dụng Toàn Diện Trong Marketing và Công Việc Với Chat GPT", "duration": "1.44(-1.44)", "employer": { "id": 10009, "name": "Ngô Quốc Khánh", "email": "khanh.ngo@company.com", "username": "ngoquockhanh", "code_employer": "IT01" }, "username": "ngoquockhanh", "completed": "100(-100)", "course_id": 1009, "date_start": "15:12:04 03/01/2025", "departments": [ "Kiểm thử" ], "code_employer": "IT01" }, { "name": "Đinh Văn Long", "email": "long.dinh@company.com", "course": "Xây dựng đội ngũ vững mạnh", "duration": "1.17(-1.17)", "employer": { "id": 10010, "name": "Đinh Văn Long", "email": "long.dinh@company.com", "username": "dinhvanlong", "code_employer": "IT02" }, "username": "dinhvanlong", "completed": "100(-100)", "course_id": 1010, "date_start": "16:38:56 03/01/2025", "departments": [ "IT" ], "code_employer": "IT02" }, { "name": "Mai Thị Minh", "email": "minh.mai@company.com", "course": "Khóa học Leadership cơ bản", "duration": "0.25(-0.25)", "employer": { "id": 10011, "name": "Mai Thị Minh", "email": "minh.mai@company.com", "username": "maithiminh", "code_employer": "PM05" }, "username": "maithiminh", "completed": "100(-100)", "course_id": 1011, "date_start": "09:58:43 04/03/2025", "departments": [ "CRD" ], "code_employer": "PM05" }, { "name": "Phan IT", "email": "phan.it@company.com", "course": "Khóa học tự tạo", "duration": "0.01(-0.01)", "employer": { "id": 10012, "name": "Phan IT", "email": "phan.it@company.com", "username": "phanit", "code_employer": "IT03" }, "username": "phanit", "completed": "100(-100)", "course_id": 1012, "date_start": "09:12:36 19/12/2023", "departments": [ "IT" ], "code_employer": "IT03" }, { "name": "Trịnh IT", "email": "trinh.it@company.com", "course": "Test khóa scorm", "duration": "48.96(-48.96)", "employer": { "id": 10013, "name": "Trịnh IT", "email": "trinh.it@company.com", "username": "trinhit", "code_employer": "IT04" }, "username": "trinhit", "completed": "100(-100)", "course_id": 1013, "date_start": "16:37:45 20/01/2025", "departments": [ "IT" ], "code_employer": "IT04" }, { "name": "Test User", "email": "test.user@company.com", "course": "Ebook Tuyệt đỉnh Excel - Khai phá 10 kỹ thuật ứng dụng Excel mà đại học không dạy bạn", "duration": "0(+0)", "employer": { "id": 10014, "name": "Test User", "email": "test.user@company.com", "username": "testuser", "code_employer": "TEST01" }, "username": "testuser", "completed": "100(-100)", "course_id": 1014, "date_start": "16:05:01 17/04/2025", "departments": [ "Testing" ], "code_employer": "TEST01" }, { "name": "Lương Huyền Trang", "email": "trang.luong@company.com", "course": "KTG04 - Nguyên lý kế toán cho người mới bắt đầu", "duration": "3.39(-3.39)", "employer": { "id": 10015, "name": "Lương Huyền Trang", "email": "trang.luong@company.com", "username": "luonghuventrang", "code_employer": "CEO02" }, "username": "luonghuventrang", "completed": "100(-100)", "course_id": 1015, "date_start": "09:46:40 21/05/2025", "departments": [ "CEO" ], "code_employer": "CEO02" } ], "total": 504, "last_page": 34, "current_page": 1 }, "success": true } ``` **SDK Code** ```python import requests url = "https://example.gitiho.com/api/report/course-completed" response = requests.get(url) print(response.json()) ``` ```javascript const url = 'https://example.gitiho.com/api/report/course-completed'; const options = {method: 'GET'}; try { const response = await fetch(url, options); const data = await response.json(); console.log(data); } catch (error) { console.error(error); } ``` ```go package main import ( "fmt" "net/http" "io" ) func main() { url := "https://example.gitiho.com/api/report/course-completed" req, _ := http.NewRequest("GET", url, nil) res, _ := http.DefaultClient.Do(req) defer res.Body.Close() body, _ := io.ReadAll(res.Body) fmt.Println(res) fmt.Println(string(body)) } ``` ```ruby require 'uri' require 'net/http' url = URI("https://example.gitiho.com/api/report/course-completed") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true request = Net::HTTP::Get.new(url) response = http.request(request) puts response.read_body ``` ```java import com.mashape.unirest.http.HttpResponse; import com.mashape.unirest.http.Unirest; HttpResponse response = Unirest.get("https://example.gitiho.com/api/report/course-completed") .asString(); ``` ```php request('GET', 'https://example.gitiho.com/api/report/course-completed'); echo $response->getBody(); ``` ```csharp using RestSharp; var client = new RestClient("https://example.gitiho.com/api/report/course-completed"); var request = new RestRequest(Method.GET); IRestResponse response = client.Execute(request); ``` ```swift import Foundation let request = NSMutableURLRequest(url: NSURL(string: "https://example.gitiho.com/api/report/course-completed")! as URL, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 10.0) request.httpMethod = "GET" let session = URLSession.shared let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in if (error != nil) { print(error as Any) } else { let httpResponse = response as? HTTPURLResponse print(httpResponse) } }) dataTask.resume() ```