Indexer API
https://indexer.aevachain.com — the read-only HTTP API behind the explorer (OpenAPI 3.0.3, API version 0.12.2; the document is indexer/openapi.yaml, served at /openapi.yaml). JSON only; lists page with limit (≤ 100) and an opaque cursor. The TypeScript client is @aeva/sdk (api.createClient). The API sends no CORS headers: call it from a server or a script.
Routes
GET /v1/status
Indexer status
200 → Status
GET /v1/stats
Chain-wide transaction aggregates (the explorer home)
The number of transactions on chain (every committed tx, failed ones included), the most recent transactions whatever their age, and the transactions per UTC day for the 14 days ending on the latest block’s day (block time is “now”), oldest first, zero-filled.
| parameter | in | type | required | meaning |
|---|---|---|---|---|
limit | query | integer | no | how many latest transactions (default 6) |
200 → Stats
GET /v1/blocks
Blocks, newest first
| parameter | in | type | required | meaning |
|---|---|---|---|---|
limit | query | integer | no | |
cursor | query | string | no | opaque cursor from a previous next_cursor |
200 → blocks: Block[], next_cursor: string
GET /v1/blocks/{height}
One block with its transactions and block-level events
| parameter | in | type | required | meaning |
|---|---|---|---|---|
height | path | integer | yes |
200 → block: Block, txs: Tx[], events: Event[]
GET /v1/txs
Transactions, newest first
Keyset-paged on (height, tx_index), every transaction on chain (failed ones included) — never a block window. method keeps the transactions whose first message has that type URL (the explorer’s Method column). next_cursor walks to older transactions, prev_cursor to newer ones, last_cursor to the oldest page (total % limit transactions, a full page when it divides); total counts the matches; methods is the whole chain’s facet for the filter.
| parameter | in | type | required | meaning |
|---|---|---|---|---|
limit | query | integer | no | |
cursor | query | string | no | opaque cursor from a previous next_cursor |
method | query | string | no | the type URL of the first message, e.g. /aeva.rights.v1.MsgTransfer |
200 → TxPage
GET /v1/txs/{hash}
One transaction with its messages, decoded events and (for MsgEthereumTx) its EVM view
| parameter | in | type | required | meaning |
|---|---|---|---|---|
hash | path | string | yes | the CometBFT hash (64 hex characters, case-insensitive) or the 0x eth hash of a MsgEthereumTx (0x + 64 hex) |
200 → Tx
GET /v1/assets
Assets ordered by id
| parameter | in | type | required | meaning |
|---|---|---|---|---|
limit | query | integer | no | |
cursor | query | string | no | opaque cursor from a previous next_cursor |
200 → assets: AssetSummary[], next_cursor: string
GET /v1/assets/{id}
One asset with kinds, supplies, effective policies, holder counts and the latest invariant check
| parameter | in | type | required | meaning |
|---|---|---|---|---|
id | path | string | yes | 64 lower-case hex characters |
200 → asset: Asset
GET /v1/assets/{id}/graph
Rights graph of an asset — kinds → top-100 holders by units with encumbered units and locks
| parameter | in | type | required | meaning |
|---|---|---|---|---|
id | path | string | yes | 64 lower-case hex characters |
200 → asset_id: string, status: string, kinds: object[]
GET /v1/assets/{id}/kinds/{kind}/holders
Holders of one right kind, units desc then holder asc
| parameter | in | type | required | meaning |
|---|---|---|---|---|
id | path | string | yes | 64 lower-case hex characters |
kind | path | integer | yes | |
limit | query | integer | no | |
cursor | query | string | no | opaque cursor from a previous next_cursor |
200 → asset_id: string, kind_id: integer, holders: Holder[], next_cursor: string
GET /v1/accounts/{addr}
Account view — positions grouped by asset with whole_units, locks, pending settlements as either party, attestations
| parameter | in | type | required | meaning |
|---|---|---|---|---|
addr | path | string | yes | account address — bech32 (aeva1…) or the 0x form of the same 20-byte key (EIP-55 checked when mixed case); answers name the canonical bech32 form |
200 → Account
GET /v1/accounts/{addr}/attestations
Attestations about one subject, with live computed against the latest block time
| parameter | in | type | required | meaning |
|---|---|---|---|---|
addr | path | string | yes | account address — bech32 (aeva1…) or the 0x form of the same 20-byte key (EIP-55 checked when mixed case); answers name the canonical bech32 form |
200 → address: string, attestations: Attestation[], latest_block_time: string
GET /v1/attesters/{addr}
Per-credential-type aggregates of one attester (no subjects)
| parameter | in | type | required | meaning |
|---|---|---|---|---|
addr | path | string | yes | account address — bech32 (aeva1…) or the 0x form of the same 20-byte key (EIP-55 checked when mixed case); answers name the canonical bech32 form |
200 → attester: string, types: object[], latest_block_time: string
GET /v1/settlements
Settlements, newest first, optionally filtered by party and status
| parameter | in | type | required | meaning |
|---|---|---|---|---|
party | query | string | no | bech32 account that is the proposer or the counterparty |
status | query | string | no | STATUS_PENDING | STATUS_SETTLED | STATUS_CANCELLED | STATUS_EXPIRED (or pending | settled | cancelled | expired) |
limit | query | integer | no | |
cursor | query | string | no | opaque cursor from a previous next_cursor |
200 → settlements: Settlement[], next_cursor: string
GET /v1/encumbrances/{id}
One encumbrance (pledge, lien or lockup) with its lifecycle timeline (M1.1)
| parameter | in | type | required | meaning |
|---|---|---|---|---|
id | path | integer | yes |
200 → encumbrance: Encumbrance, timeline: EncumbranceTimelineEntry[]
GET /v1/assets/{id}/distributions
Distribution history of an asset (every EventDistributed, newest first; M1.2)
| parameter | in | type | required | meaning |
|---|---|---|---|---|
id | path | string | yes | 64 lower-case hex characters |
limit | query | integer | no | |
cursor | query | string | no | opaque cursor from a previous next_cursor |
200 → asset_id: string, distributions: Distribution[], next_cursor: string
GET /v1/settlements/{id}
One settlement with legs and lifecycle timeline
| parameter | in | type | required | meaning |
|---|---|---|---|---|
id | path | integer | yes |
200 → settlement: Settlement
GET /v1/assets/{id}/liquidation
The M2 view of an asset — waterfall tiers with cumulative paid, the liquidation record and pool (I5), the redemption pools (I6)
| parameter | in | type | required | meaning |
|---|---|---|---|---|
id | path | string | yes | 64 lower-case hex characters |
200 → AssetLiquidation
GET /v1/delegations/{id}
One M3 term delegation by id
| parameter | in | type | required | meaning |
|---|---|---|---|---|
id | path | integer | yes |
200 → delegation: Delegation
GET /v1/bridge/routes
RH-2 bridge routes — the governance registry with the outbound / inbound counters, outstanding (escrow or synthetic supply), window usage
200 → routes: BridgeRoute[]
GET /v1/bridge/routes/{id}
One bridge route by id
| parameter | in | type | required | meaning |
|---|---|---|---|---|
id | path | string | yes |
200 → route: BridgeRoute
GET /v1/bridge/transfers
Bridge transfers seen on Aeva, newest first — out (in flight from Aeva’s view), in (completed on arrival) and rejected attempts (failed MsgBridgeOut txs, codespace bridge)
| parameter | in | type | required | meaning |
|---|---|---|---|---|
route | query | string | no | |
status | query | string | no | |
account | query | string | no | sender or recipient |
message_id | query | string | no | |
limit | query | integer | no | |
cursor | query | string | no | opaque cursor from a previous next_cursor |
200 → transfers: BridgeTransfer[], next_cursor: string
GET /v1/assets/{id}/events
Activity feed of an asset — every event whose derivation rule declares the asset as a subject, newest first
| parameter | in | type | required | meaning |
|---|---|---|---|---|
id | path | string | yes | 64 lower-case hex characters |
limit | query | integer | no | |
cursor | query | string | no | opaque cursor from a previous next_cursor |
GET /v1/accounts/{addr}/events
Activity feed of an account — every event whose derivation rule declares the account as a subject, newest first
| parameter | in | type | required | meaning |
|---|---|---|---|---|
addr | path | string | yes | account address — bech32 (aeva1…) or the 0x form of the same 20-byte key (EIP-55 checked when mixed case); answers name the canonical bech32 form |
limit | query | integer | no | |
cursor | query | string | no | opaque cursor from a previous next_cursor |
GET /v1/lookup/{q}
Dispatch a free-form query by shape into candidates (asset, tx, account, block, settlement, encumbrance)
64 hex characters → asset (if it exists) then tx (if it exists);
an aeva1… address → one account candidate with known (the chain
recorded something about it) true or false and its evm_address;
0x + 40 hex → the asset whose AE-20 Right (kind_id) or Bundle
(bundle) precompile lives at that address, else the account of
that key (resolved to bech32); 0x + 64 hex → the tx with that eth
hash (id = its CometBFT hash); a non-negative integer → block when
≤ the indexed height, settlement and encumbrance when they exist.
An unrecognised shape (incl. a wrong EIP-55 checksum) is a 404; a
recognised shape with nothing behind it is a 200 with an empty list.
Ordering is deterministic.
| parameter | in | type | required | meaning |
|---|---|---|---|---|
q | path | string | yes |
200 → query: string, candidates: object[]
GET /v1/invariants
Latest reconciliation check per (asset, kind), both sources, plus the ae20_registry check
| parameter | in | type | required | meaning |
|---|---|---|---|---|
asset | query | string | no | restrict to one asset id |
200 → checks: InvariantCheck[], ae20_registry: AE20Check[]
Schemas
Error
| field | type | required | meaning |
|---|---|---|---|
error | string | yes | |
code | string | yes | (bad_request, not_found, internal, method_not_allowed) |
Amount
cosmossdk.io/math.Int as a decimal string
Status
| field | type | required | meaning |
|---|---|---|---|
indexed_height | integer | yes | |
chain_height | integer | yes | |
lag_blocks | integer | yes | |
latest_block_time | string | yes | |
wall_clock_lag_seconds | integer | yes | seconds between the indexer’s wall clock and latest_block_time (integer) |
drift_total | integer | yes | recorded disagreements (reconciliation rows with agree=false plus event post-value drifts) |
Stats
| field | type | required | meaning |
|---|---|---|---|
indexed_height | integer | yes | |
tx_count | integer | yes | every transaction indexed (committed on chain), failed ones included |
latest_txs | Tx[] | yes | the most recent transactions, newest first, whatever their age |
tx_daily | TxDay[] | yes | transactions per UTC day, 14 days ending on the latest block’s day, oldest first |
TxPage
| field | type | required | meaning |
|---|---|---|---|
txs | Tx[] | yes | |
total | integer | yes | the transactions matching the filter |
next_cursor | string | null | yes | the next (older) page; null on the oldest |
prev_cursor | string | null | yes | the previous (newer) page; null on the newest |
last_cursor | string | null | yes | the oldest page; null when everything fits one page |
methods | MethodCount[] | yes | transactions per first-message type over the whole chain, most frequent first |
MethodCount
| field | type | required | meaning |
|---|---|---|---|
method | string | yes | |
count | integer | yes |
TxDay
| field | type | required | meaning |
|---|---|---|---|
day | string | yes | YYYY-MM-DD (UTC) |
count | integer | yes |
Block
| field | type | required | meaning |
|---|---|---|---|
height | integer | yes | |
hash | string | yes | |
time | string | yes | |
proposer | string | yes | |
tx_count | integer | yes | |
event_count | integer | yes |
Event
| field | type | required | meaning |
|---|---|---|---|
event_index | integer | yes | |
type | string | yes | |
msg_index | integer | null | yes | |
mode | string | no | BeginBlock | EndBlock for block-level events |
attributes | object[] | yes | raw key/value attributes |
decoded | object | null | yes | proto-JSON of the Aeva typed event, null for other events |
applied | boolean | yes | derived into state (Aeva event of a successful tx or block-level) |
EVMTx
the EVM view of a MsgEthereumTx (M5-B). The Cosmos tx succeeds (code 0) even when the EVM execution reverts — gas is charged and the nonce bumped — so status is the EVM outcome.
| field | type | required | meaning |
|---|---|---|---|
eth_hash | string | yes | keccak256 of the signed RLP, lower-case 0x-hex (the hash wallets know; not the CometBFT hash) |
from | string | yes | EIP-55 sender |
to | string | null | yes | EIP-55 recipient; null for a contract creation |
value | object | yes | aaeva moved by the call |
gas_used | integer | yes | |
status | integer | yes | 1 = success, 0 = reverted / failed (0, 1) |
revert_reason | string | null | yes | the ABI-decoded Error(string) of a REVERT — the stable “aeva…” strings of docs/evm/revert-reasons.md for the AE-20 precompiles (a policy denial carries the rule path) — or the VM error; null on success |
Tx
| field | type | required | meaning |
|---|---|---|---|
hash | string | yes | |
height | integer | yes | |
tx_index | integer | yes | |
code | integer | yes | |
codespace | string | yes | |
raw_log | string | no | present only when code != 0 |
gas_wanted | integer | yes | |
gas_used | integer | yes | |
msgs | object[] | yes | messages as proto-JSON objects with @type |
fee | object[] | yes | the fee paid ({denom, amount} pairs; empty for a fee-less tx) — AEVA (aaeva) is the gas token (ADR-016 §2) |
block_time | string | yes | |
evm | object | null | yes | the EVM view of a MsgEthereumTx; null for every other tx |
events | Event[] | yes |
AssetSummary
| field | type | required | meaning |
|---|---|---|---|
issuance_locked | boolean | yes | the issuer ended issuance irreversibly (MsgLockIssuance); Redeem and transfers unaffected |
meta_hash | string | yes | hex of the asset’s off-chain document hash; "" when the issuer set none (lets a reader find an asset by its declared document) |
id | string | yes | |
issuer | string | yes | |
status | string | yes | |
kind_count | integer | yes | |
created_height | integer | yes | |
created_at | string | yes |
Kind
| field | type | required | meaning |
|---|---|---|---|
multiplier | integer | yes | the SPLIT presentation multiplier (1 = none); raw state never changes (M2) |
effective_supply | object | yes | supply × multiplier |
bridgeable | boolean | yes | the issuer allows units of this kind over a RIGHT_OUT bridge route (RH-3, v0.12.0); a route also needs an OPEN effective policy |
kind_id | integer | yes | |
class | string | yes | |
decimals | integer | yes | |
bundle | boolean | yes | |
transferable | boolean | yes | |
term | object | null | yes | |
policy_override | object | null | yes | |
effective_policy | object | yes | policy_override when set, else the asset policy (chain EffectivePolicy) |
policy_source | string | yes | (ASSET, KIND_OVERRIDE) |
supply | Amount | yes | |
holder_count | integer | yes | |
ae20_address | string | yes | the AE-20 Right precompile of (asset, kind) — keccak256(“aeva/right/v1” || asset_id || uint32_be(kind_id))[12:], EIP-55 (decision 114); balanceOf there is the transferable units |
Asset
| field | type | required | meaning |
|---|---|---|---|
id | string | yes | |
issuer | string | yes | |
status | string | yes | |
policy | object | yes | |
roles | object | yes | |
meta_hash | string | yes | hex, empty when unset |
settlement_denom | string | yes | |
nonce | integer | yes | |
kind_count | integer | yes | |
issuance_locked | boolean | yes | the issuer ended issuance irreversibly (MsgLockIssuance) |
liens_allowed | boolean | yes | the operator role may create liens (decision 88) |
distribution_denoms | string[] | yes | the x/payout distribution denom allowlist (decision 101) |
accruals | Accrual[] | yes | one accrual per (kind, denom) with its residue (decision 98) |
created_height | integer | yes | |
created_tx_hash | string | yes | |
created_at | string | yes | |
updated_height | integer | yes | |
kinds | Kind[] | yes | |
latest_invariant_check | object | null | yes | |
bundle_address | string | yes | the AE-20 Bundle precompile of the asset — keccak256(“aeva/bundle/v1” || asset_id)[12:], EIP-55 (decision 114); balanceOf there is the transferable whole units |
Lock
| field | type | required | meaning |
|---|---|---|---|
ref | string | yes | |
units | Amount | yes |
Holder
| field | type | required | meaning |
|---|---|---|---|
holder | string | yes | |
units | Amount | yes | |
encumbered | Amount | yes | |
locks | Lock[] | yes | |
encumbrances | PositionEncumbrance[] | yes | typed breakdown of the ACTIVE encumbrances behind the encumbrance/ locks (decision 93) |
Accrual
| field | type | required | meaning |
|---|---|---|---|
kind_id | integer | yes | |
denom | string | yes | |
index | string | yes | cumulative scaled income per unit (× 10^18), decimal string |
carry_scaled | string | yes | scaled remainder carried into the next distribution (< supply) |
total_distributed | Amount | yes | |
total_paid | Amount | yes | |
distributions_count | integer | yes | |
module_held | Amount | yes | |
sum_claimable | Amount | yes | |
carry | Amount | yes | |
residue | string | yes | module_held − Σ claimable − carry; the per-holder floor residue, reported not swept |
updated_height | integer | yes |
Distribution
| field | type | required | meaning |
|---|---|---|---|
height | integer | yes | |
tx_index | integer | yes | |
event_index | integer | yes | |
kind_id | integer | yes | |
denom | string | yes | |
payer | string | yes | |
amount | Amount | yes | |
new_index | string | yes | |
carry_scaled | string | yes | |
supply | Amount | yes | |
tx_hash | string | yes | |
block_time | string | yes |
ClaimableEntry
| field | type | required | meaning |
|---|---|---|---|
routed_from | string | yes | set on a routed entry (M3) — the holder whose locked units route income here; "" for the account’s own accrual |
ref | string | yes | the lock ref of the route (“encumbrance/ |
asset_id | string | yes | |
kind_id | integer | yes | |
denom | string | yes | |
pending | Amount | yes | |
accrued | Amount | yes | |
total | Amount | yes |
PositionEncumbrance
| field | type | required | meaning |
|---|---|---|---|
id | integer | yes | |
kind | string | yes | (pledge, lien, lockup) |
beneficiary | string | yes | empty for lockups |
units | Amount | yes | |
status | string | yes | (active, released, exercised, expired) |
expiry | string | null | yes | |
holder_release_after | string | null | yes |
Encumbrance
| field | type | required | meaning |
|---|---|---|---|
income_to_beneficiary | boolean | yes | the pledge routes its units’ income to the beneficiary while active (M3) |
id | integer | yes | |
kind | string | yes | (pledge, lien, lockup) |
asset_id | string | yes | |
kind_id | integer | yes | |
holder | string | yes | |
units | Amount | yes | |
beneficiary | string | yes | empty for lockups |
holder_release_after | string | null | yes | the holder may release after this block time; null = never (decision 85) |
exercisable | boolean | yes | |
expiry | string | null | yes | |
evidence_hash | string | yes | hex; 32 bytes for liens, may be empty otherwise |
status | string | yes | (active, released, exercised, expired) |
created_height | integer | yes | |
created_tx_hash | string | yes | |
created_at | string | yes | |
resolved_height | integer | null | yes | |
updated_height | integer | yes |
EncumbranceTimelineEntry
| field | type | required | meaning |
|---|---|---|---|
event | string | yes | (created, released, exercised, expired) |
height | integer | yes | |
block_time | string | yes | |
tx_hash | string | null | yes | null for the EndBlock sweep |
actor | string | null | yes | |
actor_role | string | null | yes | (holder, operator, issuer, releaser, beneficiary, protocol) |
units | object | null | yes |
Account
| field | type | required | meaning |
|---|---|---|---|
delegations | Delegation[] | yes | |
voting_power | VotingPower[] | yes | |
address | string | yes | the canonical bech32 form (whichever form the request used) |
evm_address | string | null | yes | the EIP-55 0x form of the same 20-byte key; null for 32-byte module accounts |
assets | object[] | yes | |
locks | object[] | yes | |
pending_settlements | Settlement[] | yes | |
attestations | Attestation[] | yes | |
claimable | ClaimableEntry[] | yes | claimable income per (asset, kind, denom) — pending + accrued (decision 104) |
latest_block_time | string | yes |
Attestation
| field | type | required | meaning |
|---|---|---|---|
type | string | yes | |
attester | string | yes | |
expiry | string | yes | |
revoked | boolean | yes | |
evidence_hash | string | yes | hex, empty when unset |
live | boolean | yes | not revoked and expiry > latest_block_time |
updated_height | integer | yes |
Settlement
| field | type | required | meaning |
|---|---|---|---|
cancel_reason | string | yes | "" for a party’s cancel; “LIQUIDATION” when x/waterfall cancelled the PENDING settlement of a liquidating asset (M2) |
id | integer | yes | |
proposer | string | yes | |
counterparty | string | yes | |
legs | object[] | yes | proto-JSON aeva.settlement.v1.Leg objects (direction + right | coin) |
expiry | string | yes | |
status | string | yes | (STATUS_PENDING, STATUS_SETTLED, STATUS_CANCELLED, STATUS_EXPIRED) |
memo_hash | string | yes | hex, empty when unset |
created_height | integer | yes | |
created_tx_hash | string | yes | |
created_at | string | yes | |
updated_height | integer | yes | |
timeline | object[] | no | present on /v1/settlements/{id}; proposed then settled | cancelled | expired |
AssetLiquidation
| field | type | required | meaning |
|---|---|---|---|
asset_id | string | yes | |
status | string | yes | |
waterfall | object[] | yes | |
liquidation | object | null | yes | |
redemption_pools | object[] | yes |
BridgeRoute
| field | type | required | meaning |
|---|---|---|---|
route_id | string | yes | |
remote_domain | integer | yes | |
remote_contract | string | yes | 0x bytes32 remote warp router |
direction | string | yes | (DIRECTION_NATIVE_OUT, DIRECTION_SYNTHETIC_IN, DIRECTION_RIGHT_OUT) |
local_denom | string | yes | |
status | string | yes | (ROUTE_STATUS_ACTIVE, ROUTE_STATUS_PAUSED) |
window_seconds | integer | yes | |
outbound_limit | Amount | yes | |
inbound_limit | Amount | yes | |
warp_token_id | string | yes | |
display | string | yes | |
exponent | integer | yes | |
outbound | Amount | yes | |
inbound | Amount | yes | |
outstanding | Amount | yes | NATIVE_OUT — outbound − inbound (the expected escrow, I8); SYNTHETIC_IN — inbound − outbound (the expected synthetic supply) |
outbound_used | Amount | yes | |
inbound_used | Amount | yes | |
created_height | integer | yes | |
updated_height | integer | yes | |
transfers | integer | yes | |
asset_id | string | yes | RIGHT_OUT (RH-3) — the Aeva asset whose units the route moves (” for coin routes) |
kind_id | integer | yes | RIGHT_OUT — the right kind (ignored when bundle) |
bundle | boolean | yes | RIGHT_OUT — the route moves whole bundles (one unit of every bundle kind) |
escrow_address | string | yes | RIGHT_OUT — the escrow account holding the bridged-out units (I8b — escrow units == outbound − inbound); it accrues their income |
income_swept | object | yes | RIGHT_OUT — Σ EventEscrowIncomeSwept per denom (governance moved the escrow’s income) |
i8 | object | null | yes | the latest I8 reconciliation of this route (chain escrow / synthetic supply vs the indexer’s outstanding); null before the first one |
I8Check
| field | type | required | meaning |
|---|---|---|---|
height | integer | yes | |
chain_actual | string | yes | |
indexer_actual | string | yes | |
chain_ok | boolean | yes | |
evaluated | boolean | yes | |
agree | boolean | yes |
BridgeTransfer
| field | type | required | meaning |
|---|---|---|---|
height | integer | yes | |
tx_index | integer | yes | |
tx_hash | string | yes | |
route_id | string | yes | |
direction | string | yes | (out, in) |
status | string | yes | (in_flight, completed, rejected) |
sender | string | yes | |
recipient | string | yes | |
amount | Amount | yes | |
message_id | string | yes | the Hyperlane message id; empty for rejected |
reason | string | yes | rejected only — the failed tx code (bridge/4 route paused, bridge/5 cap exceeded) |
block_time_ns | integer | yes | |
event_index | integer | yes | |
asset_id | string | yes | a right transfer (RH-3) — the asset; amount is raw units (bundle — whole bundles) |
kind_id | integer | yes | |
bundle | boolean | yes |
Delegation
| field | type | required | meaning |
|---|---|---|---|
id | integer | yes | |
holder | string | yes | |
asset_id | string | yes | |
kind_id | integer | yes | |
units | Amount | yes | |
delegate | string | yes | |
until | string | yes | |
purposes | string[] | yes | |
revocable | boolean | yes | |
ended | string | yes | "" while active; END_REASON_EXPIRED | END_REASON_REVOKED | END_REASON_RETURNED |
created_height | integer | yes | |
created_tx_hash | string | yes | |
ended_height | integer | null | yes |
VotingPower
| field | type | required | meaning |
|---|---|---|---|
asset_id | string | yes | |
own | Amount | yes | |
delegated_out | Amount | yes | |
delegated_in | Amount | yes | |
voting_power | object | yes | own − delegated out + delegated in (VOTE-class kinds; informational — there is no vote module) |
ActivityEvent
| field | type | required | meaning |
|---|---|---|---|
height | integer | yes | |
tx_index | integer | yes | -1 for block-level events |
event_index | integer | yes | |
tx_hash | string | null | yes | null for block-level events (e.g. the settlement expiry sweep) |
block_time | string | yes | |
type | string | yes | full proto name of the typed event |
mode | string | no | BeginBlock | EndBlock for block-level events |
decoded | object | yes | proto-JSON of the typed event |
InvariantCheck
| field | type | required | meaning |
|---|---|---|---|
asset_id | string | yes | |
kind_id | integer | yes | |
height | integer | yes | |
agree | boolean | yes | |
chain | object | yes | |
indexer | object | yes |
AE20Check
one ae20_registry reconciliation row (M5-B) — the indexer’s decision-114 formula address against the chain’s erc20rights registry, introduced in chain 0.9.0. A chain before that, or a binary that does not serve the query, reports evaluated=false (“not evaluated”, ADR-005 rule 6) — never drift.
| field | type | required | meaning |
|---|---|---|---|
asset_id | string | yes | |
kind_id | integer | null | yes | the Right kind; null for the Bundle row |
bundle | boolean | yes | |
height | integer | yes | |
indexer_address | string | yes | the formula address (EIP-55); empty for a token the chain registers for a kind the indexer does not know |
chain_address | string | yes | the chain’s registry answer; empty when not evaluated or missing on the chain |
evaluated | boolean | yes | |
agree | boolean | yes |