Push Notifications Notification Endpoint Notification Endpoint Object Schema Đối tượng đại diện cho một endpoint nhận thông báo (push token, Telegram chat ID, v.v.)
Trường (Field) Kiểu (Type) Mô tả (Description) idint ID duy nhất của endpoint. company_idint ID công ty sở hữu. creator_idint ID người tạo/cập nhật (0 khi khách hàng tự đăng ký qua Storefront API). owner_typeint Loại chủ sở hữu endpoint (xem bảng Owner Type). owner_idint ID chủ sở hữu (customer ID hoặc user ID). channel_typeint Loại kênh thông báo (xem bảng Channel Type). providerstring Nhà cung cấp dịch vụ (VD: fcm, apns, telegram). endpoint_valuestring Giá trị endpoint thực tế (FCM token, Telegram chat ID, v.v.). app_codestring Mã ứng dụng đăng ký (VD: pos, web, app). platformstring Nền tảng thiết bị (VD: android, ios, web). device_idstring ID thiết bị (UUID của thiết bị). statusint Trạng thái endpoint (xem bảng Status). error_messagestring Thông báo lỗi (nếu endpoint bị đánh dấu Invalid). ip_addressstring Địa chỉ IP lần đăng ký gần nhất. date_last_usedint Thời gian sử dụng lần cuối (Unix timestamp). date_createdint Thời gian tạo (Unix timestamp). date_modifiedint Thời gian cập nhật gần nhất (Unix timestamp).
Giá trị Key Mô tả 1OWNER_TYPE_USERNhân viên / Người dùng hệ thống. 3OWNER_TYPE_CUSTOMERKhách hàng. 5OWNER_TYPE_SYSTEMHệ thống (dùng cho webhook, bot).
Giá trị Key Mô tả 1TYPE_EMAILEmail. 3TYPE_ZNSZalo Notification Service. 5TYPE_TELEGRAMTelegram Bot. 7TYPE_SMSTin nhắn SMS. 9TYPE_APP_PUSHPush Notification (FCM/APNs).
Giá trị Key Mô tả 1STATUS_ACTIVEĐang hoạt động, sẵn sàng nhận thông báo. 3STATUS_DISABLEDĐã hủy đăng ký (soft-disable). 5STATUS_INVALIDToken không hợp lệ (bị từ chối bởi provider).
Hệ thống đảm bảo mỗi owner chỉ có đúng 1 endpoint active cho mỗi tổ hợp (company_id, owner_type, owner_id, channel_type, app_code).
Register luôn là upsert : nếu đã tồn tại → cập nhật endpoint_value, provider, platform, device_id và chuyển status về ACTIVE.
Khi token (endpoint_value) được đăng ký lại cho thiết bị/khách hàng khác, bản ghi cũ của owner trước sẽ bị xóa — mỗi token chỉ gắn với một owner tại một thời điểm.