Bỏ qua để đến nội dung

Thiết bị

~33 phút đọc

Thiết bị chuyển tiếp tin (Android, iOS Shortcuts): mã ghép, trạng thái, lệnh kiểm tra, nhật ký, quy tắc cảnh báo và bản phát hành ứng dụng.

MethodPathTóm tắtQuyềnNhóm tốc độTương tác
GET/v1/app/android/latestBản app Android mới nhấtCông khai, không cần khoáreadScalar
GET/v1/app/ios-shortcut/latestBản Shortcut iPhone mới nhấtCông khai, không cần khoáreadScalar
GET/v1/banks/ios-keywordsTừ khoá automation iPhone theo ngân hàngdevice.readreadScalar
GET/v1/device-alert-rulesQuy tắc cảnh báo thiết bịdevice.readreadScalar
PUT/v1/device-alert-rulesLưu quy tắc cảnh báo thiết bịnotify.org_rule.managewriteScalar
GET/v1/devicesDanh sách thiết bịdevice.readreadScalar
POST/v1/devicesTạo thiết bị iPhone (Shortcuts)device.managewriteScalar
POST/v1/devices/pairing-codesTạo mã ghép thiết bị Androiddevice.managewriteScalar
GET/v1/devices/{id}Chi tiết thiết bịdevice.readreadScalar
PATCH/v1/devices/{id}Cập nhật thiết bịdevice.managewriteScalar
DELETE/v1/devices/{id}Gỡ thiết bịdevice.managewriteScalar
PATCH/v1/devices/{id}/accounts/{account_id}Bật/tắt "Tính giao dịch iOS là đã xác thực" cho một tài khoảndevice.managewriteScalar
GET/v1/devices/{id}/banksAutomation theo ngân hàng của iPhonedevice.readreadScalar
PATCH/v1/devices/{id}/banks/{bank_code}Đánh dấu đã tạo automation cho ngân hàngdevice.managewriteScalar
GET/v1/devices/{id}/eventsNhật ký thiết bịdevice.readreadScalar
GET/v1/devices/{id}/queueHàng đợi tin chờ gửi trên thiết bịdevice.read_queuereadScalar
POST/v1/devices/{id}/test-smsGửi tin thử qua iPhonedevice.managewriteScalar
GET/v1/devices/{id}/test-streamTheo dõi lần gửi thử (SSE)device.readreadScalar
POST/v1/devices/{id}:nudgeNhắc người phụ trách thiết bịdevice.managewriteScalar
POST/v1/devices/{id}:pingGửi lệnh kiểm tra tới thiết bịdevice.managewriteScalar
POST/v1/devices/{id}:restore-trustXoay token và tin cậy lại iPhonedevice.managewriteScalar
POST/v1/devices/{id}:rotate-tokenXoay token iPhonedevice.managewriteScalar

Bản app Android mới nhất

Công khai, không cần xác thực. Chỉ trả bản đang staged/stable/mandatory; bản halted bị bỏ qua (trả bản ổn định trước đó). Máy chỉ cài khi qua cổng rollout theo băm device_id và chữ ký Ed25519 hợp lệ. Chưa có bản nào → 404 resource_not_found.

Quyền: Công khai, không cần khoá
  • Nhóm tốc độ: read
  • Phản hồi thành công 200: Manifest. — AndroidReleaseManifest, application/json
  • Mã lỗi: chỉ các mã lỗi chung ở Tổng quan
TênVị tríBắt buộcKiểuMô tả
channelqueryKhôngstring—
curl -sS -X GET "https://api.dongtien.pro/v1/app/android/latest"

Mở trong tài liệu tương tác

Bản Shortcut iPhone mới nhất

Công khai. Chỉ trả bản staged/stable/mandatory mới nhất; chưa có bản nào → 404 resource_not_found. Liên kết iCloud do quy trình phát hành (ký trên macOS) đặt.

Quyền: Công khai, không cần khoá
  • Nhóm tốc độ: read
  • Phản hồi thành công 200: Manifest. — IosShortcutRelease, application/json
  • Mã lỗi: chỉ các mã lỗi chung ở Tổng quan
curl -sS -X GET "https://api.dongtien.pro/v1/app/ios-shortcut/latest"

Mở trong tài liệu tương tác

Từ khoá automation iPhone theo ngân hàng

Danh mục chung (không theo công ty): từ khoá mà tin biến động số dư của từng ngân hàng luôn chứa, dùng cho bước "Tạo automation". Từ khoá chỉ để bắt tin, không tham gia xác thực nguồn.

Quyền: device.read
  • Nhóm tốc độ: read
  • Phản hồi thành công 200: Danh sách. — IosBankKeywordList, application/json
  • Mã lỗi: chỉ các mã lỗi chung ở Tổng quan
curl -sS -X GET "https://api.dongtien.pro/v1/banks/ios-keywords" \
-H "Authorization: Bearer $DT_API_KEY"

Mở trong tài liệu tương tác

Quy tắc cảnh báo thiết bị

Chưa lưu thì trả mặc định (updated_at = null).

Quyền: device.read
  • Nhóm tốc độ: read
  • Phản hồi thành công 200: Quy tắc. — DeviceAlertRules, application/json
  • Mã lỗi: chỉ các mã lỗi chung ở Tổng quan
TênVị tríBắt buộcKiểuMô tả
company_idqueryKhôngOrgIdMã công ty / tổ chức (org_…).
curl -sS -X GET "https://api.dongtien.pro/v1/device-alert-rules" \
-H "Authorization: Bearer $DT_API_KEY"

Mở trong tài liệu tương tác

Lưu quy tắc cảnh báo thiết bị

Thay toàn bộ quy tắc của công ty (company_id trong thân).

Quyền: notify.org_rule.manage Idempotency-Key: tuỳ chọn
  • Nhóm tốc độ: write
  • Nội dung yêu cầu: PutDeviceAlertRules (application/json, bắt buộc)
  • Phản hồi thành công 200: Quy tắc sau khi lưu. — DeviceAlertRules, application/json
  • Mã lỗi riêng của endpoint: conflict, idempotency_in_flight, idempotency_key_reused
TênVị tríBắt buộcKiểuMô tả
idempotency-keyheaderKhôngstringKhoá chống gửi trùng (≤ 255 ký tự, nên là UUID). Giữ 24 giờ; gửi lại cùng khoá + cùng nội dung trả lại kết quả cũ.
curl -sS -X PUT "https://api.dongtien.pro/v1/device-alert-rules" \
-H "Authorization: Bearer $DT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"company_id": "org_01hz8x9k3m4n5p6q7r8s9t0v1w",
"no_heartbeat_min": 15,
"battery_lt": 20,
"queue_gt": 10,
"queue_age_min": 30,
"ios_silent_hours": 36,
"channels": [
"zalo",
"push"
],
"enabled": {
"no_heartbeat": true,
"battery": true,
"queue": true,
"ios_silent": true
}
}'

Mở trong tài liệu tương tác

Danh sách thiết bị

Thiết bị trong phạm vi của thông tin xác thực. Heartbeat sống ở Durable Object, Postgres chỉ rollup mỗi 60 s nên last_seen_at có thể trễ tới 1 phút.

Quyền: device.read
  • Nhóm tốc độ: read
  • Phản hồi thành công 200: Danh sách. — DeviceList, application/json
  • Mã lỗi riêng của endpoint: invalid_cursor
TênVị tríBắt buộcKiểuMô tả
limitqueryKhôngintegerSố phần tử mỗi trang (1–100, mặc định 20).
cursorqueryKhôngCursorCon trỏ phân trang mờ (cur_…) lấy từ next_cursor; không tự tạo hay sửa.
company_idqueryKhôngOrgIdMã công ty / tổ chức (org_…).
kindqueryKhôngDeviceKind—
statequeryKhôngDeviceState—
qqueryKhôngstringTìm theo tên/model thiết bị.
include_revokedqueryKhôngboolean | null—
curl -sS -X GET "https://api.dongtien.pro/v1/devices" \
-H "Authorization: Bearer $DT_API_KEY"

Mở trong tài liệu tương tác

Tạo thiết bị iPhone (Shortcuts)

Tạo thiết bị ở trạng thái pending_pair (hết hạn sau 24 giờ nếu chưa nhận được tin nào) và trả token dtd_… MỘT LẦN. Không dùng Idempotency-Key (kết quả là bí mật). Ghi nhật ký kiểm toán device.create.

Quyền: device.manage
  • Nhóm tốc độ: write
  • Nội dung yêu cầu: CreateIosDevice (application/json, bắt buộc)
  • Phản hồi thành công 201: Đã tạo; có token. — IosDeviceCredential, application/json
  • Mã lỗi riêng của endpoint: conflict
curl -sS -X POST "https://api.dongtien.pro/v1/devices" \
-H "Authorization: Bearer $DT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"company_id": "org_0f5k2m9q4h7t3n8r6v1w0x5yzd",
"kind": "ios_shortcut",
"name": "iPhone quầy 1"
}'

Mở trong tài liệu tương tác

Tạo mã ghép thiết bị Android

Mã PAIR-XXXX-XXXX (Crockford 40 bit) hiệu lực 5 phút, dùng một lần; máy sai mã 5 lần thì mã bị khoá. Tạo mã mới vô hiệu mọi mã chưa dùng cùng (tổ chức, loại). Mã chỉ lưu dạng băm HMAC nên không xem lại được. Không dùng Idempotency-Key (kết quả là bí mật).

Quyền: device.manage
  • Nhóm tốc độ: write
  • Nội dung yêu cầu: CreateDevicePairingCode (application/json, bắt buộc)
  • Phản hồi thành công 201: Mã ghép mới. — DevicePairingCode, application/json
  • Mã lỗi riêng của endpoint: conflict
curl -sS -X POST "https://api.dongtien.pro/v1/devices/pairing-codes" \
-H "Authorization: Bearer $DT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"company_id": "org_0f5k2m9q4h7t3n8r6v1w0x5yz0",
"kind": "android",
"account_ids": [
"acc_0f5k2m9q4h7t3n8r6v1w0x5yz0"
]
}'

Mở trong tài liệu tương tác

Chi tiết thiết bị

Quyền: device.read
  • Nhóm tốc độ: read
  • Phản hồi thành công 200: Thiết bị. — Device, application/json
  • Mã lỗi riêng của endpoint: resource_not_found
TênVị tríBắt buộcKiểuMô tả
idpathCóDeviceIdMã thiết bị chuyển tiếp tin (dev_…).
curl -sS -X GET "https://api.dongtien.pro/v1/devices/$ID" \
-H "Authorization: Bearer $DT_API_KEY"

Mở trong tài liệu tương tác

Cập nhật thiết bị

Đổi tên, người phụ trách, tài khoản phụ trách hoặc tắt bớt nguồn. Đổi nguồn tăng config_version; máy nhận cấu hình mới ở heartbeat kế tiếp.

Quyền: device.manage Idempotency-Key: tuỳ chọn
TênVị tríBắt buộcKiểuMô tả
idpathCóDeviceIdMã thiết bị chuyển tiếp tin (dev_…).
idempotency-keyheaderKhôngstringKhoá chống gửi trùng (≤ 255 ký tự, nên là UUID). Giữ 24 giờ; gửi lại cùng khoá + cùng nội dung trả lại kết quả cũ.
curl -sS -X PATCH "https://api.dongtien.pro/v1/devices/$ID" \
-H "Authorization: Bearer $DT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"responsible_user_id": "usr_0f5k2m9q4h7t3n8r6v1w0x5yz0",
"account_ids": [
"acc_0f5k2m9q4h7t3n8r6v1w0x5yz0"
],
"sources": [
{
"kind": "app_package"
}
]
}'

Mở trong tài liệu tương tác

Gỡ thiết bị

Thu hồi ngay: request kế tiếp của máy nhận 401 device_revoked (≤ 5 giây); tin còn trong hàng đợi của máy sẽ không được nhận. Ghi nhật ký kiểm toán device.revoke. Gỡ lại thiết bị đã gỡ trả 409 conflict.

Quyền: device.manage Idempotency-Key: tuỳ chọn
TênVị tríBắt buộcKiểuMô tả
idpathCóDeviceIdMã thiết bị chuyển tiếp tin (dev_…).
idempotency-keyheaderKhôngstringKhoá chống gửi trùng (≤ 255 ký tự, nên là UUID). Giữ 24 giờ; gửi lại cùng khoá + cùng nội dung trả lại kết quả cũ.
curl -sS -X DELETE "https://api.dongtien.pro/v1/devices/$ID" \
-H "Authorization: Bearer $DT_API_KEY"

Mở trong tài liệu tương tác

Bật/tắt "Tính giao dịch iOS là đã xác thực" cho một tài khoản

Tắt: giao dịch iOS của tài khoản này luôn provisional (đã verified thì giữ nguyên). Nếu máy đang phụ trách mọi tài khoản của công ty, lần đổi đầu tiên ghim máy vào danh sách tài khoản hiện có.

Quyền: device.manage Idempotency-Key: tuỳ chọn
TênVị tríBắt buộcKiểuMô tả
idpathCóDeviceIdMã thiết bị chuyển tiếp tin (dev_…).
account_idpathCóAccountIdMã tài khoản ngân hàng (acc_…).
idempotency-keyheaderKhôngstringKhoá chống gửi trùng (≤ 255 ký tự, nên là UUID). Giữ 24 giờ; gửi lại cùng khoá + cùng nội dung trả lại kết quả cũ.
curl -sS -X PATCH "https://api.dongtien.pro/v1/devices/$ID/accounts/$ACCOUNT_ID" \
-H "Authorization: Bearer $DT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"ios_trust_enabled": false
}'

Mở trong tài liệu tương tác

Automation theo ngân hàng của iPhone

Các ngân hàng của tài khoản máy phụ trách (và ngân hàng đã có thống kê), kèm từ khoá, trạng thái và bộ đếm hôm nay; cùng công tắc ios_trust_enabled từng tài khoản. Bộ đếm sống ở Durable Object và được rollup tối đa mỗi 60 giây. Thiết bị Android trả 409 conflict.

Quyền: device.read
  • Nhóm tốc độ: read
  • Phản hồi thành công 200: Danh sách. — DeviceBankList, application/json
  • Mã lỗi riêng của endpoint: resource_not_found
TênVị tríBắt buộcKiểuMô tả
idpathCóDeviceIdMã thiết bị chuyển tiếp tin (dev_…).
curl -sS -X GET "https://api.dongtien.pro/v1/devices/$ID/banks" \
-H "Authorization: Bearer $DT_API_KEY"

Mở trong tài liệu tương tác

Đánh dấu đã tạo automation cho ngân hàng

Chỉ ghi nhận lựa chọn của người dùng ("Đã tạo"), để hiện untested cho tới khi có tin. Không bật/tắt việc nhận tin: bỏ automation là việc trong app Shortcuts.

Quyền: device.manage Idempotency-Key: tuỳ chọn
TênVị tríBắt buộcKiểuMô tả
idpathCóDeviceIdMã thiết bị chuyển tiếp tin (dev_…).
bank_codepathCóstring—
idempotency-keyheaderKhôngstringKhoá chống gửi trùng (≤ 255 ký tự, nên là UUID). Giữ 24 giờ; gửi lại cùng khoá + cùng nội dung trả lại kết quả cũ.
curl -sS -X PATCH "https://api.dongtien.pro/v1/devices/$ID/banks/$BANK_CODE" \
-H "Authorization: Bearer $DT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"automation_created": true
}'

Mở trong tài liệu tương tác

Nhật ký thiết bị

Nhật ký chỉ-thêm của thiết bị (mới nhất trước), phân trang theo con trỏ.

Quyền: device.read
  • Nhóm tốc độ: read
  • Phản hồi thành công 200: Nhật ký. — DeviceEventList, application/json
  • Mã lỗi riêng của endpoint: invalid_cursor, resource_not_found
TênVị tríBắt buộcKiểuMô tả
idpathCóDeviceIdMã thiết bị chuyển tiếp tin (dev_…).
limitqueryKhôngintegerSố phần tử mỗi trang (1–100, mặc định 20).
cursorqueryKhôngCursorCon trỏ phân trang mờ (cur_…) lấy từ next_cursor; không tự tạo hay sửa.
kindqueryKhôngstring—
curl -sS -X GET "https://api.dongtien.pro/v1/devices/$ID/events" \
-H "Authorization: Bearer $DT_API_KEY"

Mở trong tài liệu tương tác

Hàng đợi tin chờ gửi trên thiết bị

Đọc ảnh chụp 20 mục đầu của hàng đợi, nội dung rút gọn 80 ký tự và che số tài khoản. Chưa có ảnh chụp mới thì xếp lệnh upload_queue_preview (trả state: requested, hỏi lại sau ≤ 45 giây). Ảnh chụp hết hạn sau 15 phút. Mỗi lần đọc ghi nhật ký kiểm toán device.queue_read.

Quyền: device.read_queue
  • Nhóm tốc độ: read
  • Phản hồi thành công 200: Hàng đợi. — DeviceQueue, application/json
  • Mã lỗi riêng của endpoint: resource_not_found
TênVị tríBắt buộcKiểuMô tả
idpathCóDeviceIdMã thiết bị chuyển tiếp tin (dev_…).
curl -sS -X GET "https://api.dongtien.pro/v1/devices/$ID/queue" \
-H "Authorization: Bearer $DT_API_KEY"

Mở trong tài liệu tương tác

Gửi tin thử qua iPhone

Mở lần thử 90 giây. Người dùng chuyển khoản số tiền nhỏ với nội dung TEST DTP… tới tài khoản của mình; khi SMS ngân hàng tới Shortcut, máy chủ khớp mã trong tin và trả kết quả (kênh GET …/test-stream). Lần thử không tạo giao dịch riêng: tin vẫn đi qua đường nhập thường (tạm tính). Thiết bị Android trả 409 conflict.

Quyền: device.manage Idempotency-Key: tuỳ chọn
TênVị tríBắt buộcKiểuMô tả
idpathCóDeviceIdMã thiết bị chuyển tiếp tin (dev_…).
idempotency-keyheaderKhôngstringKhoá chống gửi trùng (≤ 255 ký tự, nên là UUID). Giữ 24 giờ; gửi lại cùng khoá + cùng nội dung trả lại kết quả cũ.
curl -sS -X POST "https://api.dongtien.pro/v1/devices/$ID/test-sms" \
-H "Authorization: Bearer $DT_API_KEY"

Mở trong tài liệu tương tác

Theo dõi lần gửi thử (SSE)

text/event-stream: sự kiện channel_test (JSON IosSmsTest) mỗi khi trạng thái đổi, ping mỗi 15 giây, rồi đóng khi received / expired hoặc sau 90 giây. Chọn lần thử bằng ?test=cht_… (mặc định lần mới nhất của máy).

Quyền: device.read
  • Nhóm tốc độ: read
  • Phản hồi thành công 200: Luồng SSE. — string, text/event-stream
  • Mã lỗi riêng của endpoint: resource_not_found
TênVị tríBắt buộcKiểuMô tả
idpathCóDeviceIdMã thiết bị chuyển tiếp tin (dev_…).
testqueryKhôngChannelTestIdMã lần gửi thử kênh (cht_…).
curl -sS -X GET "https://api.dongtien.pro/v1/devices/$ID/test-stream" \
-H "Authorization: Bearer $DT_API_KEY"

Mở trong tài liệu tương tác

Nhắc người phụ trách thiết bị

Gửi nhắc tới người phụ trách (kênh thông báo của phase 18). Tối đa 1 lần mỗi 6 giờ cho mỗi thiết bị; quá hạn mức trả 429 rate_limited.

Quyền: device.manage Idempotency-Key: tuỳ chọn
TênVị tríBắt buộcKiểuMô tả
idpathCóDeviceIdMã thiết bị chuyển tiếp tin (dev_…).
idempotency-keyheaderKhôngstringKhoá chống gửi trùng (≤ 255 ký tự, nên là UUID). Giữ 24 giờ; gửi lại cùng khoá + cùng nội dung trả lại kết quả cũ.
curl -sS -X POST "https://api.dongtien.pro/v1/devices/$ID:nudge" \
-H "Authorization: Bearer $DT_API_KEY"

Mở trong tài liệu tương tác

Gửi lệnh kiểm tra tới thiết bị

Xếp lệnh ping/diagnose/test_send vào hàng của máy; máy nhận ở heartbeat kế tiếp. Không dùng FCM. Thiết bị iOS trả 409 conflict (Shortcuts không nhận lệnh). Ghi nhật ký kiểm toán device.command.

Quyền: device.manage Idempotency-Key: tuỳ chọn
TênVị tríBắt buộcKiểuMô tả
idpathCóDeviceIdMã thiết bị chuyển tiếp tin (dev_…).
idempotency-keyheaderKhôngstringKhoá chống gửi trùng (≤ 255 ký tự, nên là UUID). Giữ 24 giờ; gửi lại cùng khoá + cùng nội dung trả lại kết quả cũ.
curl -sS -X POST "https://api.dongtien.pro/v1/devices/$ID:ping" \
-H "Authorization: Bearer $DT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"kind": "ping"
}'

Mở trong tài liệu tương tác

Xoay token và tin cậy lại iPhone

Cần xác thực lại (step-up). Xoay token (như :rotate-token) và xoá việc hạ tin cậy D42; giao dịch mới của máy lại có thể verified nếu đủ điều kiện. Giao dịch đã ghi không đổi. Ghi nhật ký kiểm toán device.token_rotate với trust_restored: true.

Quyền: device.manage Cần xác thực lại gần đây
  • Nhóm tốc độ: write
  • Phản hồi thành công 200: Token mới; device.trust_downgraded_at là null. — IosDeviceCredential, application/json
  • Mã lỗi riêng của endpoint: step_up_required, resource_not_found, conflict
TênVị tríBắt buộcKiểuMô tả
idpathCóDeviceIdMã thiết bị chuyển tiếp tin (dev_…).
curl -sS -X POST "https://api.dongtien.pro/v1/devices/$ID:restore-trust" \
-H "Authorization: Bearer $DT_API_KEY"

Mở trong tài liệu tương tác

Xoay token iPhone

Tạo token mới; token cũ còn hiệu lực 30 phút để cập nhật Shortcut rồi trả 401. Thiết bị, bộ đếm và cảnh báo im lặng giữ nguyên (cùng device_id). KHÔNG khôi phục độ tin cậy đã bị hạ (D42): dùng :restore-trust. Chỉ thiết bị iOS; Android trả 409 conflict. Ghi nhật ký kiểm toán device.token_rotate. Không dùng Idempotency-Key.

Quyền: device.manage
  • Nhóm tốc độ: write
  • Phản hồi thành công 200: Token mới. — IosDeviceCredential, application/json
  • Mã lỗi riêng của endpoint: resource_not_found, conflict
TênVị tríBắt buộcKiểuMô tả
idpathCóDeviceIdMã thiết bị chuyển tiếp tin (dev_…).
curl -sS -X POST "https://api.dongtien.pro/v1/devices/$ID:rotate-token" \
-H "Authorization: Bearer $DT_API_KEY"

Mở trong tài liệu tương tác

TrườngKiểuBắt buộcMô tả
channelstringCóGiá trị: stable, beta.
idAppReleaseIdCó—
mandatory_bystring | nullCóSau mốc này app hiện màn cập nhật bắt buộc (vẫn nhận và xếp hàng tin).
min_supported_version_codeintegerCóSau mandatory_by + 7 ngày ân hạn, phiên bản thấp hơn nhận 426 upgrade_required.
objectstringCóGiá trị: android_release.
published_atTimestamp | nullCó—
release_notesstring[]Có—
rollout_pctintegerCó—
rollout_saltstringCó—
sha256stringCóSHA-256 (hex) của APK.
signaturestringCóEd25519 (hex, 64 byte) trên chuỗi DTM1… mô tả ở đầu tài liệu.
sizeintegerCóByte.
stateAppReleaseStateCóGiá trị: draft, staged, stable, mandatory, halted.
urlstring (uri)CóĐịa chỉ tải APK (R2 dl.dongtien.pro).
versionstringCó—
version_codeintegerCó—
TrườngKiểuBắt buộcMô tả
icloud_urlstring (uri)CóLiên kết iCloud của file Shortcut đã ký.
idAppReleaseIdCó—
import_questionsobject[]CóCâu hỏi khi nhập Shortcut (vd. dán token dtd_…).
import_questions[].keystringCó—
import_questions[].promptstringCó—
min_iosstring | nullCó—
objectstringCóGiá trị: ios_shortcut_release.
published_atTimestampCó—
release_notesstring[]Có—
versionstringCó—
version_codeintegerCó—
TrườngKiểuBắt buộcMô tả
dataIosBankKeyword[]Có—
data[].bank_codestringCó—
data[].brandstringCó—
data[].keywordsstring[]CóTừ khoá cho bộ lọc Message Contains của automation (hoặc của ô tìm trong Shortcuts).
data[].namestring | nullCó—
objectstringCóGiá trị: list.
TrườngKiểuBắt buộcMô tả
battery_ltintegerCóPin dưới N % (mặc định 20).
channelsstring[]CóGiá trị: zalo, push, email.
company_idOrgIdCó—
enabledobjectCó—
enabled.batterybooleanCó—
enabled.ios_silentbooleanCó—
enabled.no_heartbeatbooleanCó—
enabled.queuebooleanCó—
ios_silent_hoursintegerCóiOS: không có SMS hợp lệ quá N giờ ⇒ silent (mặc định 36).
no_heartbeat_minintegerCóKhông heartbeat quá N phút ⇒ stale; gấp đôi ⇒ offline (mặc định 15 / 30).
objectstringCóGiá trị: device_alert_rules.
queue_age_minintegerCó…kéo dài quá N phút mới cảnh báo (mặc định 30).
queue_gtintegerCóHàng đợi quá N tin (mặc định 10).
remind_every_hoursnumberCóNhắc lại tối đa 1 lần / 6 giờ (cố định). Giá trị: 6.
updated_atstring | nullCónull khi đang dùng mặc định chưa lưu.
TrườngKiểuBắt buộcMô tả
battery_ltintegerCóPin dưới N % (mặc định 20).
channelsstring[]CóGiá trị: zalo, push, email.
company_idOrgIdCó—
enabledobjectCó—
enabled.batterybooleanCó—
enabled.ios_silentbooleanCó—
enabled.no_heartbeatbooleanCó—
enabled.queuebooleanCó—
ios_silent_hoursintegerCóiOS: không có SMS hợp lệ quá N giờ ⇒ silent (mặc định 36).
no_heartbeat_minintegerCóKhông heartbeat quá N phút ⇒ stale; gấp đôi ⇒ offline (mặc định 15 / 30).
queue_age_minintegerCó…kéo dài quá N phút mới cảnh báo (mặc định 30).
queue_gtintegerCóHàng đợi quá N tin (mặc định 10).
TrườngKiểuBắt buộcMô tả
dataDevice[]Có—
data[].account_idsAccountId[]CóTài khoản mà thiết bị này phụ trách chuyển tiếp.
data[].app_versionstring | nullCó—
data[].attestation_levelDeviceAttestationLevel | nullCóGiá trị: strongbox, tee, software, none.
data[].battery_pctinteger | nullCó—
data[].companyobjectCó—
data[].config_versionintegerCó—
data[].created_atTimestampCó—
data[].idDeviceIdCó—
data[].kindDeviceKindCóGiá trị: android, ios_shortcut.
data[].last_seen_atstring | nullCóHeartbeat gần nhất (rollup tối đa 60 s).
data[].last_sms_atTimestamp | nullCó—
data[].manufacturerstring | nullCó—
data[].modelstring | nullCó—
data[].namestringCó—
data[].objectstringCóGiá trị: device.
data[].oem_checksDeviceOemChecks | nullCó—
data[].osstring | nullCó—
data[].permsDevicePerms | nullCó—
data[].queue_depthinteger | nullCó—
data[].responsible_user_idstring | nullCóNgười phụ trách nhận nhắc khi máy mất kết nối.
data[].revoked_atTimestamp | nullCó—
data[].romstring | nullCó—
data[].send_statsDeviceSendStats | nullCó—
data[].silent_sincestring | nullCóiOS: bắt đầu im lặng quá 36 giờ.
data[].sourcesDeviceSource[]Có—
data[].stateDeviceStateCóGiá trị: pending_pair, active, stale, offline, silent, revoked.
data[].token_last4string | nullCóiOS: 4 ký tự cuối token dtd_… (đã che).
data[].trust_downgraded_atstring | nullCóiOS (D42): thời điểm hệ thống hạ tin cậy thiết bị; giao dịch mới về provisional.
data[].update_availableDeviceUpdateInfo | nullCó—
data[].version_codeinteger | nullCó—
has_morebooleanCó—
next_cursorstring | nullCóCon trỏ trang kế; null khi hết dữ liệu.
objectstringCóGiá trị: list.
TrườngKiểuBắt buộcMô tả
account_idsAccountId[]KhôngTài khoản máy phụ trách; bỏ trống = mọi tài khoản của công ty.
company_idOrgIdCó—
kindstringKhôngGiá trị: ios_shortcut.
namestringCó—
responsible_user_idstringKhôngNgười phụ trách (tuỳ chọn).
TrườngKiểuBắt buộcMô tả
deviceDeviceCó—
device.account_idsAccountId[]CóTài khoản mà thiết bị này phụ trách chuyển tiếp.
device.app_versionstring | nullCó—
device.attestation_levelDeviceAttestationLevel | nullCóGiá trị: strongbox, tee, software, none.
device.battery_pctinteger | nullCó—
device.companyobjectCó—
device.config_versionintegerCó—
device.created_atTimestampCó—
device.idDeviceIdCó—
device.kindDeviceKindCóGiá trị: android, ios_shortcut.
device.last_seen_atstring | nullCóHeartbeat gần nhất (rollup tối đa 60 s).
device.last_sms_atTimestamp | nullCó—
device.manufacturerstring | nullCó—
device.modelstring | nullCó—
device.namestringCó—
device.objectstringCóGiá trị: device.
device.oem_checksDeviceOemChecks | nullCó—
device.osstring | nullCó—
device.permsDevicePerms | nullCó—
device.queue_depthinteger | nullCó—
device.responsible_user_idstring | nullCóNgười phụ trách nhận nhắc khi máy mất kết nối.
device.revoked_atTimestamp | nullCó—
device.romstring | nullCó—
device.send_statsDeviceSendStats | nullCó—
device.silent_sincestring | nullCóiOS: bắt đầu im lặng quá 36 giờ.
device.sourcesDeviceSource[]Có—
device.stateDeviceStateCóGiá trị: pending_pair, active, stale, offline, silent, revoked.
device.token_last4string | nullCóiOS: 4 ký tự cuối token dtd_… (đã che).
device.trust_downgraded_atstring | nullCóiOS (D42): thời điểm hệ thống hạ tin cậy thiết bị; giao dịch mới về provisional.
device.update_availableDeviceUpdateInfo | nullCó—
device.version_codeinteger | nullCó—
objectstringCóGiá trị: ios_device_credential.
tokenstringCóToken dtd_… của Shortcut. CHỈ hiện ở lần trả lời này; chỉ lưu băm SHA-256. Mất token phải xoay token (mã cũ còn dùng được 30 phút).
token_last4stringCó4 ký tự cuối, hiển thị sau này.
TrườngKiểuBắt buộcMô tả
account_idsAccountId[]KhôngTài khoản máy sẽ phụ trách; bỏ trống = mọi tài khoản của công ty.
company_idOrgIdCó—
device_name_hintstringKhông—
kindstringKhôngGiá trị: android.
TrườngKiểuBắt buộcMô tả
account_idsAccountId[]Có—
codestringCóMã ghép một lần, chỉ hiện ở lần trả lời này.
companyobjectCó—
company.idOrgIdCó—
company.mststring | nullCó—
device_name_hintstring | nullCó—
expires_atTimestampCó—
expires_inintegerCóSố giây còn lại (300).
kindstringCóGiá trị: android.
objectstringCóGiá trị: device_pairing_code.
qr_payloadstringCóNội dung mã QR: https://dongtien.pro/p/<code> (mở app hoặc trang tải).
TrườngKiểuBắt buộcMô tả
account_idsAccountId[]CóTài khoản mà thiết bị này phụ trách chuyển tiếp.
app_versionstring | nullCó—
attestation_levelDeviceAttestationLevel | nullCóGiá trị: strongbox, tee, software, none.
battery_pctinteger | nullCó—
companyobjectCó—
company.idOrgIdCó—
company.mststring | nullCóMã số thuế của công ty.
config_versionintegerCó—
created_atTimestampCó—
idDeviceIdCó—
kindDeviceKindCóGiá trị: android, ios_shortcut.
last_seen_atstring | nullCóHeartbeat gần nhất (rollup tối đa 60 s).
last_sms_atTimestamp | nullCó—
manufacturerstring | nullCó—
modelstring | nullCó—
namestringCó—
objectstringCóGiá trị: device.
oem_checksDeviceOemChecks | nullCó—
oem_checks.autostart_confirmedbooleanCó—
osstring | nullCó—
permsDevicePerms | nullCó—
perms.battery_unrestrictedbooleanCó—
perms.notification_listenerbooleanCó—
perms.post_notificationsbooleanCó—
perms.read_smsbooleanCó—
perms.receive_smsbooleanCó—
queue_depthinteger | nullCó—
responsible_user_idstring | nullCóNgười phụ trách nhận nhắc khi máy mất kết nối.
revoked_atTimestamp | nullCó—
romstring | nullCó—
send_statsDeviceSendStats | nullCó—
send_stats.chargingboolean | nullCó—
send_stats.foreign_sender_dropped_todayintegerCó—
send_stats.oldest_queued_age_sinteger | nullCó—
send_stats.otp_dropped_todayintegerCó—
send_stats.pin_mismatchbooleanCó—
send_stats.queue_overflowintegerCó—
send_stats.send_latency_msinteger | nullCó—
send_stats.sent_todayintegerCó—
silent_sincestring | nullCóiOS: bắt đầu im lặng quá 36 giờ.
sourcesDeviceSource[]Có—
sources[].enabledbooleanCó—
sources[].kindstringCóGiá trị: app_package, sms_brand.
sources[].valuestringCóPackage app ngân hàng hoặc brandname SMS (chữ thường).
stateDeviceStateCóGiá trị: pending_pair, active, stale, offline, silent, revoked.
token_last4string | nullCóiOS: 4 ký tự cuối token dtd_… (đã che).
trust_downgraded_atstring | nullCóiOS (D42): thời điểm hệ thống hạ tin cậy thiết bị; giao dịch mới về provisional.
update_availableDeviceUpdateInfo | nullCó—
update_available.mandatory_byTimestamp | nullCó—
update_available.versionstringCó—
update_available.version_codeintegerCó—
version_codeinteger | nullCó—
TrườngKiểuBắt buộcMô tả
account_idsAccountId[]Không—
namestringKhông—
responsible_user_idUserId | nullKhông—
sourcesDeviceSource[]KhôngBật/tắt nguồn. Chỉ tắt thêm được nguồn trong danh sách server; không thêm được nguồn ngoài danh mục.
sources[].enabledbooleanCó—
sources[].kindstringCóGiá trị: app_package, sms_brand.
sources[].valuestringCóPackage app ngân hàng hoặc brandname SMS (chữ thường).

Đối tượng khác của nhóm này (xem tài liệu tương tác): PatchDeviceIosAccount, DeviceIosAccount, DeviceBankList, PatchDeviceBank, DeviceBankStatus, DeviceEventList, DeviceQueue, IosSmsTest, DeviceNudge, PingDevice, DeviceCommand

Lưu ý về từ "đã xác thực": đây là xác thực nguồn, không phải ngân hàng xác nhận quyết toán.