> ## Documentation Index
> Fetch the complete documentation index at: https://www.helius.dev/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# トランザクション履歴をスキャン

> アドレスの履歴をサーバー側で検索し、プログラム命令を呼び出すかトークンミントに関与するトランザクションを見つけ、解析済みの一致結果、署名、または件数を返します。

このページのリクエストボディ、レスポンススキーマ、例は、OpenAPI 定義から生成されています。

Scan は、1 つのアドレスの履歴を走査し、`match` 条件に一致するトランザクションを保持して、そのトランザクションのみを解析します。[解析済みトランザクション履歴](https://www.helius.dev/docs/ja/api-reference/parsed-events/transaction-history.md)をページ送りしてクライアント側でフィルタリングする代わりに使用してください。

デフォルトでは、`data` の各項目には、[トランザクションを解析](https://www.helius.dev/docs/ja/api-reference/parsed-events/transactions.md)が返すものと同じ `TransactionResult` 形式が使用されます。一致する署名のみ、または件数のみを取得するには、`returnShape` を設定します。レスポンスには、スキャンの到達範囲と停止理由を示す `scan` の概要も含まれます。

## Scan の仕組み

1. Scan は、設定した `slot`、`time`、および署名の境界内で、`sortOrder` の順序に従い、最大 1,000 件のトランザクションからなるページ単位でアドレスの履歴を取得します。
2. `match` に設定されたすべての条件に一致するトランザクションを保持します。
3. 次のいずれかに最初に達した時点で停止します：`limit` 件の一致を検出した場合（デフォルトの `transactions` 形式のみ）、`budget.maxScannedTransactions` 件をスキャンした場合、履歴または範囲の末尾に到達した場合、あるいはリクエストの制限時間に達した場合。

早期に停止したスキャンも `200` です。`paginationToken` が返されている間は、`data` が空の場合でも、それを指定して再度呼び出してください。

## 一致条件

`match` は必須です。`programs`、`mints`、またはその両方を設定します。両方を設定した場合、トランザクションは両方に一致する必要があります。

### プログラムによる照合

`programs` には最大 20 個のプログラムを指定でき、同じプログラムを複数回指定することはできません。プログラムの `scope` 内で、トップレベルまたは内部（CPI）に対象プログラムのいずれかの命令がある場合、トランザクションは一致します。

各プログラムでは、一致条件をさらに絞り込めます：

* `instructions`：プログラムの任意の IDL バージョンにある命令名を、IDL の表記または snake\_case で指定します。プログラムの IDL に存在しない名前を指定すると、`400` が返されます。
* `discriminators`：命令データのプレフィックスです。それぞれ 1～8 バイトの 16 進数エンコード値で、オプションの `0x` プレフィックスを使用できます。IDL のないプログラムに使用します。
* どちらか一方または両方のリストを設定します。両方を設定した場合、指定した名前の命令であるか、データがいずれかのディスクリミネーターで始まると、命令は一致します。プログラムのすべての命令に一致させるには、両方を省略します。
* 各リストには、プログラムごとに最大 50 件を指定できます。

プログラムのデコード済み命令名を確認するには、Parsed Streams の [`describeProgram`](https://www.helius.dev/docs/ja/parsed-streams/quickstart#発見) メソッドを使用してください。

### ミントによる照合

`mints` には、`{ "mint": "...", "scope": "address" }` 形式のオブジェクトを最大 20 個指定でき、同じミントを複数回指定することはできません。ミントの `scope` 内で、トランザクション前後のトークン残高のいずれかが指定したミントのものである場合、トランザクションは一致します。

ウォレットでミントをスキャンする場合は、`tokenAccounts` を `balanceChanged` に設定します。デフォルトでは、ウォレット自体ではなく、そのウォレットのトークンアカウントのみに関与するトランザクションは履歴から除外されます。これには、多くの受信トークン転送が含まれます。

### ネイティブ SOL の照合

ネイティブ SOL にはトークン残高がないため、Scan は lamport に基づいて照合します。ネイティブ SOL ミント `So11111111111111111111111111111111111111111` を使用してください（ラップ済み SOL は `So11111111111111111111111111111111111111112` です）：

* `address` スコープでは、スキャン対象アドレスの lamport が変化するとトランザクションは一致します。
* `transaction` スコープでは、いずれかのアカウントの lamport が変化すると一致します。

手数料支払者に課される手数料はカウントされません。各アカウントは個別に比較されるため、同じトランザクション内でアカウントから出て戻ってきた lamport はカウントされません。ネイティブ SOL の照合では、Pump.fun の売却など、転送命令なしでプログラムが支払う SOL も検出できます。また、Jito のチップや、アカウントに対して支払われた、またはアカウントから返金された rent など、付随的な移動も検出します。

### 一致スコープ

各プログラムと各ミントには `scope` を指定します：

| `scope` | プログラムの命令がカウントされる条件 | ミントのトークン残高がカウントされる条件 |
| - | - | - |
| `address`（デフォルト） | そのアカウントの 1 つが `address` である場合、`address` が所有するトークンアカウントである場合、ミントが `address` であるトークンアカウントの場合、または `address` 自体がプログラムである場合。 | そのトークンアカウントが `address` であるか、`address` によって所有されている場合、またはそのミントが `address` である場合。 |
| `transaction` | トランザクション内の任意の場所に存在する場合。 | トランザクション内の任意の場所に存在する場合。 |

スキャン対象アドレスがトランザクション内にはあるものの、照合する命令または残高には含まれない場合は、`transaction` スコープを使用します。たとえば、アドレスが手数料の支払いのみを行う場合、マルチシグトランザクションを実行する場合、または Anchor イベント CPI から欠落している場合です。あるトークンのミントをスキャンし、USDC も保有するトランザクションを検索する場合は、USDC エントリに `transaction` スコープが必要です。

トークンアカウントの所有権は、各トークン残高に記録された `owner` に基づきます。これが記録されていない古いトランザクションでは、`address` スコープは `address` 自体に対してのみ一致します。

## 戻り値の形式

`returnShape` は、一致結果としてレスポンスに含める内容を設定します：

| `returnShape` | `data` | 用途 |
| - | - | - |
| `transactions`（デフォルト） | 最大 `limit` 件の解析済み一致結果。 | デコード済みの命令、転送、概要を確認します。 |
| `signatures` | 一致ごとに 1 つの `{ signature, slot, transactionIndex, blockTime }` オブジェクト。 | 解析せずに一致する署名を収集します。 |
| `count` | 省略されます。`scan.matchedTransactions` が一致件数です。 | 範囲内の一致件数を数えます。 |

`signatures` と `count` は、`limit` と `rawTransaction` を無視します。1 回のリクエストでスキャンした範囲内のすべての一致を返すため、`windowEnd`、`budget`、または `deadline` の場合にのみ停止します。履歴全体をカウントするには、`paginationToken` を指定して呼び出しを続け、`scan.matchedTransactions` を合計します。

`returnShape: "signatures"` を指定した `data` の各項目は、次のようになります：

```json theme={"system"}
{
  "signature": "5zmGhmd3JZxXzz8MnA8MM1K7PXRwA1z35n3xT6ZJGRz3sAi25p8jaZuPWFCB4nEPx7DUke9y3pwrd4V7xAFozQBy",
  "slot": 460869102,
  "transactionIndex": 203,
  "blockTime": 1792848886
}
```

クレジットは返される内容ではなく、スキャンした履歴ページ数に基づくため、3 つの形式のコストはすべて同じです。

## リクエスト例

### Pump.fun の購入と売却

Pump.fun プログラムの履歴をスキャンし、`buy` および `sell` 命令を検索します：

```json theme={"system"}
{
  "address": "6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P",
  "match": {
    "programs": [
      {
        "programId": "6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P",
        "instructions": ["buy", "sell"]
      }
    ]
  },
  "limit": 100
}
```

Pump.fun には、`buy_exact_sol_in`、`buy_v2`、`sell_v2` などのバリエーションもあります。一致させるすべての命令名を指定してください。

### 1 つのトークンの購入と売却

あるトークンの Pump.fun 取引を取得するには、プログラムではなくトークンのミントアドレスをスキャンします。ミントの履歴にはそのトークンのアクティビティのみが含まれ、各購入または売却命令はミントをアカウントとして列挙するため、デフォルトの `address` スコープで一致します：

```json theme={"system"}
{
  "address": "<MINT_ADDRESS>",
  "match": {
    "programs": [
      {
        "programId": "6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P",
        "instructions": ["buy", "sell"]
      }
    ]
  }
}
```

USDC トークンアカウントも関与するトークンのトランザクションだけを保持するには、`transaction` スコープで USDC を追加します。デフォルトの `address` スコープでは、USDC 残高がミントアドレスに属している必要があるため、何も一致しません：

```json theme={"system"}
{
  "address": "<MINT_ADDRESS>",
  "match": {
    "mints": [
      { "mint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", "scope": "transaction" }
    ]
  }
}
```

### 2 つのプログラムにまたがるウォレットの取引

複数のプログラムを指定すると、そのいずれかの呼び出しに一致させることができます。このリクエストは、ウォレットの Pump.fun と PumpSwap の取引を署名のみで返します：

```json theme={"system"}
{
  "address": "<WALLET_ADDRESS>",
  "match": {
    "programs": [
      {
        "programId": "6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P",
        "instructions": ["buy", "sell"]
      },
      {
        "programId": "pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA",
        "instructions": ["buy", "sell"]
      }
    ]
  },
  "returnShape": "signatures"
}
```

### 時間範囲内のウォレットの USDC アクティビティ

2025 年中に USDC に関与したトランザクションを、ウォレットの履歴からスキャンします。`tokenAccounts: "balanceChanged"` には、ウォレットの USDC トークンアカウントのみに関与した転送も含まれます：

```json theme={"system"}
{
  "address": "GV6UUmNxz2RpKxmNAPadYKb7uQpszwqQAu3qLJxVdC52",
  "match": {
    "mints": [{ "mint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v" }]
  },
  "tokenAccounts": "balanceChanged",
  "time": { "gte": 1735689600, "lte": 1767225599 }
}
```

一致するトランザクションの件数だけを取得するには、`"returnShape": "count"` を追加します。

### ウォレットの SOL の移動

2025 年中に、ウォレットが支払った手数料以外で SOL 残高を変化させたトランザクションをスキャンします。これには、転送命令なしでプログラムが支払った SOL も含まれます：

```json theme={"system"}
{
  "address": "GV6UUmNxz2RpKxmNAPadYKb7uQpszwqQAu3qLJxVdC52",
  "match": {
    "mints": [{ "mint": "So11111111111111111111111111111111111111111" }]
  },
  "time": { "gte": 1735689600, "lte": 1767225599 }
}
```

## ページネーションと停止理由

`scan.stoppedOn` は、リクエストが終了した理由を示します：

| `stoppedOn` | 意味 | `paginationToken` |
| - | - | - |
| `windowEnd` | 履歴またはリクエストした範囲の末尾に到達しました。 | ありません。スキャンは完了しています。 |
| `limit` | `limit` 件の一致を返しました。デフォルトの `transactions` 形式でのみ使用されます。 | 最後に返された一致の直後から再開するため、一致はスキップされません。 |
| `budget` | `budget.maxScannedTransactions` 件のトランザクションをスキャンしました。 | 次の履歴ページから再開します。 |
| `deadline` | リクエストの制限時間に達しました。 | 次の履歴ページから再開します。期限によって中断されたページは、次回の呼び出しで再取得されます。 |

`scan.scannedThrough` は、最後にスキャンしたトランザクションのスロットとブロック時刻を示すため、長い履歴の進捗状況を報告できます。

まれな命令を検索するスキャンでは、一致が見つからないまま予算を使い切ることがあります。その場合、レスポンスの `data` 配列は空ですが、`paginationToken` は返されます。そのため、スキャンを続けてください：

```json theme={"system"}
{
  "data": [],
  "paginationToken": "460903064:422",
  "scan": {
    "stoppedOn": "budget",
    "scannedTransactions": 2000,
    "matchedTransactions": 0,
    "scannedThrough": { "slot": 460903064, "blockTime": 1792856105 },
    "creditsCharged": 12
  }
}
```

このループは、履歴をすべて処理するまでスキャンを続けます：

```javascript scan-pumpfun-trades.js theme={"system"}
const API_KEY = process.env.HELIUS_API_KEY;

if (!API_KEY) {
  console.error("Missing HELIUS_API_KEY.");
  process.exit(1);
}

const URL = `https://mainnet.helius-rpc.com/v1/parsed-events/scan?api-key=${API_KEY}`;
const PUMP_PROGRAM = "6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P";

async function scan(paginationToken) {
  const response = await fetch(URL, {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify({
      address: PUMP_PROGRAM,
      match: {
        programs: [{ programId: PUMP_PROGRAM, instructions: ["buy", "sell"] }],
      },
      limit: 100,
      ...(paginationToken && { paginationToken }),
    }),
  });

  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }

  return response.json();
}

let paginationToken;

do {
  const page = await scan(paginationToken);

  for (const result of page.data) {
    console.log(result.signature, result.parsed?.slot);
  }

  console.log(
    `stopped on ${page.scan.stoppedOn}: scanned ${page.scan.scannedTransactions}, ` +
      `matched ${page.scan.matchedTransactions}, charged ${page.scan.creditsCharged} credits`
  );

  // Keep going while a token is returned, even when this page had no matches.
  paginationToken = page.paginationToken;
} while (paginationToken);
```

> [!TIP]
>
> 可能な限り対象を絞ったアドレスをスキャンしてください。アドレス履歴内のすべてのトランザクションが予算に加算されるため、無関係なトランザクションが少ないアドレスほど、各リクエストで多くの一致を検出できます。

## クレジット

各スキャンのコストは、**10 クレジットに、スキャンした履歴ページごとに 1 クレジットを加えた値**です。1 ページには最大 1,000 件のトランザクションが含まれるため、デフォルト予算の 10,000 件のトランザクションをスキャンする場合、コストは最大 20 クレジットです。期限によって中断されたページはスキャンされず、課金もされません。

各レスポンスの `scan.creditsCharged` に課金額が記載されます。プランの料金については、[クレジット](https://www.helius.dev/docs/ja/billing/credits.md)を参照してください。

## エラー

| ステータス | 発生条件 |
| - | - |
| `400` | ボディが無効か不明なフィールドを含む場合、`match` に `programs` と `mints` のどちらも設定されていない場合、プログラムまたはミントが複数回指定されている場合、アドレスまたはミントが無効な場合、命令名がプログラムの IDL にない場合、リストが上限を超えている場合、`scope`、`returnShape`、`rawTransaction`、または `tokenAccounts` に不明な値が指定されている場合、`transactions` 形式で `limit` が 1～100 の範囲外の場合、または `budget.maxScannedTransactions` が 1～10,000 の範囲外の場合。 |
| `500` | スキャン範囲内に保存されたトランザクションをデコードできなかった場合など、サーバー上でリクエストが失敗しました。部分的な結果は返されません。 |
| `503` | サービスが処理上限に達しているか、最初の履歴ページがリクエストの制限時間までに完了しませんでした。リクエストを再試行してください。 |

リクエストレベルのエラーでは、`{"error": "limit must be between 1 and 100"}` などの `error` メッセージを含む JSON ボディが返されます。`includeRawTransaction`（`rawTransaction` を使用してください）のような不明なフィールドを含むボディ、または `mints` に `{ "mint": "..." }` オブジェクトではなく単なる文字列を指定したボディでは、`{"error": "invalid request payload"}` が返されます。

## リクエストパラメーター

**address** `string` *required*

履歴をスキャンするアドレスです。

**match** `object` *required*

トランザクションが満たす必要のある一致条件です。`programs`、`mints`、またはその両方を設定します。両方を設定した場合、トランザクションは両方に一致する必要があります。

**match.programs** `array`

照合するプログラムです。最大 20 個で、同じプログラムを複数回指定することはできません。プログラムの `scope` 内で、トップレベルまたは内部（CPI）に対象プログラムのいずれかの命令がある場合、トランザクションは一致します。

**match.programs\[].programId** `string` *required*

プログラムアドレスです。

**match.programs\[].instructions** `array`

プログラムの任意の IDL バージョンにある命令名を、IDL の表記または snake\_case で指定します。最大 50 件です。`discriminators` と組み合わせることができます。

**match.programs\[].discriminators** `array`

命令データのプレフィックスです。それぞれ 1～8 バイトの 16 進数エンコード値で、オプションの `0x` プレフィックスを使用できます。最大 50 件です。`instructions` と組み合わせることができます。

**match.programs\[].scope** `string` (default: address)

カウントするプログラム命令を指定します。`address` は、アカウントの 1 つが `address` である命令、`address` が所有するトークンアカウントを含む命令、ミントが `address` であるトークンアカウントを含む命令のみをカウントします。`address` がプログラムである場合は、すべての命令をカウントします。`transaction` は、トランザクション内にあるプログラムのすべての命令をカウントします。

* `address`
* `transaction`

**match.mints** `array`

照合するミントです。最大 20 個で、同じミントを複数回指定することはできません。ミントの `scope` 内で、トランザクション前後のトークン残高のいずれかが対象ミントのものである場合、トランザクションは一致します。

**match.mints\[].mint** `string` *required*

トークンミントアドレスです。ネイティブ SOL ミント `So11111111111111111111111111111111111111111` は、手数料を除き、トークン残高ではなく lamport の変化に基づいて一致します。

**match.mints\[].scope** `string` (default: address)

カウントするミントのトークン残高を指定します。`address` は、トークンアカウントが `address` であるか、それによって所有されている残高、またはミントが `address` である残高のみをカウントします。ネイティブ SOL では、`address` の lamport の変化のみがカウントされます。`transaction` は、トランザクション内にあるそのミントのすべての残高をカウントします。ネイティブ SOL では、任意のアカウントの lamport の変化がカウントされます。

* `address`
* `transaction`

**returnShape** `string` (default: transactions)

一致結果としてレスポンスに含める内容です。`transactions`（`data` 内の解析済み一致結果。最大 `limit` 件）、`signatures`（`data` 内の一致ごとに `signature`、`slot`、`transactionIndex`、`blockTime`）、または `count`（`data` なし。`scan.matchedTransactions` が一致件数）を指定します。`signatures` と `count` は、`limit` と `rawTransaction` を無視します。

* `transactions`
* `signatures`
* `count`

**limit** `number` (default: 100)

`transactions` 形式で返す最大一致件数です。1～100 の範囲で指定します。

**budget** `object`

1 回のリクエストでスキャンする履歴量の上限です。

**budget.maxScannedTransactions** `number` (default: 10000)

このリクエストでスキャンする最大トランザクション数です。1～10,000 の範囲で指定します。

**beforeSignature** `string`

この署名より前のトランザクションをスキャンします。

**afterSignature** `string`

この署名より後のトランザクションをスキャンします。

**paginationToken** `string`

前回のスキャンから返されたカーソルです。形式は `slot:transactionIndex` です。

**sortOrder** `string` (default: desc)

履歴をスキャンし、一致結果を返す順序です。

* `asc`
* `desc`

**commitment** `string` (default: confirmed)

履歴の取得に使用するコミットメントレベルです。`processed` はサポートされていません。

* `confirmed`
* `finalized`

**status** `string` (default: succeeded)

含める実行結果です。フィルタリングは照合前に行われるため、除外されたトランザクションは予算にカウントされません。

* `succeeded`
* `failed`
* `any`

**tokenAccounts** `string` (default: none)

`address` 自体ではなく、`address` が所有するトークンアカウントのみを参照するトランザクションを含めるかどうかを指定します。`none` は除外し、`balanceChanged` はトークンアカウントの残高を変更するものを含め、`all` はすべてを含めます。ミント別にウォレットをスキャンする場合は、`balanceChanged` を使用してください。

* `none`
* `balanceChanged`
* `all`

**minContextSlot** `number`

リクエストを評価できる最小スロットです。

**rawTransaction** `string` (default: none)

各成功結果で `rawTransaction` として返される元の Solana トランザクションのエンコーディングです。`getTransaction` 形式で返されます。`transactions` 形式にのみ適用されます。

* `none`
* `json`
* `jsonParsed`
* `base64`

**slot** `object`

スロット比較の境界です。各境界はオプションです。

**slot.gt** `number`

この値より大きい値に一致します。

**slot.gte** `number`

この値以上の値に一致します。

**slot.lt** `number`

この値より小さい値に一致します。

**slot.lte** `number`

この値以下の値に一致します。

**time** `object`

Unix 秒単位のブロック時刻比較の境界です。各境界はオプションです。

**time.gt** `number`

この値より大きい値に一致します。

**time.gte** `number`

この値以上の値に一致します。

**time.lt** `number`

この値より小さい値に一致します。

**time.lte** `number`

この値以下の値に一致します。


## OpenAPI

````yaml ja/openapi/parsed-events.yaml POST /v1/parsed-events/scan
openapi: 3.0.3
info:
  title: 解析されたイベント
  version: 0.1.0
  description: Solanaトランザクションと解析されたトランザクション履歴を、解析されたイベントで解析します。
servers:
  - url: https://mainnet.helius-rpc.com
security:
  - ApiKeyQuery: []
paths:
  /v1/parsed-events/scan:
    post:
      tags:
        - 解析済みイベント
      summary: トランザクション履歴をスキャン
      description: >-
        アドレスの履歴から、指定したプログラムのいずれかを呼び出すトランザクション、指定したトークンミントのいずれかに関与するトランザクション、またはその両方を検索し、解析済みの一致結果、署名、または件数を返します。
      operationId: scanParsedTransactionHistory
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ScanRequest'
            examples:
              Pump.fun buys and sells:
                value:
                  address: 6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P
                  match:
                    programs:
                      - programId: 6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P
                        instructions:
                          - buy
                          - sell
                  limit: 1
              Rare instruction, budget stop:
                value:
                  address: 6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P
                  match:
                    programs:
                      - programId: 6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P
                        instructions:
                          - set_params
                  budget:
                    maxScannedTransactions: 2000
              Count matches:
                value:
                  address: 6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P
                  match:
                    programs:
                      - programId: 6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P
                        instructions:
                          - set_params
                  returnShape: count
                  budget:
                    maxScannedTransactions: 2000
              Token transactions with a USDC account:
                value:
                  address: <MINT_ADDRESS>
                  match:
                    mints:
                      - mint: EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v
                        scope: transaction
                  returnShape: signatures
      responses:
        '200':
          description: >-
            要求された `returnShape` 形式の一致結果とスキャンの概要です。部分的な結果でもステータスは 200
            です。`paginationToken` が返される間は、それを使用して処理を続行してください。
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ScanPage'
              examples:
                Stopped on limit:
                  value:
                    data:
                      - signature: >-
                          5zmGhmd3JZxXzz8MnA8MM1K7PXRwA1z35n3xT6ZJGRz3sAi25p8jaZuPWFCB4nEPx7DUke9y3pwrd4V7xAFozQBy
                        parserStatus: OK
                        parsed:
                          slot: 460869102
                          blockTime: 1792848886
                          fee: 45000
                          feePayer: Gygj9QQby4j2jryqyqBHvLP7ctv2SaANgh4sCb69BUpA
                          transactionStatus: OK
                          error: null
                          decodedError: null
                          nativeTransfers:
                            - fromUserAccount: BwWK17cbHxwWBKZkUYvzxLcNQ1YVyaFezduWbtm2de6s
                              toUserAccount: 2meTvySZ7iVXzif1m3BAUj2RgwiDCpSMEW7yN3EAAY98
                              amount: 4207183
                          tokenTransfers:
                            - fromUserAccount: 2meTvySZ7iVXzif1m3BAUj2RgwiDCpSMEW7yN3EAAY98
                              toUserAccount: BwWK17cbHxwWBKZkUYvzxLcNQ1YVyaFezduWbtm2de6s
                              fromTokenAccount: 7Rx6mmZ3jEWv94MZ5JtEqqw8PZTmVt2aFDxL678faSER
                              toTokenAccount: 7Y7x62ZQkzCLjuxw8iG5M2QZsayYeysRhfcY8pB5kbxQ
                              rawTokenAmount: 612181177082
                              decimals: 6
                              tokenStandard: Fungible
                              mint: 3Wdb9NjzsMWFqnQZd21oQMyAc24ZgYZjqpF6NZdLpump
                          summary:
                            type: swap
                            description: >-
                              BwWK17cbHxwWBKZkUYvzxLcNQ1YVyaFezduWbtm2de6s が
                              Pump.fun を介して 0.004207183 SOL を 612181.177082
                              3Wdb9NjzsMWFqnQZd21oQMyAc24ZgYZjqpF6NZdLpump
                              にスワップしました
                            parsedData:
                              type: swap
                              protocol: pump_fun
                              kind: buy
                              in_amount: '4207183'
                              actual_out_amount: '612181177082'
                              input_mint: So11111111111111111111111111111111111111112
                              output_mint: 3Wdb9NjzsMWFqnQZd21oQMyAc24ZgYZjqpF6NZdLpump
                              inner_swaps: []
                          instructions:
                            - instructionIndex: 0
                              innerInstructionIndex: null
                              stackHeight: 1
                              programId: ComputeBudget111111111111111111111111111111
                              rawAccounts: []
                              rawData: HMypLP
                              summary: null
                              programName: compute_budget
                              instructionName: set_compute_unit_limit
                              decoded:
                                args:
                                  units: '400000'
                                accounts: []
                            - instructionIndex: 1
                              innerInstructionIndex: null
                              stackHeight: 1
                              programId: ComputeBudget111111111111111111111111111111
                              rawAccounts: []
                              rawData: 3gJqkocMWaMm
                              summary: null
                              programName: compute_budget
                              instructionName: set_compute_unit_price
                              decoded:
                                args:
                                  micro_lamports: '100000'
                                accounts: []
                            - instructionIndex: 2
                              innerInstructionIndex: null
                              stackHeight: 1
                              programId: MAyhSmzXzV1pTf7LsNkrNwkWKTo4ougAJ1PPg47MD4e
                              rawAccounts:
                                - Gygj9QQby4j2jryqyqBHvLP7ctv2SaANgh4sCb69BUpA
                                - 13ec7XdrjF3h3YcqBTFDSReRcUFwbCnJaAQspM4j6DDJ
                                - CNtxytSi1JNJgmBM444pGXK5eUEy5B2Q3haBHw2fzdoG
                                - 3Wdb9NjzsMWFqnQZd21oQMyAc24ZgYZjqpF6NZdLpump
                                - 7Y7x62ZQkzCLjuxw8iG5M2QZsayYeysRhfcY8pB5kbxQ
                                - BwWK17cbHxwWBKZkUYvzxLcNQ1YVyaFezduWbtm2de6s
                                - '11111111111111111111111111111111'
                                - TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb
                                - 4wTV1YmiEkRvAtNtsSGPtUrqRYQMe5SKy2uB4Jjaxnjf
                                - 2meTvySZ7iVXzif1m3BAUj2RgwiDCpSMEW7yN3EAAY98
                                - GesfTA3X2arioaHp8bbKdjG9vJtskViWACZoYvxp4twS
                                - 7Rx6mmZ3jEWv94MZ5JtEqqw8PZTmVt2aFDxL678faSER
                                - HTGkqssCRhyE6rCBDDKQVqTM5LcFPwH8r7rmoMuvtKCD
                                - Ce6TQqeHC9p8KetsN6JsjHK7UTZk7nasjjnr7XxXp9F1
                                - 6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P
                                - Hq2wp8uJ9jCPsYgNHex8RtqdvMPfVGoYwjvF1ATiwn2Y
                                - FGFrX2q1iAjyAojjeyFDxXqdmvegjPpSWsrPmrJjeQ2f
                                - 8Wf5TiAheLUqBrKXeYg2JtAFFMWtKdG2BSFgqUcPVwTt
                                - pfeeUxB6jkeY1Hxd7CsFCAjcbHA9rWtchMGdZ6VojVZ
                                - 8FoNgzmjuSmiy86EPCWxvv1q7oJSu2WGA7wPymwki2LJ
                                - MAyhSmzXzV1pTf7LsNkrNwkWKTo4ougAJ1PPg47MD4e
                                - 6MneqwSEV63Ujx1KZX8ZDs5freLUyo61DoSdEeQCjNjk
                                - 5YxQFdt3Tr9zJLvkFccqXVUwhdTWJQc1fFg2YPbxvxeD
                              rawData: 23s1EunhJwrvzz8YSBTPv5WDZGm8uym8KQXhF3u
                              summary: null
                              programName: null
                              instructionName: null
                              decoded: null
                            - instructionIndex: 2
                              innerInstructionIndex: 0
                              stackHeight: 2
                              programId: 6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P
                              rawAccounts:
                                - 4wTV1YmiEkRvAtNtsSGPtUrqRYQMe5SKy2uB4Jjaxnjf
                                - GesfTA3X2arioaHp8bbKdjG9vJtskViWACZoYvxp4twS
                                - 3Wdb9NjzsMWFqnQZd21oQMyAc24ZgYZjqpF6NZdLpump
                                - 2meTvySZ7iVXzif1m3BAUj2RgwiDCpSMEW7yN3EAAY98
                                - 7Rx6mmZ3jEWv94MZ5JtEqqw8PZTmVt2aFDxL678faSER
                                - 7Y7x62ZQkzCLjuxw8iG5M2QZsayYeysRhfcY8pB5kbxQ
                                - BwWK17cbHxwWBKZkUYvzxLcNQ1YVyaFezduWbtm2de6s
                                - '11111111111111111111111111111111'
                                - TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb
                                - HTGkqssCRhyE6rCBDDKQVqTM5LcFPwH8r7rmoMuvtKCD
                                - Ce6TQqeHC9p8KetsN6JsjHK7UTZk7nasjjnr7XxXp9F1
                                - 6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P
                                - Hq2wp8uJ9jCPsYgNHex8RtqdvMPfVGoYwjvF1ATiwn2Y
                                - FGFrX2q1iAjyAojjeyFDxXqdmvegjPpSWsrPmrJjeQ2f
                                - 8Wf5TiAheLUqBrKXeYg2JtAFFMWtKdG2BSFgqUcPVwTt
                                - pfeeUxB6jkeY1Hxd7CsFCAjcbHA9rWtchMGdZ6VojVZ
                                - 6MneqwSEV63Ujx1KZX8ZDs5freLUyo61DoSdEeQCjNjk
                                - 5YxQFdt3Tr9zJLvkFccqXVUwhdTWJQc1fFg2YPbxvxeD
                              rawData: i43WeUBGKA8F2B6dwt5RBzavSKrhGu93LB
                              summary:
                                type: swap
                                description: >-
                                  BwWK17cbHxwWBKZkUYvzxLcNQ1YVyaFezduWbtm2de6s が
                                  Pump.fun を介して 0.004207183 SOL を 612181.177082
                                  3Wdb9NjzsMWFqnQZd21oQMyAc24ZgYZjqpF6NZdLpump
                                  にスワップしました
                                parsedData:
                                  type: swap
                                  protocol: pump_fun
                                  kind: buy
                                  in_amount: '4207183'
                                  actual_out_amount: '612181177082'
                                  input_mint: So11111111111111111111111111111111111111112
                                  output_mint: 3Wdb9NjzsMWFqnQZd21oQMyAc24ZgYZjqpF6NZdLpump
                                  inner_swaps: []
                              programName: pump
                              instructionName: buy
                              decoded:
                                args:
                                  amount: '612181177082'
                                  max_sol_cost: '4207183'
                                  track_volume:
                                    - false
                                accounts:
                                  - name: global
                                    pubkey: >-
                                      4wTV1YmiEkRvAtNtsSGPtUrqRYQMe5SKy2uB4Jjaxnjf
                                    isSigner: false
                                    isWritable: false
                                  - name: fee_recipient
                                    pubkey: >-
                                      GesfTA3X2arioaHp8bbKdjG9vJtskViWACZoYvxp4twS
                                    isSigner: false
                                    isWritable: true
                                  - name: mint
                                    pubkey: >-
                                      3Wdb9NjzsMWFqnQZd21oQMyAc24ZgYZjqpF6NZdLpump
                                    isSigner: false
                                    isWritable: false
                                  - name: bonding_curve
                                    pubkey: >-
                                      2meTvySZ7iVXzif1m3BAUj2RgwiDCpSMEW7yN3EAAY98
                                    isSigner: false
                                    isWritable: true
                                  - name: associated_bonding_curve
                                    pubkey: >-
                                      7Rx6mmZ3jEWv94MZ5JtEqqw8PZTmVt2aFDxL678faSER
                                    isSigner: false
                                    isWritable: true
                                  - name: associated_user
                                    pubkey: >-
                                      7Y7x62ZQkzCLjuxw8iG5M2QZsayYeysRhfcY8pB5kbxQ
                                    isSigner: false
                                    isWritable: true
                                  - name: user
                                    pubkey: >-
                                      BwWK17cbHxwWBKZkUYvzxLcNQ1YVyaFezduWbtm2de6s
                                    isSigner: true
                                    isWritable: true
                                  - name: system_program
                                    pubkey: '11111111111111111111111111111111'
                                    isSigner: false
                                    isWritable: false
                                  - name: token_program
                                    pubkey: >-
                                      TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb
                                    isSigner: false
                                    isWritable: false
                                  - name: creator_vault
                                    pubkey: >-
                                      HTGkqssCRhyE6rCBDDKQVqTM5LcFPwH8r7rmoMuvtKCD
                                    isSigner: false
                                    isWritable: true
                                  - name: event_authority
                                    pubkey: >-
                                      Ce6TQqeHC9p8KetsN6JsjHK7UTZk7nasjjnr7XxXp9F1
                                    isSigner: false
                                    isWritable: false
                                  - name: program
                                    pubkey: >-
                                      6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P
                                    isSigner: false
                                    isWritable: false
                                  - name: global_volume_accumulator
                                    pubkey: >-
                                      Hq2wp8uJ9jCPsYgNHex8RtqdvMPfVGoYwjvF1ATiwn2Y
                                    isSigner: false
                                    isWritable: false
                                  - name: user_volume_accumulator
                                    pubkey: >-
                                      FGFrX2q1iAjyAojjeyFDxXqdmvegjPpSWsrPmrJjeQ2f
                                    isSigner: false
                                    isWritable: true
                                  - name: fee_config
                                    pubkey: >-
                                      8Wf5TiAheLUqBrKXeYg2JtAFFMWtKdG2BSFgqUcPVwTt
                                    isSigner: false
                                    isWritable: false
                                  - name: fee_program
                                    pubkey: >-
                                      pfeeUxB6jkeY1Hxd7CsFCAjcbHA9rWtchMGdZ6VojVZ
                                    isSigner: false
                                    isWritable: false
                                  - name: remainingAccount1
                                    pubkey: >-
                                      6MneqwSEV63Ujx1KZX8ZDs5freLUyo61DoSdEeQCjNjk
                                    isSigner: false
                                    isWritable: false
                                  - name: remainingAccount2
                                    pubkey: >-
                                      5YxQFdt3Tr9zJLvkFccqXVUwhdTWJQc1fFg2YPbxvxeD
                                    isSigner: false
                                    isWritable: false
                            - instructionIndex: 2
                              innerInstructionIndex: 1
                              stackHeight: 3
                              programId: pfeeUxB6jkeY1Hxd7CsFCAjcbHA9rWtchMGdZ6VojVZ
                              rawAccounts:
                                - 8Wf5TiAheLUqBrKXeYg2JtAFFMWtKdG2BSFgqUcPVwTt
                                - 6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P
                              rawData: >-
                                KX69VKtJ7u4E7dVvicNyuayxqa9Hr4EfndWiJBCjUyq1hDLtgcYW6pEh1tPqbHSkqHTQ8uiASv1QK1
                              summary: null
                              programName: pump_fees
                              instructionName: null
                              decoded: null
                            - instructionIndex: 2
                              innerInstructionIndex: 2
                              stackHeight: 3
                              programId: TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb
                              rawAccounts:
                                - 7Rx6mmZ3jEWv94MZ5JtEqqw8PZTmVt2aFDxL678faSER
                                - 3Wdb9NjzsMWFqnQZd21oQMyAc24ZgYZjqpF6NZdLpump
                                - 7Y7x62ZQkzCLjuxw8iG5M2QZsayYeysRhfcY8pB5kbxQ
                                - 2meTvySZ7iVXzif1m3BAUj2RgwiDCpSMEW7yN3EAAY98
                              rawData: jHqzogtBj1ey3
                              summary:
                                type: transfer
                                description: >-
                                  2meTvySZ7iVXzif1m3BAUj2RgwiDCpSMEW7yN3EAAY98 が
                                  612181.177082
                                  3Wdb9NjzsMWFqnQZd21oQMyAc24ZgYZjqpF6NZdLpump を
                                  2meTvySZ7iVXzif1m3BAUj2RgwiDCpSMEW7yN3EAAY98
                                  から
                                  BwWK17cbHxwWBKZkUYvzxLcNQ1YVyaFezduWbtm2de6s
                                  に転送しました
                                parsedData: null
                              programName: token_2022
                              instructionName: transfer_checked
                              decoded:
                                args:
                                  amount: '612181177082'
                                  decimals: 6
                                accounts:
                                  - name: source_account
                                    pubkey: >-
                                      7Rx6mmZ3jEWv94MZ5JtEqqw8PZTmVt2aFDxL678faSER
                                    isSigner: false
                                    isWritable: true
                                  - name: mint
                                    pubkey: >-
                                      3Wdb9NjzsMWFqnQZd21oQMyAc24ZgYZjqpF6NZdLpump
                                    isSigner: false
                                    isWritable: false
                                  - name: destination_account
                                    pubkey: >-
                                      7Y7x62ZQkzCLjuxw8iG5M2QZsayYeysRhfcY8pB5kbxQ
                                    isSigner: false
                                    isWritable: true
                                  - name: owner_or_delegate
                                    pubkey: >-
                                      2meTvySZ7iVXzif1m3BAUj2RgwiDCpSMEW7yN3EAAY98
                                    isSigner: true
                                    isWritable: false
                            - instructionIndex: 2
                              innerInstructionIndex: 3
                              stackHeight: 3
                              programId: '11111111111111111111111111111111'
                              rawAccounts:
                                - BwWK17cbHxwWBKZkUYvzxLcNQ1YVyaFezduWbtm2de6s
                                - 2meTvySZ7iVXzif1m3BAUj2RgwiDCpSMEW7yN3EAAY98
                              rawData: 3Bxs4E6xqUKPTjRy
                              summary:
                                type: transfer
                                description: >-
                                  BwWK17cbHxwWBKZkUYvzxLcNQ1YVyaFezduWbtm2de6s が
                                  0.004207183 SOL を
                                  2meTvySZ7iVXzif1m3BAUj2RgwiDCpSMEW7yN3EAAY98
                                  に転送しました
                                parsedData: null
                              programName: system
                              instructionName: transfer
                              decoded:
                                args:
                                  lamports: '4207183'
                                accounts:
                                  - name: funding_account
                                    pubkey: >-
                                      BwWK17cbHxwWBKZkUYvzxLcNQ1YVyaFezduWbtm2de6s
                                    isSigner: true
                                    isWritable: true
                                  - name: recipient_account
                                    pubkey: >-
                                      2meTvySZ7iVXzif1m3BAUj2RgwiDCpSMEW7yN3EAAY98
                                    isSigner: false
                                    isWritable: true
                            - instructionIndex: 2
                              innerInstructionIndex: 4
                              stackHeight: 3
                              programId: 6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P
                              rawAccounts:
                                - Ce6TQqeHC9p8KetsN6JsjHK7UTZk7nasjjnr7XxXp9F1
                              rawData: >-
                                8jV3ThAnvn3jwQVVxYoxU8MvQQneX8ryEqnGqWTeKGi8UcTcTFd5VQ8KLpzRZhN2g6qpShcNYKQ6aEiZojgETaWrW1Mn92Drm2irNbjBdHGCTkuK3SBZb4HSn6KPZiJehmZL1aPNtVSRmGh2ojKXZLFtokDPK31XJJJZYBMowkVME4yWDsiA81AKAyJYq3afuYidCUgWsSfzSo8tZZRtCpSaeUd3M5JeyiE9V45vsDuPYsyBxmVFWf3qKWEcQuCDYu5HctwzvAeqU6Hmr1st5Kd62GrbHxua73RLuXpHotAjm3wYD6BkKEtKDpSnq47ewySqeUgF8MrTc121NwjKhedGJfp1VWv4TULoKaNTuA9KRzYVsTNgjYuwSgiXxQF2F1ePSHexBQdTiMbL1STcahdzuLvZoRkEUQX1WE9ayykQ1uiJ1FPFNCitKm6YwpLLLVwDDi8Rf2J5aeHxtLorKV5UWn1CnRukDpSJxAC91mmc6qNcJ6XQW5VxJMdhJcSSmSr1hi4dUt1vW6gspsMxEMUzGtiyBZeo
                              summary: null
                              programName: pump
                              instructionName: TradeEvent
                              decoded:
                                args:
                                  buyback_fee: '0'
                                  buyback_fee_basis_points: '0'
                                  cashback: '0'
                                  cashback_fee_basis_points: '0'
                                  creator: 2G5ZssGjViBdr4DdwYaQ23JQeNG8TRsrnHKs9pabUoCz
                                  creator_fee: '0'
                                  creator_fee_basis_points: '0'
                                  current_sol_volume: '0'
                                  fee: '0'
                                  fee_basis_points: '0'
                                  fee_recipient: GesfTA3X2arioaHp8bbKdjG9vJtskViWACZoYvxp4twS
                                  holder_rewards: '0'
                                  holder_rewards_bps: '0'
                                  is_buy: true
                                  ix_name: buy
                                  last_update_timestamp: '0'
                                  mayhem_mode: true
                                  mint: 3Wdb9NjzsMWFqnQZd21oQMyAc24ZgYZjqpF6NZdLpump
                                  quote_amount: '4207183'
                                  quote_mint: '11111111111111111111111111111111'
                                  real_quote_reserves: '27976582'
                                  real_sol_reserves: '27976582'
                                  real_token_reserves: '793353696151809'
                                  shareholders: []
                                  sol_amount: '4207183'
                                  timestamp: '1792848886'
                                  token_amount: '612181177082'
                                  total_claimed_tokens: '0'
                                  total_unclaimed_tokens: '0'
                                  track_volume: false
                                  user: BwWK17cbHxwWBKZkUYvzxLcNQ1YVyaFezduWbtm2de6s
                                  virtual_quote_reserves: '8676477109'
                                  virtual_sol_reserves: '8676477109'
                                  virtual_token_reserves: '1073253696151809'
                                accounts: []
                            - instructionIndex: 2
                              innerInstructionIndex: 5
                              stackHeight: 2
                              programId: MAyhSmzXzV1pTf7LsNkrNwkWKTo4ougAJ1PPg47MD4e
                              rawAccounts:
                                - 8FoNgzmjuSmiy86EPCWxvv1q7oJSu2WGA7wPymwki2LJ
                              rawData: >-
                                HaAvdxyruSvtMDoMtGvePmYV4dda7tWKCLFHadQoSjYsbWWixs1eN1wCF27wUxZao1NfTPQGxhVs9GXmaVGUZ5mgBAEUUWKK4se3JtE5oKMHzxp6GRbR7wagdMtwKQEaJbXuMb9c75n3gPnTTFrxTjJrtBCejTAEQpd6mv9HUaxpt2u83Cts4WgXdvWqiHqk7xXkXQwV6M1VXmAfwZYg4CSjzAmooqqAdzbHuf243dbws8uDS4GrteXQiAYow3395wuNqLWzrcHropQTzvaDtpfAupYXEt2AZHPEuUsVhtt5n8xAieU5d4oHSjAvgBczW9cktco7Wto3kEo53QaJfbdEz4V9Jnx6ib2fdvW2EpLXUprJLcP9voTKAuuCZCTbQKSbwJWRG9UCPTssTDR3m9eE38WcqtK1v2jeRtbtK
                              summary: null
                              programName: null
                              instructionName: null
                              decoded: null
                    paginationToken: '460869102:203'
                    scan:
                      stoppedOn: limit
                      scannedTransactions: 1
                      matchedTransactions: 1
                      scannedThrough:
                        slot: 460869102
                        blockTime: 1792848886
                      creditsCharged: 11
                Stopped on budget, no matches:
                  value:
                    data: []
                    paginationToken: '460903064:422'
                    scan:
                      stoppedOn: budget
                      scannedTransactions: 2000
                      matchedTransactions: 0
                      scannedThrough:
                        slot: 460903064
                        blockTime: 1792856105
                      creditsCharged: 12
                Count shape:
                  value:
                    paginationToken: '460903064:422'
                    scan:
                      stoppedOn: budget
                      scannedTransactions: 2000
                      matchedTransactions: 0
                      scannedThrough:
                        slot: 460903064
                        blockTime: 1792856105
                      creditsCharged: 12
        '400':
          description: 無効なリクエストです。`error` メッセージに問題の内容が示されます。
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                default:
                  value:
                    error: >-
                      match.programs instructions not found in the IDLs of
                      6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P: not_a_real_ix
        '500':
          $ref: '#/components/responses/InternalError'
        '503':
          description: サービスが処理上限に達しているか、リクエストの期限までに履歴の最初のページの処理が完了しませんでした。リクエストを再試行してください。
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              examples:
                default:
                  value:
                    error: service unavailable
components:
  schemas:
    ScanRequest:
      type: object
      description: 一致するトランザクションをアドレスの履歴からスキャンするためのリクエスト本文です。
      required:
        - address
        - match
      additionalProperties: false
      properties:
        address:
          type: string
          description: 履歴をスキャンするアドレスです。
        match:
          $ref: '#/components/schemas/ScanMatch'
        returnShape:
          type: string
          description: >-
            レスポンスに含める一致結果の形式です。`transactions`（`data` に解析済みの一致結果を最大 `limit`
            件格納）、`signatures`（`data` の各一致結果に
            `signature`、`slot`、`transactionIndex`、`blockTime` を格納）、または
            `count`（`data` なし。`scan.matchedTransactions` が一致件数）です。`signatures` と
            `count` では `limit` と `rawTransaction` は無視されます。
          enum:
            - transactions
            - signatures
            - count
          default: transactions
        limit:
          type: integer
          description: '`transactions` 形式で返す一致結果の最大数です。1～100 を指定できます。'
          minimum: 1
          maximum: 100
          default: 100
        budget:
          $ref: '#/components/schemas/ScanBudget'
        beforeSignature:
          type: string
          description: この署名より前のトランザクションをスキャンします。
        afterSignature:
          type: string
          description: この署名より後のトランザクションをスキャンします。
        paginationToken:
          type: string
          description: 前回のスキャンで返されたカーソルです。形式は `slot:transactionIndex` です。
        sortOrder:
          type: string
          description: 履歴をスキャンし、一致結果を返す順序です。
          enum:
            - asc
            - desc
          default: desc
        commitment:
          type: string
          description: 履歴の取得に使用するコミットメントレベルです。`processed` はサポートされていません。
          enum:
            - confirmed
            - finalized
          default: confirmed
        status:
          type: string
          description: 含める実行結果です。フィルタリングは照合前に行われるため、除外されたトランザクションは予算に算入されません。
          enum:
            - succeeded
            - failed
            - any
          default: succeeded
        tokenAccounts:
          allOf:
            - $ref: '#/components/schemas/TokenAccountsFilter'
          description: >-
            `address` 自体ではなく、`address`
            が所有するトークンアカウントのみを参照するトランザクションを含めるかどうかです。`none`
            はそれらを除外し、`balanceChanged` はトークンアカウントの残高を変更するものを含め、`all`
            はすべてを含めます。ミント別にウォレットをスキャンする場合は `balanceChanged` を使用してください。
        minContextSlot:
          type: integer
          description: リクエストを評価できる最小スロットです。
        rawTransaction:
          allOf:
            - $ref: '#/components/schemas/RawTransactionEncoding'
          description: >-
            成功した各結果で `rawTransaction` として返される、元の Solana トランザクションのエンコーディングです。形式は
            `getTransaction` と同じです。`transactions` 形式にのみ適用されます。
        slot:
          allOf:
            - $ref: '#/components/schemas/ComparisonBounds'
          description: スロットの比較境界です。各境界は省略可能です。
        time:
          allOf:
            - $ref: '#/components/schemas/ComparisonBounds'
          description: Unix 秒単位のブロック時間の比較境界です。各境界は省略可能です。
    ScanPage:
      type: object
      description: 要求された `returnShape` 形式の一致結果とスキャンの概要です。
      properties:
        data:
          description: >-
            `sortOrder` 順の一致結果です。`transactions` の場合、各項目は
            `/v1/parsed-events/transactions` が返すものと同じ `TransactionResult`
            形式です。`signatures` の場合、各項目は `ScanSignature` です。`count`
            の場合は存在しません。`paginationToken` がある場合でも空になることがあります。
          oneOf:
            - type: array
              title: トランザクション
              items:
                $ref: '#/components/schemas/TransactionResult'
            - type: array
              title: 署名
              items:
                $ref: '#/components/schemas/ScanSignature'
        paginationToken:
          type: string
          description: 次のスキャンを続行する位置を示すカーソルです。スキャンが履歴または範囲の末尾に到達した場合は存在しません。
        scan:
          $ref: '#/components/schemas/ScanSummary'
    ErrorResponse:
      type: object
      description: リクエストレベルのエラーレスポンス。
      properties:
        error:
          type: string
          description: エラーメッセージ。
    ScanMatch:
      type: object
      description: >-
        トランザクションが満たす必要のある一致条件です。`programs`、`mints`、またはその両方を設定します。両方を設定した場合、トランザクションは両方に一致する必要があります。
      additionalProperties: false
      properties:
        programs:
          type: array
          description: >-
            照合するプログラムです。最大 20 個で、各プログラムは 1 回のみ指定できます。トランザクションに、プログラムの `scope`
            内にあるいずれかのプログラムの命令がトップレベルまたは内部（CPI）に存在する場合、一致します。
          maxItems: 20
          items:
            $ref: '#/components/schemas/ScanProgramMatch'
        mints:
          type: array
          description: >-
            照合するミントです。最大 20 個で、各ミントは 1
            回のみ指定できます。トランザクションの事前または事後のトークン残高のいずれかが、ミントの `scope`
            内でこれらのミントのいずれかに該当する場合、一致します。
          maxItems: 20
          items:
            $ref: '#/components/schemas/ScanMintMatch'
    ScanBudget:
      type: object
      description: 1 回のリクエストでスキャンする履歴量の上限です。
      additionalProperties: false
      properties:
        maxScannedTransactions:
          type: integer
          description: このリクエストでスキャンするトランザクションの最大数です。1～10,000 を指定できます。
          minimum: 1
          maximum: 10000
          default: 10000
    TokenAccountsFilter:
      type: string
      description: >-
        `address` 自体ではなく、`address`
        が所有するトークンアカウントのみを参照するトランザクションを含めるかどうかです。`none` はそれらを除外し、`balanceChanged`
        はトークンアカウントの残高を変更するものを含め、`all` はすべてを含めます。
      enum:
        - none
        - balanceChanged
        - all
      default: none
    RawTransactionEncoding:
      type: string
      description: >-
        成功した各結果で `rawTransaction` として返される、元の Solana トランザクションのエンコーディングです。形式は
        `getTransaction` と同じです。`none` の場合、未加工トランザクションは返されません。
      enum:
        - none
        - json
        - jsonParsed
        - base64
      default: none
    ComparisonBounds:
      type: object
      description: 数値比較境界。各フィールドはオプションです。
      additionalProperties: false
      properties:
        gt:
          type: integer
          description: この値より大きい値を一致させます。
        gte:
          type: integer
          description: この値以上の値を一致させます。
        lt:
          type: integer
          description: この値より小さい値を一致させます。
        lte:
          type: integer
          description: この値以下の値を一致させます。
    TransactionResult:
      type: object
      description: 署名ごとのパーサー結果。
      properties:
        signature:
          type: string
          description: このアイテムのトランザクション署名。
        parserStatus:
          type: string
          description: 解析が成功した場合は`OK`、アイテムの取得または解析が失敗した場合は`ERROR`。
          enum:
            - OK
            - ERROR
        parsed:
          allOf:
            - $ref: '#/components/schemas/ParsedTransaction'
          description: 解析されたトランザクションオブジェクト。`parserStatus`が`OK`の場合に存在します。
        parserError:
          allOf:
            - $ref: '#/components/schemas/ParserError'
          description: アイテムレベルのエラー。`parserStatus`が`ERROR`の場合に存在します。
        rawTransaction:
          type: object
          description: >-
            要求された `rawTransaction` エンコーディングに対応する、`getTransaction` 形式の元の Solana
            トランザクションです。`base64` の場合、`transaction` は `[data, "base64"]`
            です。未加工トランザクションが要求された場合にのみ存在します。
          additionalProperties: true
    ScanSignature:
      type: object
      description: '`returnShape` を `signatures` に設定した場合に返される一致結果です。'
      properties:
        signature:
          type: string
          description: トランザクション署名です。
        slot:
          type: integer
          description: トランザクションを含むスロットです。
        transactionIndex:
          type: integer
          description: スロット内でのトランザクションの位置です。
        blockTime:
          type: integer
          nullable: true
          description: 利用可能な場合の Unix 秒単位のブロック時間です。
    ScanSummary:
      type: object
      description: スキャンがどこまで進み、なぜ停止したかを示します。
      properties:
        stoppedOn:
          type: string
          description: >-
            スキャンが停止した理由です。`windowEnd`（履歴または範囲の末尾）、`limit`（`limit`
            件の一致結果を返した）、`budget`（`maxScannedTransactions` 件をスキャンした）、または
            `deadline`（リクエストの制限時間に達した）です。
          enum:
            - windowEnd
            - limit
            - budget
            - deadline
        scannedTransactions:
          type: integer
          description: このリクエストでスキャンしたトランザクション数です。
        matchedTransactions:
          type: integer
          description: このリクエストで見つかった一致件数です。`returnShape` が `count` に設定されている場合、これが結果になります。
        scannedThrough:
          allOf:
            - $ref: '#/components/schemas/ScannedThrough'
          description: 最後にスキャンしたトランザクションです。何もスキャンされなかった場合は存在しません。
        creditsCharged:
          type: integer
          description: >-
            請求されるクレジット数です。リクエストごとに 10 に加え、スキャンした履歴ページごとに 1（各ページ最大 1,000
            トランザクション）です。
    ScanProgramMatch:
      type: object
      description: >-
        トップレベルまたは内部（CPI）に `programId`
        の命令があるトランザクションに一致します。`instructions`、`discriminators`、またはその両方を設定して一致条件を絞り込めます。どちらも設定しない場合は、プログラムのすべての命令に一致します。
      required:
        - programId
      additionalProperties: false
      properties:
        programId:
          type: string
          description: プログラムのアドレスです。
        instructions:
          type: array
          description: >-
            プログラムの任意の IDL バージョンにある命令名です。IDL での表記または snake_case で指定します。最大 50
            個です。`discriminators` と組み合わせて使用できます。
          maxItems: 50
          items:
            type: string
        discriminators:
          type: array
          description: >-
            命令データのプレフィックスです。それぞれ 1～8 バイトの 16 進エンコードで、オプションの `0x`
            プレフィックスを付けられます。最大 50 個です。`instructions` と組み合わせて使用できます。
          maxItems: 50
          items:
            type: string
        scope:
          allOf:
            - $ref: '#/components/schemas/MatchScope'
          description: >-
            プログラムのどの命令を算入するかを指定します。`address` は、`address` であるアカウント、`address`
            が所有するトークンアカウント、またはミントが `address` であるトークンアカウントを含む命令のみを算入します。`address`
            がプログラムの場合は、すべての命令を算入します。`transaction`
            は、トランザクション内にあるプログラムのすべての命令を算入します。
    ScanMintMatch:
      type: object
      description: >-
        `scope` 内で、`mint` の事前または事後のトークン残高があるトランザクションに一致します。ネイティブ SOL ミント
        `So11111111111111111111111111111111111111111` の場合は、トークン残高ではなく lamport
        の変動で照合し、手数料支払者に請求された手数料は算入しません。
      required:
        - mint
      additionalProperties: false
      properties:
        mint:
          type: string
          description: >-
            トークンミントのアドレスです。ネイティブ SOL ミント
            `So11111111111111111111111111111111111111111` の場合は、トークン残高ではなく
            lamport の変動で照合し、手数料は算入しません。
        scope:
          allOf:
            - $ref: '#/components/schemas/MatchScope'
          description: >-
            ミントのどのトークン残高を算入するかを指定します。`address` は、トークンアカウントが `address`
            であるか、その所有者が `address` である残高、またはミントが `address` である残高のみを算入します。ネイティブ
            SOL の場合、`address` の lamport の変動のみを算入します。`transaction`
            は、トランザクション内にあるそのミントのすべての残高を算入します。ネイティブ SOL の場合、任意のアカウントの lamport
            の変動を算入します。
    ParsedTransaction:
      type: object
      description: Parser-v2トランザクションモデル。
      properties:
        slot:
          type: integer
          description: トランザクションを含むスロット。
        blockTime:
          type: integer
          description: ブロックのUnixタイムスタンプ（利用可能な場合）。
          nullable: true
        fee:
          type: integer
          description: ラメにおけるトランザクション手数料。
        feePayer:
          type: string
          description: 利用可能な場合の手数料支払者アカウント。
          nullable: true
        transactionStatus:
          type: string
          description: トランザクションが成功した場合は`OK`、実行が失敗した場合は`ERROR`。
          enum:
            - OK
            - ERROR
        nativeTransfers:
          type: array
          description: ラメにおけるトランザクションレベルのSOL転送。
          items:
            $ref: '#/components/schemas/NativeTransfer'
        tokenTransfers:
          type: array
          description: トランザクションレベルのSPLトークンおよびトークン-2022の転送。
          items:
            $ref: '#/components/schemas/TokenTransfer'
        summary:
          allOf:
            - $ref: '#/components/schemas/ParsedSummary'
          description: 利用可能な場合の最良のトランザクションレベルの要約。
          nullable: true
        instructions:
          type: array
          description: 実行順序での解析されたトップレベルおよび内部命令。
          items:
            $ref: '#/components/schemas/ParsedInstruction'
    ParserError:
      type: object
      description: アイテムレベルの解析エラー。
      properties:
        code:
          type: string
          description: 機械で読み取り可能な解析エラーコード。
        message:
          type: string
          description: 人間が読める解析エラーメッセージ。
    ScannedThrough:
      type: object
      description: 最後にスキャンしたトランザクションの位置です。
      properties:
        slot:
          type: integer
          description: 最後にスキャンしたトランザクションのスロットです。
        blockTime:
          type: integer
          nullable: true
          description: 最後にスキャンしたトランザクションのブロック時間です。Unix 秒単位です。
    MatchScope:
      type: string
      description: プログラムの命令またはミントのトークン残高がどこに存在すれば算入されるかを指定します。
      enum:
        - address
        - transaction
      default: address
    NativeTransfer:
      type: object
      description: トランザクションレベルで検出されたSOLの移動。
      properties:
        fromUserAccount:
          type: string
          description: ラメを送信するアカウント。
          nullable: true
        toUserAccount:
          type: string
          description: ラメを受け取るアカウント。
          nullable: true
        amount:
          type: integer
          description: ラメの量。
    TokenTransfer:
      type: object
      description: トランザクションレベルで検出されたSPLトークンまたはトークン-2022の移動。
      properties:
        fromUserAccount:
          type: string
          description: ソース側の所有者または権限、既知の場合。
          nullable: true
        toUserAccount:
          type: string
          description: 既知の場合の宛先側の所有者。
          nullable: true
        fromTokenAccount:
          type: string
          description: ソーストークンアカウント。
          nullable: true
        toTokenAccount:
          type: string
          description: 宛先トークンアカウント。
          nullable: true
        rawTokenAmount:
          type: integer
          description: 生の整数トークン量。
        decimals:
          type: integer
          description: 生の量を解釈するために使用されるミント小数点。
        tokenStandard:
          type: string
          description: 既知の場合のトークン標準、例えば`Fungible`または`UnknownStandard`。
        mint:
          type: string
          description: トークンミントアドレス。
    ParsedSummary:
      type: object
      description: トランザクションまたは命令の人間が読める要約。
      properties:
        type:
          type: string
          description: '`swap`、`transfer`、または`create_account`などの要約タイプ。'
        description:
          type: string
          description: 人間が読める要約テキスト。
        parsedData:
          type: object
          description: >-
            要約の背後にある構造化されたペイロード、利用可能な場合—例えばプロトコル、種類、金額、およびミントを含むスワップメタデータ。形状は要約タイプとプロトコルによって異なります。
          nullable: true
          additionalProperties: true
    ParsedInstruction:
      type: object
      description: 解析されたトップレベルまたは内部命令。
      properties:
        instructionIndex:
          type: integer
          description: トップレベルの命令インデックス。
        innerInstructionIndex:
          type: integer
          description: 該当する場合、トップレベルの命令内の内部命令インデックス。
          nullable: true
        stackHeight:
          type: integer
          description: 利用可能な場合のスタック高さ。
          nullable: true
        programId:
          type: string
          description: 命令を実行したプログラムID。
        rawAccounts:
          type: array
          description: 命令アカウントインデックスから解決された生のアカウント公開鍵。
          items:
            type: string
        rawData:
          type: string
          description: 生の命令データ。
        summary:
          allOf:
            - $ref: '#/components/schemas/ParsedSummary'
          description: 利用可能な場合の命令レベルの要約。
          nullable: true
        programName:
          type: string
          description: 解析器に既知のプログラム名、利用可能な場合。
          nullable: true
        instructionName:
          type: string
          description: 解析された命令の名前、利用可能な場合。
          nullable: true
        decoded:
          allOf:
            - $ref: '#/components/schemas/DecodedInstruction'
          description: 解析が成功したときの解析された引数とアカウント。
          nullable: true
    DecodedInstruction:
      type: object
      description: 解析された命令の引数と名前付きアカウント。
      properties:
        args:
          type: object
          description: 解析された命令引数。引数の名前と形状は命令によって異なります。
          additionalProperties: true
        accounts:
          type: array
          description: 解析器に既知の名前を持つ解析された命令アカウント。
          items:
            $ref: '#/components/schemas/DecodedAccount'
    DecodedAccount:
      type: object
      description: 解析された命令によって使用される名前付きアカウント。
      properties:
        name:
          type: string
          description: 解析器に既知のアカウント名。
        pubkey:
          type: string
          description: アカウントの公開鍵。
        isSigner:
          type: boolean
          description: アカウントがトランザクションに署名したかどうか。
        isWritable:
          type: boolean
          description: アカウントが命令に対して書き込み可能かどうか。
  responses:
    InternalError:
      description: >-
        サーバーでリクエストが失敗しました。たとえば、要求された範囲に保存されているトランザクションをデコードできなかった場合などです。リクエスト全体が失敗し、部分的な結果は返されません。
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            default:
              value:
                error: internal server error
  securitySchemes:
    ApiKeyQuery:
      type: apiKey
      in: query
      name: api-key

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.