Dashboard
📈 Keys Tạo Mới (30 ngày)
Số lượng License Keys được tạo
🔋 Lượt Kích Hoạt (30 ngày)
Số lần activate thành công
⚡ Verify API (30 ngày)
Lượt verify thành công / thất bại
🥧 Tỷ lệ Key theo trạng thái
Phân bổ hiện tại
🏆 Top Ứng dụng
Theo số lượng keys
⏰ Sắp hết hạn
Trong vòng 7 ngày tới
🕐 Hoạt động gần đây
Thao tác Admin mới nhất
🔑 Keys gần đây
🔍
Key Trạng thái Ứng dụng Chủ sở hữu Activations Hết hạn Tạo lúc Actions
🔍
Tên Gói Ứng dụng Hạn (Ngày) Max thiết bị Giá Tạo lúc Actions
Thời gian Endpoint Key IP Quốc gia Kết quả Mã lỗi Thời gian (ms)
API Base URL https://keyvault.leanhminh2142006.workers.dev
Client Auth (HMAC) X-Client-ID, X-Timestamp, X-Nonce, X-Signature
Admin Auth (Bearer) Authorization: Bearer <ADMIN_JWT_TOKEN> (Lấy từ API POST /admin/api/auth/login)
Content-Type application/json
Response Format JSON (UTF-8)
CLIENT SDK APIs
ADMIN REST APIs (WEB BÁN HÀNG)
TÀI NGUYÊN & CODE
🛡️ Cơ Chế Bảo Mật HMAC-SHA256 & Anti-Replay

Mọi request gửi từ Client tới KeyVault bắt buộc phải đi kèm Chữ ký điện tử (Signature) để chống việc giả mạo gói tin (sniffing/mitm attack) hoặc sửa kết quả API.

HTTP Headers Bắt Buộc:
HeaderLoạiMô tả
X-Client-IDBắt buộcSlug của Ứng dụng (Lấy ở trang Quản lý Ứng dụng).
X-TimestampBắt buộcUnix Timestamp hiện tại (Giây). Hạn chênh lệch tối đa 5 phút.
X-NonceBắt buộcChuỗi ngẫu nhiên duy nhất (UUID v4) chống Replay Attack.
X-SignatureBắt buộcChữ ký HMAC-SHA256 băm dữ liệu theo Secret Key của App.
Quy trình tính Chữ ký (Signature):
  1. Hash Body: BODY_HASH = SHA256_HEX(request_body_string) (Với GET dùng "").
  2. Tạo Message String: METHOD:PATH:TIMESTAMP:NONCE:BODY_HASH
  3. Tính Signature: HMAC_SHA256_HEX(HMAC_SECRET, Message)
🔍 Kiểm Tra Key (POST /api/v1/verify)

Kiểm tra xem License Key có hợp lệ, đúng domain, IP hoặc quốc gia cho phép hay không. Không làm tăng số lượt kích hoạt.

Tham Số Request Body (JSON):
Tham sốLoạiYêu cầuMô tả
keyStringRequiredMã License Key của khách hàng
domainStringOptionalTên miền đang chạy script (nếu là Web Tool)
ipStringOptionalĐịa chỉ IP client (nếu không truyền tự lấy IP gửi request)
device_idStringOptionalMã máy / HWID thiết bị (nếu là Desktop App)
platformStringOptionalNền tảng (windows, mac, linux, android, ios, web)
versionStringOptionalPhiên bản ứng dụng đang dùng (ví dụ: 1.0.0)
Example Response (Thành công):
{
  "valid": true,
  "status": "active",
  "product": {
    "name": "Tool Auto MMO VIP 5335",
    "slug": "tool-mmo-1786600935335"
  },
  "key_info": {
    "key_display": "ZZAAC-M8H5U-*****-*****",
    "expires_at": "2026-09-12T06:01:39.000Z",
    "days_remaining": 30,
    "max_hwid": 2,
    "activated_count": 1
  }
}
Example Response (Không hợp lệ / Lỗi):
{
  "valid": false,
  "error": {
    "code": "KEY_EXPIRED",
    "message": "Key đã hết hạn sử dụng"
  }
}
📱 Kích Hoạt Thiết Bị (POST /api/v1/activate)

Đăng ký thiết bị hiện tại vào hệ thống và tính 1 lượt vào giới hạn tối đa (max_devices/max_ips/max_domains).

Tham Số Request Body (JSON):
Tham sốLoạiYêu cầuMô tả
keyStringRequiredMã License Key của khách hàng
device_idStringRequiredMã HWID máy / Device ID duy nhất của thiết bị
platformStringOptionalNền tảng (windows, mac, android, ios...)
device_nameStringOptionalTên máy / tên thiết bị (ví dụ: DESKTOP-ADMIN)
os_nameStringOptionalTên HĐH (Windows 11 Pro 64-bit, macOS 14...)
Example Response:
{
  "success": true,
  "message": "Kích hoạt thiết bị thành công",
  "activation": {
    "device_id": "CLIENT-HWID-888-ABC",
    "active_count": 1,
    "max_hwid": 2,
    "activated_at": "2026-08-13T06:01:40.000Z"
  }
}
🚪 Hủy Kích Hoạt Thiết Bị (POST /api/v1/deactivate)

Gỡ thiết bị hiện tại khỏi danh sách để giải phóng lượt kích hoạt cho máy khác.

Tham Số Request Body (JSON):
Tham sốLoạiYêu cầuMô tả
keyStringRequiredMã License Key
device_idStringRequiredMã HWID thiết bị muốn hủy kích hoạt
Example Response:
{
  "success": true,
  "message": "Đã hủy kích hoạt thiết bị thành công"
}
💓 Heartbeat Ping (POST /api/v1/heartbeat)

Gửi tín hiệu giữ kết nối định kỳ (mỗi 5-10 phút). Giúp phát hiện tức thì nếu Admin vừa Đình chỉ hoặc Thu hồi Key trên Web Admin.

Tham Số Request Body (JSON):
Tham sốLoạiYêu cầuMô tả
keyStringRequiredMã License Key
device_idStringOptionalMã HWID thiết bị đang dùng
Example Response:
{
  "success": true,
  "status": "active",
  "message": "Session alive",
  "expires_at": "2026-09-12T06:01:39.000Z"
}
ℹ️ Lấy Thông Tin Chi Tiết Key (GET /api/v1/info)

Tra cứu chi tiết hạn dùng, người sở hữu, số máy kích hoạt của Key.

Query Parameters:
ParamYêu cầuMô tả
keyRequiredMã Key cần tra cứu thông tin (ví dụ: ATY4H-MHMYR-GBNU7-YZ9QN)
Example Response:
{
  "success": true,
  "key": {
    "key_display": "ZZAAC-M8H5U-*****-*****",
    "status": "active",
    "product_name": "Tool Auto MMO VIP 5335",
    "plan_name": "Gói VIP 30 Ngày",
    "expires_at": "2026-09-12T06:01:39.000Z",
    "days_remaining": 30,
    "max_devices": 2,
    "current_devices": 1
  }
}
🆓 Tạo Key Miễn Phí (POST /api/v1/free-key)

Tự động sinh Key miễn phí (Dành cho trang Lấy Key / Shortlink Rút Gọn).

Tham Số Request Body (JSON):
Tham sốLoạiYêu cầuMô tả
product_slugStringRequiredSlug sản phẩm (ví dụ: web-profile)
plan_idStringOptionalID gói miễn phí (nếu không truyền tự chọn gói free mặc định)
owner_nameStringOptionalTên người nhận key
owner_emailStringOptionalEmail nhận key
Example Response:
{
  "success": true,
  "data": {
    "key": "FREE-XXXXX-YYYYY-ZZZZZ",
    "expires_at": "2026-08-14T10:00:00Z",
    "unlock_link": "https://short.io/xyz"
  }
}
📥 Kiểm Tra Cập Nhật (GET /api/v1/check-update)

Kiểm tra xem ứng dụng có bản cập nhật (bản ZIP/File) mới hơn phiên bản hiện tại hay không.

Query Parameters:
Query ParamYêu cầuMô tả
productRequiredSlug của sản phẩm (ví dụ: web-profile)
versionOptionalPhiên bản hiện tại của app (ví dụ: 1.0.0)
keyOptionalMã Key của user để kiểm tra phân cấp quyền VIP/Free
Example Response:
{
  "success": true,
  "data": {
    "has_update": true,
    "current_version": "1.0.0",
    "latest_version": "1.1.0",
    "channel": "stable",
    "release": {
      "version": "1.1.0",
      "title": "Bản cập nhật v1.1.0 - Sửa lỗi & Thêm tính năng",
      "changelog": "- Thêm giao diện mới\n- Tối ưu tốc độ",
      "file_name": "app-v1.1.0.zip",
      "download_url": "https://keyvault-releases.../app-v1.1.0.zip"
    }
  }
}
🔐 [Admin Auth] Đăng Nhập Lấy Token (POST /admin/api/auth/login)

Đăng nhập tài khoản Admin/Superadmin để lấy token (JWT Bearer Token) dùng cho mọi API Admin.

Tham Số Request Body (JSON):
Tham sốLoạiYêu cầuMô tả
usernameStringRequiredTên đăng nhập Admin
passwordStringRequiredMật khẩu Admin
Example Response:
{
  "success": true,
  "message": "Đăng nhập thành công",
  "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6ImFkbWluIiwicm9sZSI6InN1cGVyYWRtaW4iLCJpYXQiOjE3ODY2MDA5NTcsImV4cCI6MTc4NjY4NzM1N30...",
  "user": {
    "id": "admin-default-00000000000000000001",
    "username": "admin",
    "role": "superadmin"
  }
}
⭐ [Admin API] Tạo Key VIP Các Kiểu (POST /admin/api/keys & /bulk)

Dành cho Web bán hàng MMO, shop tự động, nạp tiền tự động. Hỗ trợ 7 kiểu tạo Key VIP / Free linh hoạt qua API.

Header Bắt Buộc Cho Tất Cả Admin APIs:
Authorization: Bearer <ADMIN_JWT_TOKEN>
Bảng Tham Số Đầy Đủ (JSON Request):
Tham sốLoạiYêu cầuMô tả
product_idStringRequiredID Ứng dụng (Lấy từ GET /admin/api/products)
plan_idStringRequiredID Gói cước VIP/Free (Lấy từ GET /admin/api/plans)
owner_nameStringOptionalTên khách hàng mua key
owner_emailStringOptionalEmail nhận key/thông báo của khách
custom_keyStringOptionalMã Key tùy chỉnh (ví dụ: DALYMMO-VIP-KING888)
pre_activateBooleanOptionalGửi true nếu muốn kích hoạt sẵn thiết bị/IP/Web lúc tạo key
device_idStringOptionalMã HWID thiết bị gắn sẵn (khi pre_activate: true)
ip_addressStringOptionalĐịa chỉ IP cho phép (khi pre_activate: true)
domainStringOptionalTên miền website cho phép (khi pre_activate: true)
platformStringOptionalGhi chú nền tảng (windows, web, chrome...)
send_emailBooleanOptionalGửi true để hệ thống tự gửi mail thông tin Key cho khách
📌 7 KIỂU TẠO KEY VIP / FREE CHI TIẾT:
Kiểu 1: Tạo Key VIP Tiêu Chuẩn (Theo Gói 30 Ngày):
POST /admin/api/keys
Authorization: Bearer <ADMIN_JWT_TOKEN>

{
  "product_id": "prod_12345",
  "plan_id": "plan_vip_30days",
  "owner_name": "Lê Văn Anh Minh",
  "owner_email": "khachhang@gmail.com"
}
Kiểu 2: Tạo Key VIP Định Dạng Tùy Chỉnh (Custom Key):
POST /admin/api/keys
Authorization: Bearer <ADMIN_JWT_TOKEN>

{
  "product_id": "prod_12345",
  "plan_id": "plan_vip_30days",
  "custom_key": "DALYMMO-VIP-KING888",
  "owner_name": "Khách Mua Custom Key",
  "owner_email": "customkey@gmail.com"
}
Kiểu 3: Tạo Key VIP Vĩnh Viễn (Lifetime Plan):
POST /admin/api/keys
Authorization: Bearer <ADMIN_JWT_TOKEN>

{
  "product_id": "prod_12345",
  "plan_id": "plan_vip_lifetime",
  "owner_name": "Khách VIP Vĩnh Viễn",
  "owner_email": "lifetime@gmail.com"
}
Kiểu 4: Tạo Key VIP Kích Hoạt Sẵn Máy/IP/Domain (Pre-Activated):
POST /admin/api/keys
Authorization: Bearer <ADMIN_JWT_TOKEN>

{
  "product_id": "prod_12345",
  "plan_id": "plan_vip_30days",
  "owner_name": "Khách Kích Hoạt Sẵn",
  "owner_email": "preactivated@gmail.com",
  "pre_activate": true,
  "device_id": "HWID-DESKTOP-ABC123XYZ",
  "ip_address": "1.1.1.1",
  "domain": "dalymmo.com",
  "platform": "windows"
}
Kiểu 5: Tạo Key VIP Tự Động Gửi Email Cho Khách:
POST /admin/api/keys
Authorization: Bearer <ADMIN_JWT_TOKEN>

{
  "product_id": "prod_12345",
  "plan_id": "plan_vip_30days",
  "owner_name": "Khách Nhận Email",
  "owner_email": "nhanemail@gmail.com",
  "send_email": true
}
Kiểu 6: Tạo Key Free Miễn Phí:
POST /admin/api/keys
Authorization: Bearer <ADMIN_JWT_TOKEN>

{
  "product_id": "prod_12345",
  "plan_id": "plan_free_standard",
  "owner_name": "Khách Hàng Free"
}
Kiểu 7: Tạo Key VIP Hàng Loạt (Bulk Keys - Ví dụ 50 Keys):
POST /admin/api/keys/bulk
Authorization: Bearer <ADMIN_JWT_TOKEN>

{
  "product_id": "prod_12345",
  "plan_id": "plan_vip_30days",
  "count": 50,
  "note": "Tạo 50 key cho đại lý"
}
Example Response Mẫu (Khi Tạo Key VIP Thành Công):
{
  "success": true,
  "message": "Tạo key thành công",
  "key": {
    "id": "936d9710-1359-44da-b8cc-f9b771caf14f",
    "key": "ZZAAC-M8H5U-NT8WA-HJVX9",
    "key_display": "ZZAAC-M8H5U-*****-*****",
    "status": "active",
    "expires_at": "2026-09-12T06:01:39.000Z",
    "owner_email": "khachhang.vip@dalymmo.com",
    "owner_name": "Lê Anh Minh VIP"
  }
}
📋 [Admin API] Danh Sách & Chi Tiết Key (GET /admin/api/keys)

Truy vấn danh sách Key có hỗ trợ Lọc, Tìm kiếm, Phân trang hoặc lấy Chi tiết 1 Key theo ID.

Endpoints:
  • GET /admin/api/keys?page=1&limit=20&search=nguyen&product_id=XXX&status=active
  • GET /admin/api/keys/:id – Lấy chi tiết 1 Key theo ID.
Example Response (Danh sách Keys):
{
  "success": true,
  "data": [
    {
      "id": "936d9710-1359-44da-b8cc-f9b771caf14f",
      "key_display": "ZZAAC-M8H5U-*****-*****",
      "key_prefix": "ZZAAC-M8H5U",
      "status": "active",
      "owner_email": "khachhang.vip@dalymmo.com",
      "owner_name": "Lê Anh Minh VIP",
      "product_name": "Tool Auto MMO VIP",
      "product_slug": "tool-mmo-1786600996156",
      "plan_name": "Gói VIP 30 Ngày",
      "max_devices": 2,
      "current_devices": 1,
      "expires_at": "2026-09-12T06:01:39.000Z",
      "created_at": "2026-08-13 06:01:39"
    }
  ],
  "meta": {
    "total": 3,
    "page": 1,
    "per_page": 10,
    "total_pages": 1
  }
}
✏️ [Admin API] Cập Nhật & Xóa Key (PATCH|DELETE /admin/api/keys/:id)

Cập nhật thông tin email, tên chủ sở hữu, ghi chú, danh sách IP/Domain/Device ID whitelist hoặc Xóa Key.

1. Cập nhật Key (PATCH /admin/api/keys/:id):
PATCH /admin/api/keys/936d9710-1359-44da-b8cc-f9b771caf14f
Authorization: Bearer <ADMIN_JWT_TOKEN>

{
  "owner_name": "Lê Anh Minh (Đã đổi tên)",
  "owner_email": "minhnewemail@gmail.com",
  "note": "Cập nhật ghi chú mới"
}
Example Response (PATCH /admin/api/keys/:id):
{
  "success": true,
  "message": "Cập nhật key thành công"
}
2. Xóa Key (DELETE /admin/api/keys/:id):
DELETE /admin/api/keys/936d9710-1359-44da-b8cc-f9b771caf14f
Authorization: Bearer <ADMIN_JWT_TOKEN>
Example Response (DELETE /admin/api/keys/:id):
{
  "success": true,
  "message": "Đã xóa key thành công"
}
🔄 [Admin API] Gia Hạn Key (POST /admin/api/keys/:id/renew)

Tự động cộng thêm ngày sử dụng khi khách gia hạn đơn hàng trên Web MMO.

Tham Số Request Body (JSON):
POST /admin/api/keys/936d9710-1359-44da-b8cc-f9b771caf14f/renew
Authorization: Bearer <ADMIN_JWT_TOKEN>

{
  "add_days": 30
}
Example Response:
{
  "success": true,
  "message": "Gia hạn key thành công thêm 30 ngày",
  "key": {
    "id": "936d9710-1359-44da-b8cc-f9b771caf14f",
    "expires_at": "2026-10-12T06:01:39.000Z"
  }
}
⏸️ [Admin API] Khóa / Thu Hồi / Kích Hoạt Key

Thay đổi trạng thái của Key trực tiếp từ hệ thống quản lý đơn hàng.

1. Khóa / Tạm Đình Chỉ Key (POST /admin/api/keys/:id/suspend):
POST /admin/api/keys/936d9710-1359-44da-b8cc-f9b771caf14f/suspend
Authorization: Bearer <ADMIN_JWT_TOKEN>
Example Response (Suspend):
{
  "success": true,
  "message": "Đã tạm dừng key thành công"
}
2. Mở Khóa Lại Key (POST /admin/api/keys/:id/activate):
POST /admin/api/keys/936d9710-1359-44da-b8cc-f9b771caf14f/activate
Authorization: Bearer <ADMIN_JWT_TOKEN>
Example Response (Activate):
{
  "success": true,
  "message": "Đã kích hoạt lại key thành công"
}
3. Thu Hồi Vĩnh Viễn Key (POST /admin/api/keys/:id/revoke):
POST /admin/api/keys/936d9710-1359-44da-b8cc-f9b771caf14f/revoke
Authorization: Bearer <ADMIN_JWT_TOKEN>
Example Response (Revoke):
{
  "success": true,
  "message": "Đã thu hồi key vĩnh viễn"
}
🖐️ [Admin API] Kích Hoạt Thủ Công (POST /admin/api/keys/:id/activate-manual)

Thêm trực tiếp IP, Device ID (HWID), hoặc Domain cho Key của khách trên hệ thống.

Tham Số Request Body (JSON):
POST /admin/api/keys/936d9710-1359-44da-b8cc-f9b771caf14f/activate-manual
Authorization: Bearer <ADMIN_JWT_TOKEN>

{
  "device_id": "ADMIN-MANUAL-HWID-999",
  "ip_address": "1.1.1.1",
  "domain": "dalymmo.com"
}
Example Response:
{
  "success": true,
  "message": "Kích hoạt thủ công thành công"
}
🧹 [Admin API] Reset & Xóa Lượt Kích Hoạt

Quản lý các máy / IP / Domain đang kích hoạt của Key.

1. Reset Toàn Bộ Lượt Kích Hoạt Về 0 (POST /admin/api/keys/:id/reset-activations):
POST /admin/api/keys/936d9710-1359-44da-b8cc-f9b771caf14f/reset-activations
Authorization: Bearer <ADMIN_JWT_TOKEN>
Example Response (Reset):
{
  "success": true,
  "message": "Đã reset tất cả lượt kích hoạt thiết bị của key",
  "cleared_count": 1
}
3. Xóa 1 Thiết Bị Cụ Thể (DELETE /admin/api/keys/:id/activations/:actId):
DELETE /admin/api/keys/k_123456789/activations/act_8a7f9b2c
Authorization: Bearer <ADMIN_JWT_TOKEN>
Example Response (Delete One Activation):
{
  "success": true,
  "data": {
    "message": "Đã gỡ bỏ thiết bị chỉ định thành công!"
  }
}
📦 [Admin API] Quản Lý Ứng Dụng / Sản Phẩm

Quản lý thông tin Ứng dụng, Mã Secret HMAC và các cấu hình kiểm tra bắt buộc.

1. Lấy Danh Sách Sản Phẩm (GET /admin/api/products):
GET /admin/api/products
Authorization: Bearer <ADMIN_JWT_TOKEN>
Example Response (GET Products):
{
  "success": true,
  "products": [
    {
      "id": "0b72f679-1702-4928-89d4-cf0c3d31116e",
      "name": "Tool Auto MMO VIP 6156",
      "slug": "tool-mmo-1786600996156",
      "secret": "sec_ae9594f83b2a8d11c790184497e29bbf",
      "require_device_id": 1,
      "require_domain": 0,
      "is_active": 1
    }
  ]
}
2. Tạo Ứng Dụng Mới (POST /admin/api/products):
POST /admin/api/products
Authorization: Bearer <ADMIN_JWT_TOKEN>

{
  "name": "Tool Auto MMO VIP",
  "slug": "tool-mmo-vip",
  "description": "Phần mềm tự động hóa MMO"
}
Example Response (POST Product):
{
  "success": true,
  "message": "Ứng dụng đã được tạo",
  "product": {
    "id": "0b72f679-1702-4928-89d4-cf0c3d31116e",
    "name": "Tool Auto MMO VIP",
    "slug": "tool-mmo-vip",
    "secret": "sec_ae9594f83b2a8d11c790184497e29bbf"
  }
}
🏷️ [Admin API] Quản Lý Gói Cước (Plans)

Quản lý các Gói cước (VIP 30 ngày, 1 năm, Miễn phí) của từng Ứng dụng.

1. Lấy Danh Sách Gói Cước (GET /admin/api/plans):
GET /admin/api/plans
Authorization: Bearer <ADMIN_JWT_TOKEN>
Example Response (GET Plans):
{
  "success": true,
  "plans": [
    {
      "id": "52738c43-ff14-43eb-966c-b704c6f46fe6",
      "product_id": "0b72f679-1702-4928-89d4-cf0c3d31116e",
      "name": "Gói VIP 30 Ngày",
      "duration_days": 30,
      "max_devices": 2,
      "max_ips": 2,
      "is_free": 0,
      "price": 180000
    }
  ]
}
2. Tạo Gói Cước Mới (POST /admin/api/products/:productId/plans):
POST /admin/api/products/0b72f679-1702-4928-89d4-cf0c3d31116e/plans
Authorization: Bearer <ADMIN_JWT_TOKEN>

{
  "name": "Gói VIP 30 Ngày",
  "duration_days": 30,
  "max_devices": 2,
  "max_ips": 2,
  "max_domains": 1,
  "price": 200000,
  "is_free": 0
}
Example Response (POST Plan):
{
  "success": true,
  "message": "Plan đã được tạo",
  "plan": {
    "id": "52738c43-ff14-43eb-966c-b704c6f46fe6",
    "name": "Gói VIP 30 Ngày"
  }
}
👥 [Admin API] Danh Sách Khách Hàng (GET /admin/api/customers)

Thống kê danh sách tất cả Khách hàng theo Email kèm tổng số Key họ đang sở hữu.

Example Response:
{
  "success": true,
  "customers": [
    {
      "owner_email": "khachhang.vip@dalymmo.com",
      "owner_name": "Lê Anh Minh VIP",
      "total_keys": 3,
      "active_keys": 2
    }
  ]
}
🔔 [Admin API] Quản Lý Webhooks (Tự Động Hóa)

Đăng ký Webhook URL để nhận thông báo HTTP POST tự động khi có sự kiện (tạo key, kích hoạt, hết hạn, gia hạn).

1. Đăng Ký Webhook Mới (POST /admin/api/webhooks):
POST /admin/api/webhooks
Authorization: Bearer <ADMIN_JWT_TOKEN>

{
  "url": "https://dalymmo.com/api/webhook-receiver",
  "events": ["key.created", "key.activated", "key.expired", "key.renewed"],
  "secret": "whsec_mysecretkey123"
}
Example Response (POST Webhook):
{
  "success": true,
  "message": "Đã đăng ký Webhook thành công",
  "webhook": {
    "id": "wh_987654321",
    "url": "https://dalymmo.com/api/webhook-receiver",
    "is_active": 1
  }
}
2. Lấy Danh Sách Webhooks (GET /admin/api/webhooks):
GET /admin/api/webhooks
Authorization: Bearer <ADMIN_JWT_TOKEN>
Example Response (GET Webhooks):
{
  "success": true,
  "webhooks": [
    {
      "id": "wh_987654321",
      "url": "https://dalymmo.com/api/webhook-receiver",
      "events": "[\"key.created\",\"key.activated\"]",
      "is_active": 1
    }
  ]
}
🚫 [Admin API] Quản Lý Danh Sách Chặn (Ban List)

Cấm địa chỉ IP, Domain, hoặc HWID thiết bị cố tình crack/hack phần mềm.

1. Thêm Mục Cấm Mới (POST /admin/api/bans):
POST /admin/api/bans
Authorization: Bearer <ADMIN_JWT_TOKEN>

{
  "type": "ip",
  "value": "192.168.99.99",
  "reason": "Spam verify API liên tục"
}
Example Response (POST Ban):
{
  "success": true,
  "message": "Đã thêm vào danh sách chặn",
  "ban": {
    "id": "ban_c9182390a88192",
    "type": "ip",
    "value": "192.168.99.99",
    "reason": "Spam verify API liên tục",
    "created_at": "2026-08-13 06:01:44"
  }
}
2. Lấy Danh Sách Cấm (GET /admin/api/bans):
GET /admin/api/bans
Authorization: Bearer <ADMIN_JWT_TOKEN>
Example Response (GET Bans):
{
  "success": true,
  "bans": [
    {
      "id": "ban_c9182390a88192",
      "type": "ip",
      "value": "192.168.99.99",
      "reason": "Spam verify API liên tục",
      "created_at": "2026-08-13 06:01:44"
    }
  ],
  "meta": {
    "total": 1,
    "page": 1,
    "per_page": 50
  }
}
🚀 [Admin API] Quản Lý Bản Cập Nhật (Releases)

Đăng tải các bản cập nhật phần mềm (phiên bản v1.0.0, file ZIP, changelog) để phẩn mềm tự nâng cấp.

1. Đăng Bản Cập Nhật Mới (POST /admin/api/releases):
POST /admin/api/releases
Authorization: Bearer <ADMIN_JWT_TOKEN>

{
  "product_id": "0b72f679-1702-4928-89d4-cf0c3d31116e",
  "version": "1.0.5",
  "channel": "stable",
  "title": "Bản cập nhật tự động v1.0.5 DALYMMO",
  "file_url": "https://dalymmo.com/downloads/v1.0.5.zip",
  "file_name": "v1.0.5.zip",
  "file_type": "zip",
  "file_size": 10485760,
  "is_required": 0
}
Example Response (POST Release):
{
  "success": true,
  "message": "Đã tạo bản cập nhật thành công",
  "release": {
    "id": "3c0167f9-b214-4349-a57c-0a6437226998",
    "version": "1.0.5",
    "title": "Bản cập nhật tự động v1.0.5 DALYMMO",
    "file_url": "https://dalymmo.com/downloads/v1.0.5.zip"
  }
}
2. Lấy Danh Sách Bản Cập Nhật (GET /admin/api/releases):
GET /admin/api/releases
Authorization: Bearer <ADMIN_JWT_TOKEN>
Example Response (GET Releases):
{
  "success": true,
  "releases": [
    {
      "id": "3c0167f9-b214-4349-a57c-0a6437226998",
      "version": "1.0.5",
      "title": "Bản cập nhật tự động v1.0.5 DALYMMO",
      "file_url": "https://dalymmo.com/downloads/v1.0.5.zip"
    }
  ],
  "meta": {
    "total": 1,
    "page": 1,
    "per_page": 20
  }
}
📊 [Admin API] Thống Kê, Logs & Nhật Ký Audit

Truy xuất dữ liệu báo cáo Dashboard, Nhật ký gọi API của Client và Nhật ký thao tác của Admin.

1. Thống Kê Báo Cáo Overview (GET /admin/api/stats):
GET /admin/api/stats
Authorization: Bearer <ADMIN_JWT_TOKEN>
Example Response (Stats Overview):
{
  "success": true,
  "stats": {
    "keys": {
      "total": 3,
      "active": 2,
      "inactive": 1,
      "expired": 0,
      "suspended": 0,
      "revoked": 0,
      "expiring_soon": 0
    },
    "products": 4,
    "today_verifications": 1
  }
}
2. Tra Cứu Nhật Ký Gọi API Client (GET /admin/api/logs):
GET /admin/api/logs?page=1&limit=5
Authorization: Bearer <ADMIN_JWT_TOKEN>
Example Response (Logs):
{
  "success": true,
  "logs": [
    {
      "id": "log_123",
      "endpoint": "/api/v1/verify",
      "ip": "125.212.158.174",
      "country": "VN",
      "result": "blocked",
      "error_code": "AUTH_FAILED",
      "created_at": "2026-08-13 06:02:43"
    }
  ],
  "meta": {
    "total": 2,
    "page": 1,
    "per_page": 5
  }
}
3. Nhật Ký Thao Tác Admin (GET /admin/api/audit-logs):
GET /admin/api/audit-logs?page=1&limit=5
Authorization: Bearer <ADMIN_JWT_TOKEN>
Example Response (Audit Logs):
{
  "success": true,
  "logs": [
    {
      "id": "158bce919dce6901e12b96d503ddd3be",
      "username": "admin",
      "action": "CREATE_KEY",
      "details": "{\"product_id\":\"0b72f679...\"}",
      "ip_address": "125.212.158.174",
      "created_at": "2026-08-13 06:01:39"
    }
  ],
  "pagination": {
    "page": 1,
    "limit": 5,
    "total": 18
  }
}
⚙️ [Admin API] Cấu Hình Hệ Thống (Settings)

Đọc và cập nhật các cài đặt Telegram Bot, Email Resend, Rate Limit từ hệ thống KV Cache.

1. Đọc Cấu Hình Hệ Thống (GET /admin/api/settings):
GET /admin/api/settings
Authorization: Bearer <ADMIN_JWT_TOKEN>
Example Response (GET Settings):
{
  "success": true,
  "data": {
    "telegram_bot_token": "8979171906:AAF...",
    "telegram_admin_id": "7429925709",
    "notify_key_vip": "true",
    "notify_key_free": "true",
    "notify_key_activated": "true",
    "telegram_report_interval": "daily"
  }
}
2. Lưu Cấu Hình Hệ Thống (POST /admin/api/settings):
POST /admin/api/settings
Authorization: Bearer <ADMIN_JWT_TOKEN>

{
  "telegram_bot_token": "8979171906:AAF...",
  "telegram_admin_id": "7429925709",
  "notify_key_vip": "true",
  "notify_key_free": "false"
}
Example Response (POST Settings):
{
  "success": true,
  "data": {
    "message": "Đã lưu cài đặt hệ thống thành công!"
  }
}
💻 Mã Nguồn Mẫu (SDK)

Chọn ngôn ngữ lập trình bên dưới để lấy đoạn mã tạo Signature và gọi API tự động:

⚠️ Danh Sách Mã Lỗi (Error Codes)
Error CodeHTTP StatusÝ Nghĩa / Mô Tả
KEY_NOT_FOUND200 / 404Key không tồn tại trên hệ thống
KEY_EXPIRED200Key đã hết thời hạn sử dụng
KEY_REVOKED200Key đã bị Admin thu hồi vĩnh viễn
KEY_SUSPENDED200Key đang bị tạm đình chỉ hoạt động
KEY_DOMAIN_MISMATCH200Tên miền truy cập không khớp với danh sách cho phép
KEY_IP_BLOCKED200Địa chỉ IP client bị chặn hoặc không khớp whitelist
KEY_DEVICE_LIMIT200Đã vượt quá số lượng thiết bị kích hoạt cho phép
KEY_COUNTRY_BLOCKED200Quốc gia truy cập nằm trong danh sách cấm
SIGNATURE_INVALID401Chữ ký HMAC không khớp (HMAC Secret bị sai)
TIMESTAMP_EXPIRED401Thời gian máy client lệch hơn 5 phút so với Server
NONCE_REPLAYED401Nonce đã được sử dụng (phát hiện Replay Attack)
RATE_LIMITED429Gọi API quá số lần quy định, hãy thử lại sau
Username Email Chức vụ Đăng nhập cuối Trạng thái Actions
Phiên bản Ứng dụng Channel File Size Ngày tạo Trạng thái Actions

Trang Lấy Key

TÊN TRANG URL TRẠNG THÁI TẠO LÚC ACTIONS
Đang tải...
🔗 Cấu hình Web Rút Gọn (Kiếm tiền)
Tên / Dịch vụ API URL Trường phản hồi (JSON) Mặc định Thao tác
Loại chặn Giá trị Lý do Ngày chặn Trạng thái Actions
🔐 Đổi mật khẩu
📧 Cấu hình Email (Resend)
Lấy tại resend.com. Nếu để trống sẽ sử dụng từ biến môi trường.
ℹ️ Thông tin hệ thống

Dùng URL trên để cấu hình trong SDK client.

Nhật Ký Quản Trị
Lịch sử thao tác của các Admin
Thời gian Người dùng Hành động Chi tiết IP
Đang tải...