# Tài Liệu API **Dịch vụ**: mkt-facebook-service-net **Base URL**: `http://localhost/api/v1/mkt-facebook` **Phiên bản API**: v1.0 ## Xác Thực Tất cả REST API endpoints (trừ webhooks) yêu cầu JWT Bearer token. ```http Authorization: Bearer {jwt_token} ``` ## Webhooks API ### Verify Facebook Webhook Facebook dùng endpoint này để verify webhook trong quá trình setup. ```http GET /api/v1/webhooks/facebook ``` **Query Parameters**: | Parameter | Type | Mô Tả | |-----------|------|-------| | `hub.mode` | string | Phải là "subscribe" | | `hub.verify_token` | string | Token được cấu hình trong Facebook App | | `hub.challenge` | string | Chuỗi random từ Facebook | **Response** (200 OK): ``` {hub.challenge} ``` --- ### Nhận Facebook Messenger Events Nhận messages, postbacks, và các events khác từ Facebook Messenger Platform. ```http POST /api/v1/webhooks/facebook ``` **Headers**: ``` X-Hub-Signature-256: sha256={signature} Content-Type: application/json ``` **Request Body** (Message Event): ```json { "object": "page", "entry": [{ "id": "PAGE_ID", "time": 1234567890, "messaging": [{ "sender": { "id": "USER_ID" }, "recipient": { "id": "PAGE_ID" }, "timestamp": 1234567890, "message": { "mid": "MESSAGE_ID", "text": "Hello chatbot!", "quick_reply": { "payload": "QUICK_REPLY_PAYLOAD" } } }] }] } ``` **Response** (200 OK): ```json { "success": true } ``` --- ## Conversations API ### Danh Sách Conversations Lấy danh sách conversations có phân trang. ```http GET /api/v1/conversations ``` **Query Parameters**: | Parameter | Type | Required | Default | Mô Tả | |-----------|------|----------|---------|-------| | `shopId` | guid | Yes | - | Shop/Business ID | | `status` | string | No | - | Lọc theo status (Active, Closed) | | `skip` | int | No | 0 | Số records bỏ qua | | `take` | int | No | 20 | Số records trả về | **Response** (200 OK): ```json { "success": true, "data": { "conversations": [ { "id": "550e8400-e29b-41d4-a716-446655440000", "customerId": "650e8400-e29b-41d4-a716-446655440001", "customerName": "Nguyễn Văn A", "pageId": "123456789", "status": "Active", "channel": "FacebookMessenger", "lastMessageText": "Cảm ơn!", "lastMessageAt": "2026-01-18T10:30:00Z", "createdAt": "2026-01-18T09:00:00Z" } ], "totalCount": 150 }, "pagination": { "page": 1, "limit": 20, "total": 150, "totalPages": 8 } } ``` --- ### Lấy Conversation Theo ID Lấy một conversation với toàn bộ lịch sử tin nhắn. ```http GET /api/v1/conversations/{id} ``` **Response** (200 OK): ```json { "success": true, "data": { "id": "550e8400-e29b-41d4-a716-446655440000", "customer": { "id": "650e8400-e29b-41d4-a716-446655440001", "name": "Nguyễn Văn A", "tags": ["VIP", "Khách hàng quay lại"] }, "messages": [ { "id": "msg-001", "senderId": "1234567890", "content": "Xin chào, tôi cần hỗ trợ", "messageType": "Text", "direction": "Incoming", "sentAt": "2026-01-18T09:00:00Z" } ] } } ``` --- ## Customers API ### Danh Sách Khách Hàng Lấy danh sách khách hàng có phân trang. ```http GET /api/v1/customers ``` **Query Parameters**: | Parameter | Type | Required | Default | Mô Tả | |-----------|------|----------|---------|-------| | `shopId` | guid | Yes | - | Shop/Business ID | | `tags` | string[] | No | - | Lọc theo tags | | `search` | string | No | - | Tìm kiếm theo tên hoặc email | | `skip` | int | No | 0 | Pagination offset | | `take` | int | No | 20 | Page size | --- ## Chatbots API ### Danh Sách Automation Flows Lấy tất cả automation flows của shop. ```http GET /api/v1/chatbots/flows ``` **Response** (200 OK): ```json { "success": true, "data": [ { "id": "flow-001", "name": "Welcome Flow", "shopId": "shop-123", "triggerType": "GetStarted", "isActive": true, "nodeCount": 8 } ] } ``` --- ### Lấy AI Chatbot Config Lấy cấu hình AI chatbot của shop. ```http GET /api/v1/chatbots/ai-config?shopId={shopId} ``` **Response** (200 OK): ```json { "success": true, "data": { "id": "ai-config-001", "shopId": "shop-123", "provider": "OpenAI", "model": "gpt-4-turbo", "systemPrompt": "Bạn là trợ lý AI...", "temperature": 0.7, "maxTokens": 500, "isEnabled": true } } ``` --- ## Phản Hồi Lỗi ### Format Lỗi Chuẩn ```json { "success": false, "error": "Thông báo lỗi", "errorCode": "ERROR_CODE", "details": { "field": "Lỗi cụ thể của field" } } ``` ### Mã Lỗi Thường Gặp | Status Code | Error Code | Mô Tả | |-------------|------------|-------| | 400 | `INVALID_REQUEST` | Request parameters không hợp lệ | | 401 | `UNAUTHORIZED` | Thiếu hoặc token không hợp lệ | | 403 | `FORBIDDEN` | Không có quyền | | 404 | `NOT_FOUND` | Không tìm thấy resource | | 429 | `RATE_LIMIT_EXCEEDED` | Quá nhiều requests | | 500 | `INTERNAL_ERROR` | Lỗi server | --- ## Giới Hạn Tỷ Lệ Giới hạn API mỗi API key: - **100 requests/phút** cho read operations (GET) - **20 requests/phút** cho write operations (POST, PUT, DELETE) --- ## Tài Nguyên - [Tài Liệu Kiến Trúc](./ARCHITECTURE.md) - [Hướng Dẫn Setup Facebook](./FACEBOOK_SETUP.md)