# データ型

このセクションでは、OCAP Client API全体で使用されるすべてのカスタムデータ構造、入力パラメータ、および応答オブジェクトに関する包括的なリファレンスを提供します。これらの型を理解することは、OCAPブロックチェーンと効果的に対話するために不可欠です。


## コアタイプ

これらは、さまざまなAPIコールで使用される基本的なデータ構造です。

### Any

protobufメッセージ用の汎用コンテナで、柔軟なデータ構造を可能にします。

<x-field-group>
  <x-field data-name="typeUrl" data-type="string" data-desc="シリアル化されたメッセージの型を一意に識別するURLのような文字列。"></x-field>
  <x-field data-name="value" data-type="string" data-desc="シリアル化されたメッセージの内容を文字列として表したもの。"></x-field>
</x-field-group>

### Multisig

マルチシグネチャを表し、複数の承認を必要とするトランザクションでよく使用されます。

<x-field-group>
  <x-field data-name="signer" data-type="string" data-desc="署名者のアドレス。"></x-field>
  <x-field data-name="pk" data-type="string" data-desc="署名者の公開鍵。"></x-field>
  <x-field data-name="signature" data-type="string" data-desc="署名者によって生成された署名。"></x-field>
  <x-field data-name="delegator" data-type="string" data-desc="署名が委任されている場合の委任者のアドレス。"></x-field>
  <x-field data-name="data" data-type="Any" data-desc="署名に関連付けられた任意のオプションデータ。"></x-field>
</x-field-group>

### PageInfo

リストベースのクエリ応答のページネーション詳細を含みます。

<x-field-group>
  <x-field data-name="cursor" data-type="string" data-desc="結果の次のページを取得するためのカーソル。"></x-field>
  <x-field data-name="next" data-type="boolean" data-desc="結果の次のページがあるかどうかを示します。"></x-field>
  <x-field data-name="total" data-type="number" data-desc="クエリに一致するアイテムの総数。"></x-field>
</x-field-group>

### StateContext

ステートオブジェクトの作成と最終更新に関するコンテキストを提供します。

<x-field-group>
  <x-field data-name="genesisTx" data-type="TransactionInfo" data-desc="このステートオブジェクトを作成したトランザクション。"></x-field>
  <x-field data-name="renaissanceTx" data-type="TransactionInfo" data-desc="このステートオブジェクトを最後に更新したトランザクション。"></x-field>
  <x-field data-name="genesisTime" data-type="string" data-desc="ステートオブジェクトが作成されたときのタイムスタンプ。"></x-field>
  <x-field data-name="renaissanceTime" data-type="string" data-desc="ステートオブジェクトが最後に更新されたときのタイムスタンプ。"></x-field>
</x-field-group>

### ウォレットオブジェクト

これらの型は、トランザクション署名に使用されるウォレットの構造を定義します。

#### WalletObject

<x-field-group>
  <x-field data-name="publicKey" data-type="string"></x-field>
  <x-field data-name="secretKey" data-type="string"></x-field>
  <x-field data-name="type" data-type="WalletTypeObject"></x-field>
</x-field-group>

#### WalletTypeObject

<x-field-group>
  <x-field data-name="pk" data-type="number"></x-field>
  <x-field data-name="role" data-type="number"></x-field>
  <x-field data-name="hash" data-type="number"></x-field>
  <x-field data-name="address" data-type="number" data-desc="デフォルトはbase58btcです"></x-field>
</x-field-group>

#### WalletType

<x-field-group>
  <x-field data-name="pk" data-type="KeyType"></x-field>
  <x-field data-name="hash" data-type="HashType"></x-field>
  <x-field data-name="address" data-type="EncodingType"></x-field>
  <x-field data-name="role" data-type="RoleType"></x-field>
</x-field-group>


## 入力およびフィルタータイプ

これらのオブジェクトは、GraphQLクエリのパラメータとフィルターを提供するために使用されます。

### 一般的なフィルター入力

<x-field-group>
  <x-field data-name="AccountFilterInput" data-type="object">
    <x-field data-name="accounts" data-type="array<string>"></x-field>
  </x-field>
  <x-field data-name="AddressFilterInput" data-type="object">
    <x-field data-name="sender" data-type="string"></x-field>
    <x-field data-name="receiver" data-type="string"></x-field>
    <x-field data-name="direction" data-type="Direction"></x-field>
  </x-field>
  <x-field data-name="AssetFilterInput" data-type="object">
    <x-field data-name="assets" data-type="array<string>"></x-field>
  </x-field>
  <x-field data-name="DelegationFilterInput" data-type="object">
    <x-field data-name="delegations" data-type="array<string>"></x-field>
  </x-field>
  <x-field data-name="FactoryFilterInput" data-type="object">
    <x-field data-name="factories" data-type="array<string>"></x-field>
  </x-field>
  <x-field data-name="RangeFilterInput" data-type="object">
    <x-field data-name="from" data-type="string"></x-field>
    <x-field data-name="to" data-type="string"></x-field>
  </x-field>
  <x-field data-name="RollupFilterInput" data-type="object">
    <x-field data-name="rollups" data-type="array<string>"></x-field>
  </x-field>
  <x-field data-name="StakeFilterInput" data-type="object">
    <x-field data-name="stakes" data-type="array<string>"></x-field>
  </x-field>
  <x-field data-name="TimeFilterInput" data-type="object">
    <x-field data-name="startDateTime" data-type="string"></x-field>
    <x-field data-name="endDateTime" data-type="string"></x-field>
    <x-field data-name="field" data-type="string"></x-field>
  </x-field>
  <x-field data-name="TokenFactoryFilterInput" data-type="object">
    <x-field data-name="tokenFactories" data-type="array<string>"></x-field>
  </x-field>
  <x-field data-name="TokenFilterInput" data-type="object">
    <x-field data-name="tokens" data-type="array<string>"></x-field>
  </x-field>
  <x-field data-name="TxFilterInput" data-type="object">
    <x-field data-name="txs" data-type="array<string>"></x-field>
  </x-field>
  <x-field data-name="TypeFilterInput" data-type="object">
    <x-field data-name="types" data-type="array<string>"></x-field>
  </x-field>
  <x-field data-name="ValidatorFilterInput" data-type="object">
    <x-field data-name="validators" data-type="array<string>"></x-field>
  </x-field>
  <x-field data-name="ValidityFilterInput" data-type="object">
    <x-field data-name="validity" data-type="Validity"></x-field>
  </x-field>
</x-field-group>

### ページネーション入力

#### PageInput

<x-field-group>
  <x-field data-name="cursor" data-type="string"></x-field>
  <x-field data-name="size" data-type="number"></x-field>
  <x-field data-name="order" data-type="array<PageOrderInput>"></x-field>
</x-field-group>

#### PageOrderInput

<x-field-group>
  <x-field data-name="field" data-type="string"></x-field>
  <x-field data-name="type" data-type="string"></x-field>
</x-field-group>

### リクエスト固有の入力

これらのオブジェクトは、特定のクエリおよびミューテーションメソッドのパラメータとして使用されます。

<x-field-group>
  <x-field data-name="RequestEstimateGasInput" data-type="object">
    <x-field data-name="typeUrl" data-type="string"></x-field>
    <x-field data-name="tx" data-type="string"></x-field>
  </x-field>
  <x-field data-name="RequestGetAccountStateInput" data-type="object">
    <x-field data-name="address" data-type="string"></x-field>
    <x-field data-name="keys" data-type="array<string>"></x-field>
    <x-field data-name="height" data-type="number"></x-field>
    <x-field data-name="traceMigration" data-type="boolean"></x-field>
  </x-field>
  <x-field data-name="RequestGetAccountTokensInput" data-type="object">
    <x-field data-name="address" data-type="string"></x-field>
    <x-field data-name="token" data-type="string"></x-field>
  </x-field>
  <x-field data-name="RequestGetBlockInput" data-type="object">
    <x-field data-name="height" data-type="number"></x-field>
  </x-field>
  <x-field data-name="RequestGetBlocksInput" data-type="object">
    <x-field data-name="paging" data-type="PageInput"></x-field>
    <x-field data-name="heightFilter" data-type="RangeFilterInput"></x-field>
    <x-field data-name="emptyExcluded" data-type="boolean"></x-field>
  </x-field>
  <x-field data-name="RequestListTransactionsInput" data-type="object">
    <x-field data-name="paging" data-type="PageInput"></x-field>
    <x-field data-name="timeFilter" data-type="TimeFilterInput"></x-field>
    <x-field data-name="addressFilter" data-type="AddressFilterInput"></x-field>
    <x-field data-name="typeFilter" data-type="TypeFilterInput"></x-field>
    <x-field data-name="validityFilter" data-type="ValidityFilterInput"></x-field>
    <x-field data-name="factoryFilter" data-type="FactoryFilterInput"></x-field>
    <x-field data-name="tokenFilter" data-type="TokenFilterInput"></x-field>
    <x-field data-name="assetFilter" data-type="AssetFilterInput"></x-field>
    <x-field data-name="accountFilter" data-type="AccountFilterInput"></x-field>
    <x-field data-name="txFilter" data-type="TxFilterInput"></x-field>
    <x-field data-name="rollupFilter" data-type="RollupFilterInput"></x-field>
    <x-field data-name="stakeFilter" data-type="StakeFilterInput"></x-field>
    <x-field data-name="delegationFilter" data-type="DelegationFilterInput"></x-field>
    <x-field data-name="tokenFactoryFilter" data-type="TokenFactoryFilterInput"></x-field>
  </x-field>
</x-field-group>


## ステートオブジェクト

これらの型は、アカウント、アセット、トークンなど、ブロックチェーン上のさまざまなエンティティの状態を表します。

### AccountState

ユーザーアカウントの状態を表します。

<x-field-group>
  <x-field data-name="balance" data-type="string"></x-field>
  <x-field data-name="nonce" data-type="string"></x-field>
  <x-field data-name="numTxs" data-type="string"></x-field>
  <x-field data-name="address" data-type="string"></x-field>
  <x-field data-name="pk" data-type="string"></x-field>
  <x-field data-name="type" data-type="WalletType"></x-field>
  <x-field data-name="moniker" data-type="string"></x-field>
  <x-field data-name="context" data-type="StateContext"></x-field>
  <x-field data-name="issuer" data-type="string"></x-field>
  <x-field data-name="gasBalance" data-type="string"></x-field>
  <x-field data-name="migratedTo" data-type="array<string>"></x-field>
  <x-field data-name="migratedFrom" data-type="array<string>"></x-field>
  <x-field data-name="numAssets" data-type="string"></x-field>
  <x-field data-name="tokens" data-type="array<IndexedTokenInput>"></x-field>
  <x-field data-name="data" data-type="Any"></x-field>
</x-field-group>

### AssetState

非代替性アセット（NFT）の状態を表します。

<x-field-group>
  <x-field data-name="address" data-type="string"></x-field>
  <x-field data-name="owner" data-type="string"></x-field>
  <x-field data-name="moniker" data-type="string"></x-field>
  <x-field data-name="readonly" data-type="boolean"></x-field>
  <x-field data-name="transferrable" data-type="boolean"></x-field>
  <x-field data-name="ttl" data-type="number"></x-field>
  <x-field data-name="consumedTime" data-type="string"></x-field>
  <x-field data-name="issuer" data-type="string"></x-field>
  <x-field data-name="parent" data-type="string"></x-field>
  <x-field data-name="endpoint" data-type="NFTEndpoint"></x-field>
  <x-field data-name="display" data-type="NFTDisplay"></x-field>
  <x-field data-name="tags" data-type="array<string>"></x-field>
  <x-field data-name="context" data-type="StateContext"></x-field>
  <x-field data-name="data" data-type="Any"></x-field>
</x-field-group>

### AssetFactoryState

新しいアセットをミントするために使用されるアセットファクトリの状態を表します。

<x-field-group>
  <x-field data-name="address" data-type="string"></x-field>
  <x-field data-name="owner" data-type="string"></x-field>
  <x-field data-name="name" data-type="string"></x-field>
  <x-field data-name="description" data-type="string"></x-field>
  <x-field data-name="settlement" data-type="string"></x-field>
  <x-field data-name="limit" data-type="number"></x-field>
  <x-field data-name="trustedIssuers" data-type="array<string>"></x-field>
  <x-field data-name="input" data-type="IndexedFactoryInput"></x-field>
  <x-field data-name="output" data-type="CreateAssetTx"></x-field>
  <x-field data-name="hooks" data-type="array<AssetFactoryHook>"></x-field>
  <x-field data-name="data" data-type="Any"></x-field>
  <x-field data-name="context" data-type="StateContext"></x-field>
  <x-field data-name="balance" data-type="string"></x-field>
  <x-field data-name="tokens" data-type="array<IndexedTokenInput>"></x-field>
  <x-field data-name="numMinted" data-type="number"></x-field>
  <x-field data-name="display" data-type="NFTDisplay"></x-field>
  <x-field data-name="lastSettlement" data-type="string"></x-field>
</x-field-group>

### DelegateState

あるアカウントが別のアカウントに代わってアクションを実行することを許可する、委任の状態を表します。

<x-field-group>
  <x-field data-name="address" data-type="string"></x-field>
  <x-field data-name="ops" data-type="array<DelegateState_OpsEntry>"></x-field>
  <x-field data-name="from" data-type="string"></x-field>
  <x-field data-name="to" data-type="string"></x-field>
  <x-field data-name="context" data-type="StateContext"></x-field>
  <x-field data-name="data" data-type="Any"></x-field>
</x-field-group>

### StakeState

トークンやアセットを含むことができるステークの状態を表します。

<x-field-group>
  <x-field data-name="address" data-type="string"></x-field>
  <x-field data-name="sender" data-type="string"></x-field>
  <x-field data-name="receiver" data-type="string"></x-field>
  <x-field data-name="tokens" data-type="array<IndexedTokenInput>"></x-field>
  <x-field data-name="assets" data-type="array<string>"></x-field>
  <x-field data-name="revocable" data-type="boolean"></x-field>
  <x-field data-name="message" data-type="string"></x-field>
  <x-field data-name="revokeWaitingPeriod" data-type="number"></x-field>
  <x-field data-name="revokedTokens" data-type="array<IndexedTokenInput>"></x-field>
  <x-field data-name="revokedAssets" data-type="array<string>"></x-field>
  <x-field data-name="slashers" data-type="array<string>"></x-field>
  <x-field data-name="nonce" data-type="string"></x-field>
  <x-field data-name="context" data-type="StateContext"></x-field>
  <x-field data-name="data" data-type="Any"></x-field>
</x-field-group>

### TokenState

代替可能なトークンの状態を表します。

<x-field-group>
  <x-field data-name="address" data-type="string"></x-field>
  <x-field data-name="issuer" data-type="string"></x-field>
  <x-field data-name="name" data-type="string"></x-field>
  <x-field data-name="description" data-type="string"></x-field>
  <x-field data-name="symbol" data-type="string"></x-field>
  <x-field data-name="unit" data-type="string"></x-field>
  <x-field data-name="decimal" data-type="number"></x-field>
  <x-field data-name="icon" data-type="string"></x-field>
  <x-field data-name="totalSupply" data-type="string"></x-field>
  <x-field data-name="initialSupply" data-type="string"></x-field>
  <x-field data-name="maxTotalSupply" data-type="string"></x-field>
  <x-field data-name="foreignToken" data-type="ForeignToken"></x-field>
  <x-field data-name="tokenFactoryAddress" data-type="string"></x-field>
  <x-field data-name="context" data-type="StateContext"></x-field>
  <x-field data-name="data" data-type="Any"></x-field>
</x-field-group>

### TokenFactoryState

トークンのミントとバーンに使用されるトークンファクトリの状態を表します。

<x-field-group>
  <x-field data-name="address" data-type="string"></x-field>
  <x-field data-name="tokenAddress" data-type="string"></x-field>
  <x-field data-name="reserveAddress" data-type="string"></x-field>
  <x-field data-name="currentSupply" data-type="string"></x-field>
  <x-field data-name="reserveBalance" data-type="string"></x-field>
  <x-field data-name="owner" data-type="string"></x-field>
  <x-field data-name="feeRate" data-type="number"></x-field>
  <x-field data-name="curve" data-type="CurveConfig"></x-field>
  <x-field data-name="context" data-type="StateContext"></x-field>
  <x-field data-name="token" data-type="TokenState"></x-field>
  <x-field data-name="reserveToken" data-type="TokenState"></x-field>
  <x-field data-name="data" data-type="Any"></x-field>
</x-field-group>


## トランザクションペイロード（ITX）

これらの型は、さまざまなトランザクションタイプに対する `itx` (内部トランザクション) オブジェクトを定義します。

### AccountMigrateTx

<x-field-group>
  <x-field data-name="pk" data-type="string"></x-field>
  <x-field data-name="type" data-type="WalletType"></x-field>
  <x-field data-name="address" data-type="string"></x-field>
  <x-field data-name="data" data-type="Any"></x-field>
</x-field-group>

### AcquireAssetV2Tx

<x-field-group>
  <x-field data-name="factory" data-type="string"></x-field>
  <x-field data-name="address" data-type="string"></x-field>
  <x-field data-name="assets" data-type="array<string>"></x-field>
  <x-field data-name="variables" data-type="array<VariableInput>"></x-field>
  <x-field data-name="issuer" data-type="NFTIssuer"></x-field>
  <x-field data-name="data" data-type="Any"></x-field>
</x-field-group>

### CreateAssetTx

<x-field-group>
  <x-field data-name="moniker" data-type="string"></x-field>
  <x-field data-name="data" data-type="Any"></x-field>
  <x-field data-name="readonly" data-type="boolean"></x-field>
  <x-field data-name="transferrable" data-type="boolean"></x-field>
  <x-field data-name="ttl" data-type="number"></x-field>
  <x-field data-name="parent" data-type="string"></x-field>
  <x-field data-name="address" data-type="string"></x-field>
  <x-field data-name="issuer" data-type="string"></x-field>
  <x-field data-name="endpoint" data-type="NFTEndpoint"></x-field>
  <x-field data-name="display" data-type="NFTDisplay"></x-field>
  <x-field data-name="tags" data-type="array<string>"></x-field>
</x-field-group>

### DelegateTx

<x-field-group>
  <x-field data-name="address" data-type="string"></x-field>
  <x-field data-name="to" data-type="string"></x-field>
  <x-field data-name="ops" data-type="array<DelegateOp>"></x-field>
  <x-field data-name="data" data-type="Any"></x-field>
</x-field-group>

### ExchangeTx

<x-field-group>
  <x-field data-name="to" data-type="string"></x-field>
  <x-field data-name="sender" data-type="ExchangeInfo"></x-field>
  <x-field data-name="receiver" data-type="ExchangeInfo"></x-field>
  <x-field data-name="expiredAt" data-type="string"></x-field>
  <x-field data-name="data" data-type="Any"></x-field>
</x-field-group>

### StakeTx

<x-field-group>
  <x-field data-name="address" data-type="string"></x-field>
  <x-field data-name="receiver" data-type="string"></x-field>
  <x-field data-name="inputs" data-type="array<TransactionInput>"></x-field>
  <x-field data-name="locked" data-type="boolean"></x-field>
  <x-field data-name="message" data-type="string"></x-field>
  <x-field data-name="revokeWaitingPeriod" data-type="number"></x-field>
  <x-field data-name="slashers" data-type="array<string>"></x-field>
  <x-field data-name="nonce" data-type="string"></x-field>
  <x-field data-name="data" data-type="Any"></x-field>
</x-field-group>

### TransferTx

<x-field-group>
  <x-field data-name="to" data-type="string"></x-field>
  <x-field data-name="value" data-type="string"></x-field>
  <x-field data-name="assets" data-type="array<string>"></x-field>
  <x-field data-name="data" data-type="Any"></x-field>
</x-field-group>


## 応答ラッパー

これらの型は、APIクエリによって返されるトップレベルのオブジェクトであり、ステータスコードと要求されたデータを含みます。

### ResponseGetAccountState

<x-field-group>
  <x-field data-name="code" data-type="string"></x-field>
  <x-field data-name="state" data-type="AccountState"></x-field>
</x-field-group>

### ResponseGetAssetState

<x-field-group>
  <x-field data-name="code" data-type="string"></x-field>
  <x-field data-name="state" data-type="AssetState"></x-field>
</x-field-group>

### ResponseGetBlock

<x-field-group>
  <x-field data-name="code" data-type="string"></x-field>
  <x-field data-name="block" data-type="BlockInfo"></x-field>
</x-field-group>

### ResponseGetChainInfo

<x-field-group>
  <x-field data-name="code" data-type="string"></x-field>
  <x-field data-name="info" data-type="ChainInfo"></x-field>
</x-field-group>

### ResponseGetTx

<x-field-group>
  <x-field data-name="code" data-type="string"></x-field>
  <x-field data-name="info" data-type="TransactionInfo"></x-field>
</x-field-group>

### ResponseListTransactions

<x-field-group>
  <x-field data-name="code" data-type="string"></x-field>
  <x-field data-name="page" data-type="PageInfo"></x-field>
  <x-field data-name="transactions" data-type="array<IndexedTransaction>"></x-field>
</x-field-group>

### ResponseSendTx

<x-field-group>
  <x-field data-name="code" data-type="string"></x-field>
  <x-field data-name="hash" data-type="string"></x-field>
</x-field-group>
