非同期イベント
一部のエンドポイントはリクエストを受け付けた後、処理をバックグラウンドで非同期に実行します。
これらのエンドポイントはレスポンスに asyncEventId を返し、処理の完了を GET /async-events/{asyncEventId} でポーリングして確認します。
非同期処理が発生するエンドポイント
| エンドポイント | 非同期処理の内容 |
|---|---|
POST /wallets | ウォレットの同期処理(過去の取引データ取得)。同期不要な場合は asyncEventId を返さない |
POST /wallets/{wallet-id}/sync | ウォレットの再同期処理 |
POST /wallets/{wallet-id}/transactions | 手動取引の追加処理 |
DELETE /wallets/{wallet-id} | ウォレットの削除処理 |
asyncEventId のプレフィックスについて
asyncEventId には 2 種類のプレフィックスがあります。どちらも GET /async-events/{asyncEventId} で同様にポーリングできます。
| プレフィックス | 用途 |
|---|---|
async_event_ | ウォレット同期・削除など、単一の非同期処理 |
async_event_flow_ | ウォレット自動判定登録(autoDetect: true)など、複数サブタスクをまとめた非同期フロー |
ユースケース: ウォレット登録後に同期完了を待つ(walletType 指定)
Step 1: ウォレットを登録する
curl -X POST "https://api.rikyu.jp/v1/wallets" \
-H "Authorization: Bearer <api_key>" \
-H "Content-Type: application/json" \
-d '{
"name": "My Ethereum Wallet",
"address": "0x1234567890123456789012345678901234567890",
"walletType": "ETHEREUM"
}'
レスポンス例(同期処理が起動した場合)
{
"walletId": 42,
"asyncEventId": "async_event_xxxxxxxxxxxxxxxx"
}
asyncEventId が含まれる場合、ウォレットの同期処理がバックグラウンドで起動しています。
asyncEventId が含まれない場合、同期処理は不要でウォレット登録のみ完了しています。
Step 2: 非同期イベントの進捗を確認する
curl -X GET "https://api.rikyu.jp/v1/async-events/async_event_xxxxxxxxxxxxxxxx" \
-H "Authorization: Bearer <api_key>"
レスポンス例
{
"asyncEventId": "async_event_xxxxxxxxxxxxxxxx",
"asyncEventStatus": "COMPLETED",
"errorCode": null,
"errorMessage": null
}
Step 3: 完了まで繰り返す
asyncEventStatus が COMPLETED または FAILED になるまでポーリングします。
REQUESTED → IN_PROGRESS → COMPLETED
└→ FAILED
ユースケース: アドレスからチェーンを自動判定して登録する(autoDetect)
アドレスがどのチェーンに対応しているか不明な場合は autoDetect: true を指定します。
RIKYU がアドレスを検証し、対応するすべてのチェーン(例: ETHEREUM・POLYGON・BASE など)に対してウォレットを自動で一括登録します。
autoDetect: true では walletType・apiKey・apiSecret・apiPass・startDate は指定できません。
Step 1: 自動判定モードでウォレットを登録する
curl -X POST "https://api.rikyu.jp/v1/wallets" \
-H "Authorization: Bearer <api_key>" \
-H "Content-Type: application/json" \
-d '{
"name": "My Multi-Chain Wallet",
"address": "0x1234567890123456789012345678901234567890",
"autoDetect": true
}'
レスポンス(202 Accepted)
{
"walletId": null,
"asyncEventId": "async_event_flow_xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}
- HTTP ステータスは 202 Accepted(通常登録の 201 Created とは異なります)
walletIdはnull(登録されるウォレット数が確定していないため)asyncEventIdはasync_event_flow_プレフィックスで始まります
Step 2: 自動判定・登録の完了を確認する
curl -X GET "https://api.rikyu.jp/v1/async-events/async_event_flow_xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" \
-H "Authorization: Bearer <api_key>"
レスポンス例
{
"asyncEventId": "async_event_flow_xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"asyncEventStatus": "COMPLETED",
"errorCode": null,
"errorMessage": null
}
Step 3: 登録されたウォレットを確認する
完了後、GET /wallets で登録されたウォレットを確認できます。
curl -X GET "https://api.rikyu.jp/v1/wallets" \
-H "Authorization: Bearer <api_key>"
非同期イベントのステータス
| ステータス | 説明 |
|---|---|
REQUESTED | 処理がキューに登録され、開始待ちの状態 |
IN_PROGRESS | 処理が実行中 |
COMPLETED | 処理が正常に完了 |
FAILED | 処理が失敗。エラーの詳細はレスポンスの errorCode / errorMessage フィールドを参照 |
ポーリングの推奨間隔
同期処理の完了時間はウォレットの種類や取引量によって異なります。 過度なポーリングはレート制限(レート制限 参照)に抵触する可能性があるため、 5〜30 秒間隔 でのポーリングを推奨します。
非同期イベントが見つからない場合
存在しない asyncEventId や、他のアカウントの asyncEventId を指定した場合は 404 Not Found を返します。