AGENT EXTERNAL API · ฉบับร่าง
ตรวจสอบรายการโอนเงินของ Wallet
เอกสารอ้างอิง standalone สำหรับ external endpoint แบบอ่านอย่างเดียวรายการแรก HTTP route ยังเป็นฉบับร่างจนกว่า Gateway จะ implement โดย schema sync กับ core contract ของ E1450 ที่ผ่าน QA แล้ว
3df23b2e7187fb1d5a61ce2e8c17bcad4ab3cc9a.
ตรวจสอบรายการโอน · ENDPOINT 01
แสดงรายการตรวจสอบการโอนเงินของ Wallet
/v2/external/wallet/transfers
ยืนยันตัวตนด้วย header apikey โดย query รองรับ
username, direction (in,
out, all), start_time,
end_time, cursor แบบคู่
cursor_transaction_time_ns + cursor_id และ
limit
- ค่าเริ่มต้นของ limit
- 100
- ค่า limit สูงสุด
- 1,000
- หน่วยเวลา
- Unix seconds / nanoseconds
- ช่วงเวลาสูงสุด
- 24 ชั่วโมง
- อัตราเรียกใช้
- 1,000 ครั้ง/นาทีต่อ Agent + route
- Burst
- 100
- In-flight
- 100
การแมป direction: IN = transfer/up ·
OUT = transfer/down · ALL = transfer เท่านั้น
โครงสร้าง Response
{
"rows": [{
"id": "transfer-row-1",
"transaction_time_ns": 1787097600000000000,
"ref_code": "audit-ref-1",
"username": "audit-user",
"type_name": "transfer",
"type_sub_name": "up",
"amount": 25.5,
"amount_before": 100,
"amount_after": 125.5,
"asset_name": "USD",
"asset_unit": "USD",
"note": "audit example"
}],
"next_cursor": {
"transaction_time_ns": 1787097600000000000,
"id": "transfer-row-1"
},
"has_more": false
}
Rows ใช้ชื่อ field และ type ที่ผ่านการทดสอบ ผลลัพธ์เรียงตาม
(transaction_time_ns, id); route ยังเป็นฉบับร่างจนกว่า
Gateway จะ implement
ตัวอย่าง Request ที่ปลอดภัย
ตัวอย่างใช้ placeholder host และ key ที่ปกปิดแล้ว
cURL
curl --get 'https://api.example.invalid/v2/external/wallet/transfers' \
--data-urlencode 'username=audit-user' \
--data-urlencode 'direction=in' \
--data-urlencode 'start_time=1787011200' \
--data-urlencode 'end_time=1787097600' \
--data-urlencode 'limit=100' \
-H 'apikey: [REDACTED]'
PHP
<?php
$ch = curl_init('https://api.example.invalid/v2/external/wallet/transfers?' . http_build_query([
'username' => 'audit-user',
'direction' => 'in',
'start_time' => 1787011200,
'end_time' => 1787097600,
'limit' => 100,
]));
curl_setopt_array($ch, [
CURLOPT_HTTPHEADER => ['apikey: [REDACTED]'],
CURLOPT_RETURNTRANSFER => true,
]);
$response = curl_exec($ch);
curl_close($ch);
Go
req, err := http.NewRequest("GET", "https://api.example.invalid/v2/external/wallet/transfers?username=audit-user&direction=in&start_time=1787011200&end_time=1787097600&limit=100", nil)
if err != nil {
log.Fatal(err)
}
req.Header.Set("apikey", "[REDACTED]")
resp, err := http.DefaultClient.Do(req)
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
JavaScript
const params = new URLSearchParams({
username: 'audit-user',
direction: 'in',
start_time: '1787011200',
end_time: '1787097600',
limit: '100',
});
const response = await fetch(
`https://api.example.invalid/v2/external/wallet/transfers?${params}`,
{ headers: { apikey: '[REDACTED]' } },
);
ข้อผิดพลาดและการควบคุมการเข้าถึง
Response ที่เป็นไปได้: 400 request ไม่ถูกต้อง,
401 ไม่มี key หรือ key ไม่ถูกต้อง, 403 ไม่ได้รับอนุญาต
จาก Agent/IP allowlist, 429 เกิน rate หรือ concurrency limit,
500 ความผิดพลาดที่ไม่คาดคิด และ 503 ไม่พร้อมให้บริการ
ชั่วคราว
ห้ามบันทึก API key ไว้ในเอกสาร static นี้ โดยตั้งใจปิด Production Try It ไว้