For the complete documentation index, see llms.txt. This page is also available as Markdown.

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

STT
Tên trường
Kiểu dữ liệu
Ghi chú
1

id

INT

ID của người dùng

2

username

TEXT(255)

Họ tên

3

email

EMAIL

Email người dùng

4

email2

EMAIL

Email thứ 2

5

phone_no

TELEPHONE

Số điện thoại của người dùng

6

phone_no2

TELEPHONE

Số điện thoại thứ 2

7

phone_no3

TELEPHONE

Số điện thoại thứ 3

8

created_at

DATETIME

Ngày tạo

9

updated_at

DATETIME

Ngày cập nhật.

10

created_from

INT

Nguồn tạo (Xem danh sách nguồn) Cột Source ID

11

organization_id

INT

ID tổ chức

12

organization

TEXT(255)

Tên tổ chức

13

city_id

INT

ID thành phố (Tham khảo danh sách tỉnh thành)

14

district_id

INT

ID huyện/quận

15

address

TEXT(255)

Địa chỉ

16

gender

INT

Giới tính: 0. Nam, 1 Nữ, 2 Không xác định

17

facebook

INT

ID facebook (De-precade)

18

campaign_handler_id

INT

ID chiến dịch xử lý

19

custom_fields

ARRAY

Danh sách trường động

20

follower_id

INT

Id của chuyên viên quản lý (xem Chuyên viên Trường ID

21

take_phone_at

DATETIME

Thời điểm thu thập được số điện thoại (Null hoặc Ngày tháng)

22

take_email_at

DATETIME

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

Name
Type
Description

Request Body

Name
Type
Description

contact

Object

Cấu trúc object ở trên

STT
Tên trường
Kiểu
Ý nghĩa

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

Email

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

Name
Type
Description

Request Body

Name
Type
Description

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

Name
Type
Description

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

Name
Type
Description

***

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ặc updated_*, 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_to hoặc updated_since/updated_to chỉ được xử lý trong phạm vi tối đa 31 ngày.

Quy tắc xử lý thời gian

  • Nếu truyền đủ created_sincecreated_to:

    • Nếu khoảng thời gian không quá 31 ngày thì giữ nguyên.

    • Nếu quá 31 ngày hoặc created_since >= created_to thì hệ thống tự chuẩn hóa thành created_since = created_to - 31 days.

  • Nếu chỉ truyền created_since, hệ thống tự bổ sung created_to = created_since + 31 days.

  • Nếu chỉ truyền created_to, hệ thống tự bổ sung created_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ả

STT
Tên trường
Chú thích

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àng

  • username: Họ tên khách hàng

  • email: Email chính

  • email2: Email thứ 2

  • phone_no: Số điện thoại thứ nhất

  • phone_no2: Số điện thoại thứ 2

  • phone_no3: Số điện thoại thứ 3

  • facebook: Facebook ID

  • gender: Giới tính

  • organization_id: ID tổ chức

  • created_at: Ngày tạo

  • updated_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

Name
Type
Description

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

Name
Type
Description
Stt
Tên trường
Chú thích

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àng

  • created_at: Ngày tạo

  • updated_at: Ngày cập nhật

  • phone_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

Name
Type
Description
STT
Tên trường
Ý nghĩa

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)

STT
Tên trường
Ý nghĩa

1

id

ID khách hàng

2

username

Họ tên khách hàng

3

email

Email

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

17

custom_fields

Thông tin trường động (xem thêm ở Trường động (Custom fields))

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

facebook

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.

(Mẫu Postman tham khảo)

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

Name
Type
Description

phoneNo*

String

Số điện thoại của khách hàng (Dạng 0XXXXX)

Last updated