AGENT EXTERNAL API · ฉบับร่าง

ตรวจสอบรายการโอนเงินของ Wallet

เอกสารอ้างอิง standalone สำหรับ external endpoint แบบอ่านอย่างเดียวรายการแรก HTTP route ยังเป็นฉบับร่างจนกว่า Gateway จะ implement โดย schema sync กับ core contract ของ E1450 ที่ผ่าน QA แล้ว

ฉบับร่างที่ sync กับ Core QA หน้านี้ไม่มี production host, key ที่บันทึกไว้ หรือการตั้งค่า Try It สำหรับ production Tested SHA: 3df23b2e7187fb1d5a61ce2e8c17bcad4ab3cc9a.

ตรวจสอบรายการโอน · ENDPOINT 01

แสดงรายการตรวจสอบการโอนเงินของ Wallet

GET/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 ไว้