COKA Docs

Bắt đầu với Coka AI MCP Server

COKA AI MCP Server giúp bạn quản lý Lead, Deal, Khách hàng, Lịch hẹn... bằng ngôn ngữ tự nhiên thông qua các ứng dụng AI.

Bạn chỉ cần 2 bước để bắt đầu:

  • Lấy Token xác thực từ Coka AI
  • Dán cấu hình vào ứng dụng AI của bạn

Sau đó bạn có thể giao tiếp với AI để quản lý Lead, Deal, đặt lịch hẹn, tạo đơn hàng và nhiều hơn nữa.

Lấy Token Xác Thực

Token là "chìa khóa" để AI truy cập dữ liệu Coka của bạn một cách an toàn.

Truy cập Coka AI

Mở trình duyệt, truy cập web.coka.aiđăng nhập bằng tài khoản của bạn.

Vào trang Cài đặt → Thông tin tài khoản

Trên thanh menu bên trái, chọn Cài đặt → chọn tab Cá nhân.

Tìm mục "Kết nối MCP"

Cuộn xuống cuối trang, bạn sẽ thấy mục 🔗 Kết nối MCP với nút Tạo Key MCP màu tím.

Tạo Key MCP

Nhấn nút "Tạo Key MCP" → hệ thống tạo token → Copy toàn bộ chuỗi token.

⚠️
Bảo mật: Token giống mật khẩu — KHÔNG chia sẻ cho người khác. Nếu nghi bị lộ, vào lại Cài đặt để tạo key mới.

Cấu Hình Kết Nối

Chọn ứng dụng AI bạn đang sử dụng:

Claude Desktop

Mở file cấu hình:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json

✅ Cách 1 — npx mcp-remote (Khuyến nghị):

claude_desktop_config.json
{
    "mcpServers": {
        "coka_ai": {
            "command": "npx",
            "args": [
                "-y", "mcp-remote",
                "https://mcp.coka.ai/mcp/",
                "--header",
                "CokaToken:Bearer coka_token"
            ]
        }
    }
}
💡
Trong dòng CokaToken:Bearer, viết liền không có khoảng trắng sau dấu :

Cách 2 — Phiên bản mới (hỗ trợ url + headers):

claude_desktop_config.json
{
    "mcpServers": {
        "coka_ai": {
            "url": "https://mcp.coka.ai/sse",
            "headers": {
                "CokaToken": "Bearer coka_token"
            }
        }
    }
}

Cursor

Mở Settings ⚙️MCP ServersAdd new MCP Server

MCP Config
{
    "mcpServers": {
        "coka-api": {
            "url": "https://mcp.coka.ai/sse",
            "headers": {
                "CokaToken": "Bearer coka_token"
            }
        }
    }
}

Antigravity (Google Gemini)

Tạo hoặc mở file .gemini/settings.json trong thư mục dự án

.gemini/settings.json
{
    "mcpServers": {
        "coka_server": {
            "url": "https://mcp.coka.ai/sse",
            "headers": {
                "CokaToken": "Bearer coka_token"
            }
        }
    }
}

Windsurf / Cline / Roo Code

MCP Config
{
    "mcpServers": {
        "coka-api": {
            "url": "https://mcp.coka.ai/sse",
            "headers": {
                "CokaToken": "Bearer coka_token"
            }
        }
    }
}

VS Code (GitHub Copilot)

Tạo file .vscode/mcp.json trong thư mục dự án

.vscode/mcp.json
{
    "servers": {
        "coka-api": {
            "type": "sse",
            "url": "https://mcp.coka.ai/sse",
            "headers": {
                "CokaToken": "Bearer coka_token"
            }
        }
    }
}
📝
VS Code dùng key "servers" thay vì "mcpServers"

N8N (Automation)

Mở N8N workflow

Thêm node MCP Client

Điền thông tin kết nối

  • SSE URL: https://mcp.coka.ai/sse
  • Header Key: CokaToken
  • Header Value: Bearer coka_token

Manus

Manus sử dụng Streamable HTTP (protocol mới nhất).

MCP Config
{
    "mcpServers": {
        "coka": {
            "type": "streamableHttp",
            "url": "https://mcp.coka.ai/mcp/",
            "headers": {
                "CokaToken": "coka_token"
            }
        }
    }
}
💡
Manus dùng streamableHttp. Token KHÔNG cần prefix Bearer.
Sau khi lưu cấu hình → Khởi động lại ứng dụng AI để áp dụng thay đổi.

Bắt Đầu Sử Dụng

Sau khi kết nối thành công, nói chuyện với AI bằng ngôn ngữ tự nhiên:

📊 Quản lý Lead

Bạn muốn... Nói với AI
Xem danh sách Lead "Cho tôi xem danh sách Lead"
Tạo Lead mới "Tạo Lead mới tên Nguyễn Văn A, SĐT 0901234567"
Gán người phụ trách "Gán Lead này cho anh Minh"

💼 Quản lý Deal

Bạn muốn... Nói với AI
Tạo Deal mới "Tạo deal mới cho khách hàng ABC"
Chuyển Lead → Deal "Chuyển Lead Nguyễn Văn A sang Deal"
Chuyển giai đoạn "Chuyển Deal ABC sang giai đoạn Đàm phán"

📅 Lịch hẹn & Đơn hàng

Bạn muốn... Nói với AI
Đặt lịch hẹn "Tạo lịch họp với KH vào 2h chiều mai"
Xem sản phẩm "Cho tôi xem danh sách sản phẩm"

Câu Hỏi Thường Gặp

Token là gì? Tại sao cần token?
Token là chìa khóa xác thực giúp AI truy cập dữ liệu Coka an toàn.
Token có hết hạn không?
Có. Đăng nhập lại web.coka.ai và lấy token mới.
Dữ liệu có an toàn không?
Token truyền qua HTTPS. Server không lưu trữ token vĩnh viễn.
AI có thể xóa dữ liệu không?
AI luôn hỏi xác nhận trước khi xóa. Bạn có quyền từ chối.

Xử Lý Lỗi Thường Gặp

Lỗi Nguyên nhân Cách xử lý
Token không hợp lệ Token hết hạn / sai format Lấy token mới từ web.coka.ai
Failed to connect Server bảo trì / mạng lỗi Thử lại sau vài phút
Session not found Phiên kết nối hết hạn Khởi động lại ứng dụng AI

Tài Liệu API Kỹ Thuật

Coka AI MCP Server — Version 3.8.0 · Tổng số 44 Tools

🌐 Base URLs

Tên URL Mô tả
BASE_URL https://api.alpha.coka.ai API chính
CALENDAR_URL https://calendar.coka.ai Calendar API
NOTE_URL https://api.app2.coka.ai Note/Journey API
PRODUCTS_URL https://api.products.coka.ai Products/Deal/Order API

Xác thực

Tất cả API đều yêu cầu header xác thực:

Headers
Authorization: Bearer <COKA_TOKEN>
Organizationid: <organization_id>

Tổ chức

Quản lý thông tin tổ chức, thành viên và phân loại nhãn. Đây là nhóm API nền tảng cần gọi trước khi thao tác với Lead hoặc Deal.

🔧
Component xử lý: BASE_URL — api.alpha.coka.ai · Modules: User, Organization, Category

Lấy thông tin cá nhân

Trả về họ tên, email, số điện thoại, avatar và profileId của người dùng đang đăng nhập.

GET{BASE_URL}/api/v1/user/profile/getdetail

Danh sách tổ chức

Lấy tất cả tổ chức mà người dùng là thành viên. Trả về organizationId cần thiết cho mọi API khác.

GET{BASE_URL}/api/v2/organization/getlistpaging

Danh sách thành viên

Liệt kê tất cả thành viên trong tổ chức. Dùng để lấy profileId khi gán người phụ trách Lead/Deal.

GET{BASE_URL}/api/v1/organization/member/getlistpaging

Danh sách nhãn

Lấy danh sách nhãn phân loại (tags) của tổ chức. Dùng khi gắn nhãn cho Lead.

GET{BASE_URL}/api/v2/category/tags/getlistpaging

Quản lý Lead

Lead là khách hàng tiềm năng. Nhóm API này cho phép tạo, xem, cập nhật, gán người phụ trách, gắn nhãn và theo dõi Lead trong hệ thống CRM.

🔧
Component xử lý: BASE_URL — api.alpha.coka.ai · Module: Lead v2

Danh sách Lead

Lọc và phân trang danh sách Lead theo thời gian, nguồn, người phụ trách. Hỗ trợ tìm kiếm nâng cao.

POST{BASE_URL}/api/v2/lead/getlistpagingv2

Chi tiết Lead

Xem toàn bộ thông tin của một Lead: liên hệ, lịch sử chăm sóc, hoạt động, hội thoại đã liên kết.

GET{BASE_URL}/api/v2/lead/{leadId}

Gán người phụ trách Lead

Chỉ định một thành viên trong tổ chức làm người phụ trách chính cho Lead.

POST{BASE_URL}/api/v2/lead/{leadId}/assignto

Đổi người theo dõi Lead

Thêm hoặc thay đổi danh sách người theo dõi (follower) của Lead. Hỗ trợ gán theo user hoặc đội sale.

POST{BASE_URL}/api/v2/lead/{leadId}/follow

Gán nhãn cho Lead

Gắn nhãn phân loại cho Lead (ví dụ: "mua bán", "chuyển nhượng"). Hỗ trợ chế độ thêm hoặc thay thế.

POST{BASE_URL}/api/v2/lead/{leadId}/tags

Cập nhật thông tin Lead

Sửa một trường dữ liệu cụ thể (phone, email, gender...) mà không cần gửi toàn bộ payload.

PATCH{BASE_URL}/api/v2/lead/{leadId}/update-field

Tạo Lead mới

Tạo khách hàng tiềm năng mới với thông tin liên hệ, nguồn, nhãn và người phụ trách.

POST{BASE_URL}/api/v2/lead/create

Lịch hẹn

Quản lý lịch hẹn, cuộc họp và hoạt động chăm sóc khách hàng trên Calendar. Hỗ trợ tạo, sửa, đánh dấu hoàn thành cho cả Lead và Deal.

🔧
Component xử lý: CALENDAR_URL — calendar.coka.ai · Module: Schedule

Danh sách lịch hẹn

Lấy tất cả hoạt động (cuộc họp, cuộc gọi, tài liệu) đã đặt cho một Lead hoặc Deal.

GET{CALENDAR_URL}/api/Schedule

Tạo lịch hẹn

Tạo hoạt động mới trên Calendar: cuộc họp, cuộc gọi, hoặc gửi tài liệu cho khách hàng.

POST{CALENDAR_URL}/api/Schedule

Sửa lịch hẹn

Cập nhật tiêu đề, thời gian, nội dung hoặc mức ưu tiên của hoạt động đã tạo.

PUT{CALENDAR_URL}/api/Schedule

Đánh dấu hoàn thành

Đánh dấu hoạt động là đã hoàn thành hoặc bỏ đánh dấu nếu chưa xong.

PATCH{CALENDAR_URL}/api/Schedule/mark-as-done

Ghi chú

Thêm, sửa, xóa ghi chú chăm sóc trong lịch sử (journey) của Lead. Mỗi ghi chú gắn liền với một Lead cụ thể qua leadId.

🔧
Component xử lý: NOTE_URL — api.app2.coka.ai · Module: Lead Journey

Tạo ghi chú Lead

Thêm ghi chú chăm sóc mới vào lịch sử (journey) của Lead để theo dõi tiến trình.

POST{NOTE_URL}/api/v2/lead/{leadId}/journey/note

Sửa ghi chú Lead

Chỉnh sửa nội dung ghi chú đã tạo trước đó. Cần truyền noteId cụ thể.

PATCH{NOTE_URL}/api/v2/lead/{leadId}/journey/{noteId}/note

Xóa ghi chú Lead

Xóa vĩnh viễn một ghi chú khỏi lịch sử chăm sóc. Hành động không thể hoàn tác.

DELETE{NOTE_URL}/api/v2/lead/{leadId}/journey/{noteId}/note

Quản lý Deal

Deal là cơ hội kinh doanh trong quy trình bán hàng. Hỗ trợ tạo Deal từ Lead hoặc trực tiếp, quản lý trạng thái, giai đoạn, nhãn, người phụ trách và ghi chú Deal.

🔧
Component xử lý: PRODUCTS_URL — api.products.coka.ai · Modules: BusinessProcessTask, BusinessProcessTag, TaskTag · Lịch hẹn Deal dùng CALENDAR_URL

Chuyển Lead thành Deal

Chuyển đổi Lead đã có thành Deal trong quy trình bán hàng. Cần chọn Workspace và giai đoạn (stage) trước khi chuyển.

POST{PRODUCTS_URL}/api/v1/businessprocesstask

Tạo Deal mới

Tạo Deal trực tiếp không cần Lead. Tự động tạo Order và liên kết trong 1 lần gọi. Cần chọn khách hàng, workspace.

POST{PRODUCTS_URL}/api/v1/businessprocesstask

Danh sách Deal

Lấy danh sách Deal theo giai đoạn (stage) trong Workspace. Tương đương hiển thị bảng Kanban trên giao diện web.

POST{PRODUCTS_URL}/api/v1/BusinessProcessTask/advanced

Chi tiết Deal

Xem toàn bộ thông tin Deal: khách hàng, người phụ trách, giai đoạn, đơn hàng, lịch sử di chuyển stage.

GET{PRODUCTS_URL}/api/v1/BusinessProcessTask/{taskId}

Chuyển giai đoạn Deal

Di chuyển Deal sang giai đoạn khác trong quy trình. Tương đương kéo thả thẻ trên bảng Kanban.

PUT{PRODUCTS_URL}/api/v1/BusinessProcessTask/{taskId}/move

Nhân bản Deal

Sao chép Deal thành bản mới với hậu tố "(Bản sao)". Giữ nguyên thông tin gốc.

POST{PRODUCTS_URL}/api/v1/BusinessProcessTask/{taskId}/duplicate

Xóa Deal

Xóa vĩnh viễn một Deal khỏi hệ thống. AI luôn yêu cầu xác nhận trước khi thực hiện.

DELETE{PRODUCTS_URL}/api/v1/BusinessProcessTask/{taskId}

Cập nhật trạng thái Deal

Đánh dấu Deal là "Thành công" hoặc "Thất bại". Có thể kèm ghi chú giải thích lý do.

PUT{PRODUCTS_URL}/api/v1/BusinessProcessTask/{taskId}/status

Tạo lịch hẹn cho Deal

Tạo hoạt động (cuộc họp, gọi điện) gắn liền với Deal. Dùng Calendar API với workspaceId + taskId.

POST{CALENDAR_URL}/api/Schedule

Tạo ghi chú Deal

Thêm ghi chú chăm sóc vào lịch sử (journey) của Deal để theo dõi tiến trình kinh doanh.

POST{PRODUCTS_URL}/api/v1/BusinessProcessTask/{taskId}/journeys

Danh sách nhãn Deal

Lấy các nhãn màu sắc có sẵn trong Workspace. Dùng khi gắn nhãn quy trình cho Deal.

GET{PRODUCTS_URL}/api/v1/BusinessProcessTag

Gán nhãn cho Deal

Gắn nhãn quy trình cho Deal. Lưu ý: thao tác này thay thế toàn bộ nhãn hiện tại.

PUT{PRODUCTS_URL}/api/v1/TaskTag/{taskId}/tags

Đổi người theo dõi Deal

Thay đổi danh sách người theo dõi hoặc người phụ trách Deal. Hỗ trợ gán theo user hoặc đội nhóm.

PUT{PRODUCTS_URL}/api/v1/BusinessProcessTask/{taskId}/assignee

Đơn hàng

Tạo đơn hàng (Order) với sản phẩm, liên kết đơn hàng vào Deal, và đánh dấu hoàn thành bước chăm sóc Lead sau khi chuyển đổi thành công.

🔧
Component xử lý: PRODUCTS_URL — api.products.coka.ai · Module: Order, BusinessProcessTask · Bước chăm sóc dùng BASE_URL

Tạo đơn hàng

Tạo đơn hàng mới với danh sách sản phẩm, số lượng và giá. Cần gọi sau khi tạo Deal thành công.

POST{PRODUCTS_URL}/api/v1/order

Liên kết đơn hàng với Deal

Gắn đơn hàng đã tạo vào Deal tương ứng. Gọi ngay sau khi tạo Order thành công.

POST{PRODUCTS_URL}/api/v1/businessprocesstask/{taskId}/link-order

Hoàn thành bước chăm sóc

Đánh dấu hoàn thành bước chăm sóc hiện tại của Lead trong flow. Thường gọi sau khi chuyển Lead thành Deal thành công.

POST{BASE_URL}/api/v2/lead/{leadId}/flow/step/update

Tổng Kết API Endpoints

# Chức năng Method Endpoint Host
1 Lấy thông tin cá nhân GET /api/v1/user/profile/getdetail BASE_URL
2 Danh sách tổ chức GET /api/v2/organization/getlistpaging BASE_URL
3 Danh sách Lead POST /api/v2/lead/getlistpagingv2 BASE_URL
4 Tạo Lead mới POST /api/v2/lead/create BASE_URL
5 Chuyển Lead thành Deal POST /api/v1/businessprocesstask PRODUCTS_URL
6 Danh sách Deal POST /api/v1/BusinessProcessTask/advanced PRODUCTS_URL
7 Tạo đơn hàng POST /api/v1/order PRODUCTS_URL
📖
Đây là bảng tóm tắt. Xem chi tiết payload tại từng mục API ở trên.

Luồng Xử Lý Chức Năng

Mỗi tính năng được thực hiện bằng chuỗi API calls theo thứ tự. Click vào từng thẻ để xem chi tiết.

Bắt buộc
Tùy chọn (có thể bỏ qua)
📊 Tạo Lead mới 5 API calls

Tạo khách hàng tiềm năng mới. Gọi lần lượt các API để lấy dữ liệu phụ trợ (nguồn, nhãn, thành viên), sau đó POST tạo Lead.

GET /api/v2/organization/getlistpaging Lấy organizationId
Response mẫu
{ "data": [{ "id": "org_abc123", "name": "Công ty ABC", "subscription": "BUSINESS" }] }
GET /api/v2/category/sources/getlistpaging Lấy danh sách nguồn Lead
Response mẫu
{ "data": [{ "id": "src_001", "name": "Facebook" }, { "id": "src_002", "name": "Website" }] }
GET /api/v2/category/tags/getlistpaging Lấy danh sách nhãn
Response mẫu
{ "data": [{ "id": "tag_01", "name": "Mua bán" }, { "id": "tag_02", "name": "Chuyển nhượng" }] }
GET /api/v1/organization/member/getlistpaging Lấy danh sách thành viên (chọn assignee)
Response mẫu
{ "data": [{ "profileId": "prof_01", "fullName": "Nguyễn Văn A", "role": "ADMIN" }] }
POST /api/v2/lead/create Tạo Lead Body: fullName, phone, email, sourceId, tags, assignees
Response mẫu
{ "id": "lead_xyz789", "fullName": "Trần Thị B", "phone": "0901234567", "status": "NEW" }
🔄 Chuyển Lead thành Deal 6 API calls

Chuyển đổi Lead có sẵn thành Deal. Phải lấy workspace + giai đoạn trước, sau đó POST tạo Deal. Tùy chọn thêm sản phẩm vào đơn hàng.

GET {PRODUCTS_URL}/api/v1/workspace Lấy danh sách Workspace → chọn workspaceId
Response mẫu
{ "data": [{ "id": "ws_001", "name": "Kinh doanh BĐS" }, { "id": "ws_002", "name": "Bán hàng Online" }] }
GET {PRODUCTS_URL}/api/v1/businessprocessstage Lấy giai đoạn quy trình → chọn stageId
Response mẫu
{ "data": [{ "id": "stg_01", "name": "Tiếp nhận" }, { "id": "stg_02", "name": "Đang xử lý" }, { "id": "stg_03", "name": "Chốt deal" }] }
POST {PRODUCTS_URL}/api/v1/businessprocesstask Tạo Deal từ Lead Body: leadId, workspaceId, stageId, name, assignedTo
Response mẫu
{ "id": "task_abc123", "name": "Deal - Trần Thị B", "stageId": "stg_01", "status": 1 }
GET {PRODUCTS_URL}/api/v1/product Lấy danh sách sản phẩm
Response mẫu
{ "data": [{ "id": "prod_01", "name": "Căn hộ 2PN", "price": 2500000000 }, { "id": "prod_02", "name": "Căn hộ 3PN", "price": 3500000000 }] }
POST {PRODUCTS_URL}/api/v1/order Tạo đơn hàng Body: orderDetails[], totalPrice
Response mẫu
{ "id": "order_001", "totalPrice": 2500000000, "orderDetails": [{ "productId": "prod_01", "quantity": 1 }] }
POST {PRODUCTS_URL}/api/v1/businessprocesstask/{taskId}/link-order Liên kết đơn hàng với Deal
Response mẫu
{ "success": true, "message": "Order linked successfully" }
💼 Tạo Deal trực tiếp (không cần Lead) 7 API calls

Tạo Deal mới hoàn toàn từ khách hàng. Server tự động chạy 3 API liên tục: tạo Deal → tạo Order → link Order vào Deal.

GET {BASE_URL}/api/v2/customer/getlistpaging Tìm khách hàng Không thấy? → POST tạo khách hàng mới
Response mẫu
{ "data": [{ "id": "cust_01", "fullName": "Lê Văn C", "phone": "0912345678", "isBusiness": false }] }
GET {PRODUCTS_URL}/api/v1/workspace Chọn Workspace
Response mẫu
{ "data": [{ "id": "ws_001", "name": "Kinh doanh BĐS" }] }
GET {PRODUCTS_URL}/api/v1/businessprocessstage Chọn giai đoạn
Response mẫu
{ "data": [{ "id": "stg_01", "name": "Tiếp nhận" }, { "id": "stg_02", "name": "Đang xử lý" }] }
GET {BASE_URL}/api/v1/organization/member/getlistpaging Chọn người phụ trách
Response mẫu
{ "data": [{ "profileId": "prof_01", "fullName": "Nguyễn Văn A" }] }
GET {PRODUCTS_URL}/api/v1/BusinessProcessTag Lấy nhãn Deal
Response mẫu
{ "data": [{ "id": "dtag_01", "name": "Ưu tiên", "color": "#FF5733" }] }
GET {PRODUCTS_URL}/api/v1/product Chọn sản phẩm + số lượng
Response mẫu
{ "data": [{ "id": "prod_01", "name": "Căn hộ 2PN", "price": 2500000000 }] }
POST {PRODUCTS_URL}/api/v1/businessprocesstask Tạo Deal + Order + Link Body: customerId, workspaceId, stageId, orderDetails[], totalPrice
Response mẫu
{ "dealId": "task_def456", "orderId": "order_002", "name": "Deal - Lê Văn C", "status": 1 }
📋 Xem danh sách Deal (Kanban) 3 API calls

Hiển thị Deal theo giai đoạn giống bảng Kanban. Phải gọi 3 API lần lượt: workspace → stage → deals.

GET {PRODUCTS_URL}/api/v1/workspace Lấy danh sách Workspace
Response mẫu
{ "data": [{ "id": "ws_001", "name": "Kinh doanh BĐS" }] }
GET {PRODUCTS_URL}/api/v1/businessprocessstage Lấy giai đoạn → chọn stageId
Response mẫu
{ "data": [{ "id": "stg_01", "name": "Tiếp nhận" }, { "id": "stg_02", "name": "Đang xử lý" }] }
POST {PRODUCTS_URL}/api/v1/BusinessProcessTask/advanced Lấy danh sách Deal Body: workspaceId, stageId, statusList, page, pageSize
Response mẫu
{ "data": [{ "id": "task_001", "name": "Deal A", "status": 1 }, { "id": "task_002", "name": "Deal B", "status": 1 }], "totalCount": 2 }
👥 Quản lý Lead (xem, sửa, gán) 7 endpoints

Các API quản lý Lead hàng ngày. Mỗi endpoint có thể gọi độc lập tùy nhu cầu.

POST /api/v2/lead/getlistpagingv2 Lọc danh sách Lead Body: startDate, endDate, assignees, channels
Response mẫu
{ "data": [{ "id": "lead_01", "fullName": "Nguyễn A", "phone": "090xxx", "status": "NEW" }], "totalCount": 15 }
GET /api/v2/lead/{leadId} Chi tiết Lead (gọi 3 API song song)
Response mẫu
{ "id": "lead_01", "fullName": "Nguyễn A", "phone": "090xxx", "email": "a@mail.com", "gender": 0, "tags": ["Mua bán"] }
GET /api/v2/lead/{leadId}/journey Lịch sử chăm sóc (events, jsonSummary)
Response mẫu
{ "data": [{ "type": "NOTE", "content": "Đã gọi điện", "createdAt": "2026-03-15T10:00:00Z" }] }
PATCH /api/v2/lead/{leadId}/update-field Sửa 1 trường Body: fieldName, value
Response mẫu
{ "success": true, "fieldName": "phone", "value": "0987654321" }
POST /api/v2/lead/{leadId}/assignto Gán người phụ trách
Response mẫu
{ "success": true, "assignedTo": { "profileId": "prof_01", "fullName": "Nguyễn Văn A" } }
POST /api/v2/lead/{leadId}/follow Đổi người theo dõi
Response mẫu
{ "success": true, "followers": [{ "profileId": "prof_02", "fullName": "Trần B" }] }
POST /api/v2/lead/{leadId}/tags Gắn nhãn mode: "add" hoặc "replace"
Response mẫu
{ "success": true, "tags": ["Mua bán", "VIP"] }
⚙️ Quản lý Deal (chuyển stage, trạng thái, nhãn) 8 endpoints

Các API thao tác trên Deal. Mỗi endpoint gọi độc lập. Host: PRODUCTS_URL trừ lịch hẹn dùng CALENDAR_URL.

GET /api/v1/BusinessProcessTask/{taskId} Chi tiết Deal + stageHistory
Response mẫu
{ "id": "task_001", "name": "Deal A", "stageId": "stg_01", "status": 1, "stageHistory": [{ "stageId": "stg_01", "movedAt": "2026-03-10" }] }
PUT /api/v1/BusinessProcessTask/{taskId}/move Chuyển giai đoạn Body: newStageId
Response mẫu
{ "success": true, "newStageId": "stg_02", "newStageName": "Đang xử lý" }
PUT /api/v1/BusinessProcessTask/{taskId}/status Đánh dấu Thành công / Thất bại Body: isSuccess, note
Response mẫu
{ "success": true, "status": 2, "note": "Khách đã ký hợp đồng" }
PATCH /api/v1/BusinessProcessTask/{taskId} Đổi tên Deal Body: name
Response mẫu
{ "success": true, "name": "Deal A - Cập nhật" }
POST /api/v1/BusinessProcessTask/{taskId}/duplicate Nhân bản Deal
Response mẫu
{ "id": "task_003", "name": "Deal A (Bản sao)", "status": 1 }
DELETE /api/v1/BusinessProcessTask/{taskId} Xóa Deal
Response mẫu
{ "success": true, "message": "Deal deleted" }
PUT /api/v1/TaskTag/{taskId}/tags Gán nhãn Body: tagIds[]
Response mẫu
{ "success": true, "tagIds": ["dtag_01", "dtag_02"] }
PUT /api/v1/BusinessProcessTask/{taskId}/assignee Đổi người phụ trách Body: userIds[], teamIds[]
Response mẫu
{ "success": true, "assignees": [{ "profileId": "prof_01" }] }
📅 Lịch hẹn & Hoạt động (Calendar) 4 endpoints

Quản lý cuộc họp, cuộc gọi, tài liệu cho Lead/Deal. Tất cả API dùng host calendar.coka.ai.

GET {CALENDAR_URL}/api/Schedule Lấy danh sách hoạt động Query: contactId, organizationId
Response mẫu
{ "data": [{ "id": "sch_01", "title": "Gọi điện", "schedulesType": "call", "startTime": "2026-03-20T09:00:00Z", "isDone": false }] }
POST {CALENDAR_URL}/api/Schedule Tạo hoạt động mới Body: title, schedulesType, startTime, endTime, contactId
Response mẫu
{ "id": "sch_02", "title": "Họp báo giá", "schedulesType": "meeting", "startTime": "2026-03-21T14:00:00Z" }
PUT {CALENDAR_URL}/api/Schedule Sửa hoạt động đã tạo Body: scheduleId + fields cần sửa
Response mẫu
{ "success": true, "id": "sch_02", "title": "Họp báo giá (cập nhật)" }
PATCH {CALENDAR_URL}/api/Schedule/mark-as-done Đánh dấu hoàn thành Body: scheduleId, isDone
Response mẫu
{ "success": true, "id": "sch_01", "isDone": true }
📦 Tạo Đơn hàng & Liên kết Deal 4 API calls

Tạo đơn hàng với sản phẩm, gắn vào Deal. Thường gọi sau khi tạo Deal thành công. Gọi tuần tự: lấy sản phẩm → tạo order → liên kết → đánh dấu hoàn thành.

GET {PRODUCTS_URL}/api/v1/product Lấy danh sách sản phẩm Hỏi người dùng chọn sản phẩm + số lượng → tính totalPrice
Response mẫu
{ "data": [{ "id": "prod_01", "name": "Căn hộ 2PN", "price": 2500000000 }] }
POST {PRODUCTS_URL}/api/v1/order Tạo đơn hàng Body: orderDetails[{productId, quantity, unitPrice}], totalPrice, actor
Response mẫu
{ "id": "order_001", "totalPrice": 2500000000, "status": "CREATED" }
POST {PRODUCTS_URL}/api/v1/businessprocesstask/{taskId}/link-order Liên kết đơn hàng với Deal Body: orderId
Response mẫu
{ "success": true, "message": "Order linked successfully" }
POST {BASE_URL}/api/v2/lead/{leadId}/flow/step/update Hoàn thành bước chăm sóc Lead
Response mẫu
{ "success": true, "message": "Flow step updated" }