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

Thời gian thực

~4 phút đọc

Vé một lần và luồng sự kiện (WebSocket/SSE) cho giao diện: giao dịch mới, nâng cấp, gộp, cách ly.

MethodPathTóm tắtQuyềnNhóm tốc độTương tác
POST/v1/realtime/ticketsCấp vé thời gian thựctx.readreadScalar
GET/v1/realtime/wsMở WebSocket thời gian thựctx.readreadScalar
GET/v1/transactions/streamLuồng giao dịch thời gian thực (SSE)tx.readreadScalar

Cấp vé thời gian thực

Vé chỉ mở được một kết nối trong 60 giây và mang đúng phạm vi công/tài khoản của người gọi (khoá API giới hạn tài khoản vẫn bị giới hạn). Yêu cầu kênh ngoài phạm vi trả 404.

Quyền: tx.read Scope: transactions:read
  • Nhóm tốc độ: read
  • Nội dung yêu cầu: RealtimeTicketRequest (application/json)
  • Phản hồi thành công 201: Vé. — RealtimeTicket, application/json
  • Mã lỗi riêng của endpoint: conflict
curl -sS -X POST "https://api.dongtien.pro/v1/realtime/tickets" \
-H "Authorization: Bearer $DT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"company_id": "org_0f5k2m9q4h7t3n8r6v1w0x5yz0",
"topics": [
"org:org_0f5k2m9q4h7t3n8r6v1w0x5yzd"
],
"purpose": "app"
}'

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

Mở WebSocket thời gian thực

Nâng cấp lên WebSocket (101). Vé bắt buộc (?ticket=), dùng một lần. Máy chủ gửi khung JSON RealtimeEvent; ping/pong tự động. Từ chối trước khi nâng cấp: 401 vé sai/hết hạn/đã dùng, 403 kênh ngoài vé, 429 quá 5 kết nối.

Quyền: tx.read
  • Nhóm tốc độ: read
  • Mã lỗi: chỉ các mã lỗi chung ở Tổng quan
TênVị tríBắt buộcKiểuMô tả
ticketqueryCóstringVé một lần từ POST /v1/realtime/tickets (bắt buộc; hiệu lực 60 giây).
last_event_idqueryKhôngstringTương đương header Last-Event-ID.
topicsqueryKhôngstringDanh sách kênh phân cách bằng dấu phẩy (tập con của vé).
curl -sS -X GET "https://api.dongtien.pro/v1/realtime/ws?ticket=$TICKET" \
-H "Authorization: Bearer $DT_API_KEY"

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

Luồng giao dịch thời gian thực (SSE)

Server-Sent Events: id: là số thứ tự tăng dần theo tổ chức, event: là loại (tx.created, tx.upgraded, tx.merged, tx.quarantined, …), data: là RealtimeEvent. Gửi Last-Event-ID để nhận bù tối đa 5 phút; quá hạn nhận khung event: resync và nên gọi /v1/transactions/sync. Xác thực chỉ bằng vé một lần ?ticket= (lấy từ POST /v1/realtime/tickets); cookie/Bearer không được chấp nhận ở máy chủ này.

Quyền: tx.read Scope: transactions:read
  • Nhóm tốc độ: read
  • Phản hồi thành công 200: Luồng text/event-stream. — string, text/event-stream
  • Mã lỗi: chỉ các mã lỗi chung ở Tổng quan
TênVị tríBắt buộcKiểuMô tả
ticketqueryCóstringVé một lần từ POST /v1/realtime/tickets (bắt buộc; hiệu lực 60 giây).
last_event_idqueryKhôngstringTương đương header Last-Event-ID.
topicsqueryKhôngstringDanh sách kênh phân cách bằng dấu phẩy (tập con của vé).
curl -sS -X GET "https://api.dongtien.pro/v1/transactions/stream?ticket=$TICKET" \
-H "Authorization: Bearer $DT_API_KEY"

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

TrườngKiểuBắt buộcMô tả
company_idstringKhôngChỉ nghe một công ty; bỏ trống = mọi công ty người gọi xem được.
livebooleanKhôngChỉ với cli_listen: nghe sự kiện thật (cần scope webhooks:write, ghi nhật ký cli.listen_live); mặc định chỉ sự kiện sandbox.
purposestringKhôngcli_listen: vé của dtp listen (luồng sự kiện webhook của tổ chức gốc); chỉ khoá API hoặc OAuth, topics bị bỏ qua. Giá trị: app, cli_listen.
topicsRealtimeTopic[]KhôngKênh muốn nghe. Mặc định org:<company> cho từng công ty trong phạm vi; user:<mình> được phép.
TrườngKiểuBắt buộcMô tả
expires_atTimestampCó—
objectstringCóGiá trị: realtime_ticket.
sse_urlstringCóĐường dẫn SSE đã gắn vé.
ticketstringCó—
topicsRealtimeTopic[]Có—
ws_urlstringCóĐường dẫn WebSocket đã gắn vé.