Push NotificationsNotification Endpoint
Đăng ký Endpoint
Đăng ký hoặc cập nhật endpoint nhận thông báo (upsert by owner-scope).
Endpoint
POST /v1/notificationendpoints/register
Body Parameters
| Tên | Kiểu | Bắt buộc | Mô tả |
|---|---|---|---|
company_id | int | Có | ID công ty (phải trùng công ty của phiên đăng nhập) |
owner_type | int | string | Có | Loại chủ sở hữu. Khi gọi bằng JWT người dùng chỉ được phép 1/"user" |
owner_id | int | Có | ID chủ sở hữu. Khi gọi bằng JWT người dùng phải là ID của chính người dùng đang đăng nhập |
channel_type | int | Có | Loại kênh thông báo (VD: 9 = Push) |
endpoint_value | string | Có | Giá trị token/endpoint (VD: FCM registration token) |
app_code | string | Có | Mã ứng dụng (VD: pos, web, app) |
provider | string | Nhà cung cấp dịch vụ push. Mặc định: fcm | |
platform | string | Nền tảng thiết bị (VD: android, ios, web) | |
device_id | string | UUID thiết bị |
Ví dụ JSON
{
"company_id": 10311,
"owner_type": 1,
"owner_id": 789,
"channel_type": 9,
"provider": "fcm",
"endpoint_value": "fcm_token_string...",
"app_code": "pos",
"platform": "android",
"device_id": "device-uuid-string"
}Lưu ý
creator_id trong body bị bỏ qua — hệ thống tự gán theo người dùng đang đăng nhập.Workflow & Logic
- Endpoint được upsert theo bộ (
company_id,owner_type,owner_id,channel_type,app_code): nếu đã tồn tại (kể cả đang Disabled/Invalid) thì cập nhật token,provider,platform,device_idvà đưa vềstatus = 1; nếu chưa có thì tạo mới. - Nếu cùng
endpoint_valueđang được đăng ký cho chủ sở hữu khác, bản ghi cũ sẽ bị xóa (token được chuyển sang chủ sở hữu mới).
Response Schema
HTTP 200 - JSON Object
Trả về object Notification Endpoint vừa tạo/cập nhật.
Error Codes
| HTTP | Code | Mô tả |
|---|---|---|
| 422 | error_company_id_required | ID công ty không được để trống |
| 422 | error_owner_type_required | Loại chủ sở hữu không được để trống |
| 422 | error_owner_type_invalid | Loại chủ sở hữu không hợp lệ |
| 422 | error_owner_id_required | ID chủ sở hữu không được để trống hoặc phải > 0 |
| 422 | error_channel_type_required | Loại kênh không được để trống hoặc phải > 0 |
| 422 | error_endpoint_value_required | Giá trị endpoint không được để trống |
| 422 | error_app_code_required | Mã ứng dụng không được để trống |
| 422 | error_not_permission | company_id không phải công ty của phiên đăng nhập |
| 422 | error_owner_type_not_allowed | Người dùng chỉ được đăng ký endpoint với owner_type = 1 (user) |
| 422 | error_owner_id_not_allowed | owner_id không phải ID của người dùng đang đăng nhập |
| 500 | error_register_endpoint | Lỗi khi đăng ký endpoint |