メインコンテンツまでスキップ

非同期イベント

一部のエンドポイントはリクエストを受け付けた後、処理をバックグラウンドで非同期に実行します。 これらのエンドポイントはレスポンスに 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: 完了まで繰り返す

asyncEventStatusCOMPLETED または FAILED になるまでポーリングします。

REQUESTED → IN_PROGRESS → COMPLETED
└→ FAILED

ユースケース: アドレスからチェーンを自動判定して登録する(autoDetect)

アドレスがどのチェーンに対応しているか不明な場合は autoDetect: true を指定します。 RIKYU がアドレスを検証し、対応するすべてのチェーン(例: ETHEREUM・POLYGON・BASE など)に対してウォレットを自動で一括登録します。

備考

autoDetect: true では walletTypeapiKeyapiSecretapiPassstartDate は指定できません。

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 とは異なります)
  • walletIdnull(登録されるウォレット数が確定していないため)
  • asyncEventIdasync_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 を返します。