Khách hàng
Các API liên quan đến người dùng, khách hàng
Trên hệ thống CareSoft. Mỗi người dùng/Khách hàng được định nghĩa bằng số điện thoại hoặc email. Một người dùng có tối đa ba (03) số điện thoại và hai (02) email làm định danh.
Các trường thông tin của người dùng
id
ID của người dùng
username
Họ tên
Email người dùng
email2
Email thứ 2
phone_no
Số điện thoại của người dùng
phone_no2
Số điện thoại thứ 2
phone_no3
Số điện thoại thứ 3
created_at
Ngày tạo
updated_at
Ngày cập nhật.
organization_id
ID tổ chức
organization
Tên tổ chức
city_id
ID thành phố (Tham khảo danh sách tỉnh thành)
district_id
ID huyện/quận
address
Địa chỉ
gender
Giới tính: 0. Nam, 1 Nữ, 2 Không xác định
ID facebook (De-precade)
campaign_handler_id
ID chiến dịch xử lý
custom_fields
Danh sách trường động
take_phone_at
Thời điểm thu thập được số điện thoại (Null hoặc Ngày tháng)
take_email_at
Thời điểm thu thập được email(Null hoặc Ngày tháng)
Thêm mới khách hàng
Để thêm mới khách hàng. Lập trình viên cần tạo 1 đối tượng contact kiểu Json Object có cấu trúc sau. Các trường dữ liệu
Ví dụ tham khảo mẫu POSTMAN tạo mới khách hàng

Thêm mới khách hàng
POST {{domain}/api/v1/contacts
Headers
Request Body
contact
Object
Cấu trúc object ở trên
1
code
String
"ok": Thành công, "errors": Thất bại
2
contact
Object
Đối tượng thông tin khách hàng được tạo mới
3
contact.id
Int
ID khách hàng (?)
4
contact.phone_no
String
Số điện thoại
5
contact.email
6
contact.username
String
Họ tên khách hàng
7
contact.created_at
Ngày tạo
8
contact.updated_at
Ngày cập nhật
Thông tin trùng lặp hoặc thiếu sẽ thể hiện qua thông báo lỗi này
Cập nhật khách hàng
Trong trường hợp có thay đổi thông tin khách hàng, VD: Thay đổi số điện thoại, email hay thông tin người phụ trách hoặc các thông tin phân loại được tùy biến. Lập trình viên sử dụng hàm này để cập nhật dữ liệu lên hệ thống
Gợi ý: Trong một số trường hợp không lưu contactId của khách hoặc khách phát sinh trước khi tích hợp, thì sử dụng hàm tạo mới khách hàng sau đó dựa trên dublicated_id phát sinh (nếu trùng) để thực hiện cập nhật
Cập nhật người dùng
PUT {{domain}/api/v1/contacts/{{contactId}}
Headers
Request Body
contact
Object
Cấu trúc object như ví dụ minh họa
Danh sách khách hàng
Là dữ liệu biến thiên theo ngày tháng. Sẽ tăng dần theo thời gian, Danh sách này có kết quả gồm số ít trường thông tin mang tính chất điển hình gồm ID, số điện thoại, họ tên, email ngày tạo. Dựa vào danh sách này có thể lấy thông tin đầy đủ và chi tiết cho 1 khách hàng bằng api Chi tiết khách hàng phía dưới
Mẫu tham khảo cấu hình POSTMAN lấy danh sách khách hàng

Danh sách khách hàng V2
Thông báo chuyển đổi API
API GET {{domain}}/api/v1/contacts sẽ kết thúc vào ngày 02/09/2026. Sau thời điểm này, hệ thống sẽ tự động chuyển sang endpoint V2 tương ứng:
Để tránh gián đoạn tích hợp, bạn nên chuyển sang V2 trước thời điểm trên. Trong giai đoạn chuyển đổi, API V1 vẫn có thể hoạt động nhưng sẽ được đánh dấu là deprecated.
Dữ liệu được cập nhật theo thời gian. Danh sách trả về một số trường thông tin cơ bản, điển hình như Phiên bản V2 vẫn giữ cấu trúc response gần tương tự V1 để thuận tiện chuyển đổi, đồng thời bổ sung các mốc thời gian thực tế sau khi hệ thống chuẩn hóa khoảng thời gian truy vấn.
Danh sách khách hàng V2
GET {{domain}}/api/v2/contacts
Query Parameters
updated_since
DateTime (ISO8601)
Thời điểm bắt đầu cập nhật. Định dạng: YYYY-MM-DDTHH:mm:ssZ
updated_to
DateTime (ISO8601)
Thời điểm kết thúc cập nhật. Định dạng: YYYY-MM-DDTHH:mm:ssZ
created_since
DateTime (ISO8601)
Thời điểm bắt đầu tạo. Định dạng: YYYY-MM-DDTHH:mm:ssZ
created_to
DateTime (ISO8601)
Thời điểm kết thúc tạo. Định dạng: YYYY-MM-DDTHH:mm:ssZ
page
Int
Trang số. Mặc định 1
count
Int
Số bản ghi trên trang. Mặc định 50, tối đa theo cấu hình hệ thống
order_by
String
Sắp xếp theo trường dữ liệu. Hỗ trợ: id, username, email, email2, phone_no, phone_no2, phone_no3, facebook, gender, organization_id, created_at, updated_at. Mặc định created_at
order_type
String
Kiểu sắp xếp DESC hoặc ASC. Mặc định DESC
Headers
***
String
Thông tin xác thực chung
Lưu ý khi sử dụng
Chỉ chấp nhận các query parameter nằm trong danh sách trên. Nếu truyền parameter ngoài whitelist, hệ thống trả về HTTP
400.Nếu không có bất kỳ điều kiện ngày hợp lệ nào thuộc nhóm
created_*hoặcupdated_*, hệ thống sẽ trả về danh sách rỗng để tránh quét toàn bộ dữ liệu khách hàng.Mỗi cặp điều kiện thời gian
created_since/created_tohoặcupdated_since/updated_tochỉ được xử lý trong phạm vi tối đa31 ngày.
Quy tắc xử lý thời gian
Nếu truyền đủ
created_sincevàcreated_to:Nếu khoảng thời gian không quá
31 ngàythì giữ nguyên.Nếu quá
31 ngàyhoặccreated_since >= created_tothì hệ thống tự chuẩn hóa thànhcreated_since = created_to - 31 days.
Nếu chỉ truyền
created_since, hệ thống tự bổ sungcreated_to = created_since + 31 days.Nếu chỉ truyền
created_to, hệ thống tự bổ sungcreated_since = created_to - 31 days.Cặp
updated_since/updated_toáp dụng quy tắc tương tự.Giá trị ngày không đúng định dạng hoặc nằm ngoài phạm vi hợp lệ sẽ được hiểu như chưa truyền.
Kết quả điển hình
Mô tả kết quả
1
code
Trạng thái thành công. ok: Thành công, errors: Thất bại
2
numFound
Số bản ghi tìm thấy theo điều kiện lọc
3
created_since
Thời điểm bắt đầu thực tế của điều kiện tạo sau khi hệ thống chuẩn hóa
4
created_to
Thời điểm kết thúc thực tế của điều kiện tạo sau khi hệ thống chuẩn hóa
5
updated_since
Thời điểm bắt đầu thực tế của điều kiện cập nhật sau khi hệ thống chuẩn hóa
6
updated_to
Thời điểm kết thúc thực tế của điều kiện cập nhật sau khi hệ thống chuẩn hóa
7
contacts[]
Mảng dữ liệu danh sách khách hàng
Cấu trúc từng phần tử trong contacts[] gồm các trường điển hình sau:
id: ID khách hàngusername: Họ tên khách hàngemail: Email chínhemail2: Email thứ 2phone_no: Số điện thoại thứ nhấtphone_no2: Số điện thoại thứ 2phone_no3: Số điện thoại thứ 3facebook: Facebook IDgender: Giới tínhorganization_id: ID tổ chứccreated_at: Ngày tạoupdated_at: Ngày cập nhật
Ví dụ truy vấn
Trong ví dụ trên, hệ thống sẽ tự chuẩn hóa khoảng thời gian và có thể trả về thêm các trường:
Danh sách khách hàng (V1)
GET {{domain}/api/v1/contacts
API này sẽ ngừng hoạt động sau ngày 02/09/2026. Vui lòng chuyển sang V2 để tiếp tục sử dụng.
Query Parameters
updated_since
DateTime (ISO8601)
Thời điểm bắt đầu cập nhật. Định dạng: YYYY-MM-DDTHH:mm:ssZ
updated_to
DateTime (ISO8601)
Thời điểm kết thúc cập nhật. Định dạng: YYYY-MM-DDTHH:mm:ssZ
created_since
DateTime (ISO8601)
Thời điểm bắt đầu tạo. Định dạng: YYYY-MM-DDTHH:mm:ssZ
created_to
DateTime (ISO8601)
Thời điểm kết thúc tạo. Định dạng: YYYY-MM-DDTHH:mm:ssZ
page
Int
Trang số
count
Int
Số bản ghi trên trang (Tối đa 500)
order_by
String
Sắp xếp theo trường dữ liệu (mặc định created_at)
order_type
String
Kiểu sắp xếp DESC hoặc ASC (Giảm dần hoặc tăng dần) Mặc định DESC
Headers
1
code
Trạng thái thành công: ok: Thành công errors: Thất bại
2
numFound
Số bản ghi tìm thấy theo điều kiện lọc
3
contacts []
Mảng dữ liệu danh sách khách hàng. Gồm các object có cấu trúc như sau
id: Id của khách hàng - Dùng ID này để truy xuất thông tin chi tiết, tham số{{contactId}}username: Họ tên khách hàngcreated_at: Ngày tạoupdated_at: Ngày cập nhậtphone_no: Số điện thoại thứ nhất của khách hàng
Chi tiết khách hàng
Dựa vào các hàm tạo mới hay cập nhật khách hàng hoặc danh sách khách hàng, trả về các {{contactId}}. Nhà phát triển sử dụng hàm này để lấy thông tin chi tiết 1 khách hàng. API này bắt buộc phải có contactID mới thực hiện được

Chi tiết khách hàng
GET {{domain}/api/v1/contacts/{{contactId}}
Headers
1
code
Trạng thái ok: Thành công error: Lỗi
2
contact
Đối tượng thông tin khách hàng khách hàng (xem chi tiết ở bảng dưới)
Chi tiết đối tượng thông tin khách hàng (object)
1
id
ID khách hàng
2
username
Họ tên khách hàng
3
4
email2
Email 2
5
phone_no
Số điện thoại
6
phone_no2
Số điện thoại thứ 2
7
phone_no3
Số điện thoại 3
8
gender
Giới tính (0: Nam, 1 Nữ, 2: Không xác định)
9
organization_id
ID tổ chức
10
address
Địa chỉ
11
city_id
ID tỉnh/thành phố
12
district_id
ID huyện/Quận
13
created_at
Ngày tạo
14
updated_at
Ngày cập nhật
15
take_phone_at
Thời điểm thu thập số điện thoại
16
take_email_at
Thời điểm thu thập được email
18
organization
Tổ chức
19
zalo_id
Zalo ID
20
zalo_followers
Mảng dữ liệu object các Zalo Oa mà khách đang theo dõi nếu Zalo_id có giá trị. Trong đó: - oa_name: Tên Zalo OA - oa_id: ID OA, - active: Trạng thái tích hợp của OA (1: Đang kích hoạt, 0. Ngừng kích hoạt) - follow_status: Trạng thái follow của khách ( 1: Đang follow, null / 0: Không follow hoặc đã hủy) - updated_at: Ngày cập nhật mới nhất
21
ID facebook
22
psid
Mảng dữ liệu object các Facebook Page khách hàng đang theo dõi nếu trường facebook có giá trị. Trong đó - page_id: ID của page - psid: ID của khách trên page
Tìm khách hàng theo số điện thoại
Trong trường hợp cần tìm 1 khách hàng đã tồn tại hay chưa sử dụng API dưới đây, hệ thống sẽ trả về thông tin cơ bản của khách hàng.

Tìm khách hàng theo số điện thoại
GET {{domain}/api/v1/api/v1/contactsByPhone
Sử dụng parametter phoneNo để tìm khách hàng (Xem ảnh mô tả)
Query Parameters
phoneNo*
String
Số điện thoại của khách hàng (Dạng 0XXXXX)
Last updated