Download OpenAPI specification:
The Tari indexer implementation
Get one shard group's committee in an epoch, with its proof against the epoch's validator set hash
| epoch required | integer <int64> >= 0 The epoch of the committee |
| shard required | integer <int32> >= 0 Any shard of the shard group whose committee to return |
{- "committee": {
- "epoch": 0,
- "members": [
- {
- "public_key": "string",
- "vote_power": 0
}
], - "proof": "string",
- "shard_group": { },
- "validator_set_hash": "string"
}
}List epoch checkpoints from storage, ascending by epoch
| from_epoch | integer <int64> >= 0 Epoch to start listing from (inclusive). Defaults to 0 |
| limit | integer <int32> >= 0 Maximum number of checkpoints to return (default: 20, max: 100) |
| shard | integer <int32> >= 0 Only the checkpoints of the shard group containing this shard |
| include_committees | boolean Include the next epoch's committee for the shard group containing |
{- "checkpoints": [
- {
- "checkpoint": "string",
- "epoch": 0,
- "next_epoch_committee": { },
- "next_epoch_validator_set_hash": "string",
- "shard_group": { }
}
]
}Get the latest epoch checkpoint
| shard | integer <int32> >= 0 The latest checkpoint of the shard group containing this shard |
| include_committees | boolean Include the next epoch's committee for the shard group containing |
{- "checkpoint": {
- "checkpoint": "string",
- "epoch": 0,
- "next_epoch_committee": { },
- "next_epoch_validator_set_hash": "string",
- "shard_group": { }
}
}Get this indexer's own configuration, as far as it affects what its API returns. Every field is local to the node answering the request - two indexers on the same network can disagree on all of them.
{- "current_epoch": 0,
- "event_retention_epochs": 0,
- "index_gossiped_transactions": true,
- "indexes_all_events": true,
- "network": "string",
- "network_byte": 0,
- "sidechain_id": "string",
- "substate_cache_max_serve_lag_secs": 0,
- "transaction_receipt_retention_epochs": 0,
- "transaction_retention_epochs": 0,
- "verify_substate_proofs": true,
- "version": "string"
}Get network-wide TARI economic totals (claimed, burned, fee volume, supply, fees claimable by validators, target rate and the rate changes scheduled ahead)
{- "burn_rate_retired_from": 0,
- "current_epoch": 0,
- "fee_volume": "string",
- "receipt_exhaust_burned": "string",
- "scheduled_burn_rates": [
- {
- "activation_epoch": 0,
- "rate_bps": 0
}
], - "target_burn_rate_bps": 0,
- "total_claimed": "string",
- "total_exhaust_burned": "string",
- "total_supply": "string",
- "transaction_receipt_count": 0,
- "validator_claimable_fees": "string"
}{- "network_desc": {
- "epoch": 0,
- "num_preshards": "string",
- "shard_groups": [
- [
- { },
- 0
]
]
}, - "sync_progress": { },
- "validators": [
- {
- "peer_id": "string",
- "probe_error": { },
- "probed_at_unix_s": 0,
- "shard_group": { },
- "snapshot": { }
}
]
}{- "commit_proofs": {
- "property1": "string",
- "property2": "string"
}, - "proofs": {
- "property1": {
- "anchor": {
- "block_id": "string",
- "epoch": 0,
- "height": 0,
- "shard_group": { },
- "state_merkle_root": "string"
}, - "down_proof": "string",
- "value_hash_epoch": 0,
- "value_proof": "string"
}, - "property2": {
- "anchor": {
- "block_id": "string",
- "epoch": 0,
- "height": 0,
- "shard_group": { },
- "state_merkle_root": "string"
}, - "down_proof": "string",
- "value_hash_epoch": 0,
- "value_proof": "string"
}
}, - "substates": {
- "property1": { },
- "property2": { }
}
}Fetches a substate by ID
| substate_id required | string The substate ID to fetch |
| local_search_only required | boolean If true, only search local storage for the substate |
| version | integer <int64> >= 0 Minimum version of the substate to fetch |
| include_proof | boolean If true, include the proof the substate was verified with. A spent version named by |
{- "proof": { },
- "state": {
- "up": {
- "substate": { }
}
}, - "verified": true,
- "version": 0
}List templates discovered on the network via the template catalogue
| name_filter | string Substring filter on template name |
| limit | integer <int64> >= 0 Maximum entries to return (default: 20, max: 100) |
| after | string Cursor: return entries inserted after the row with this template address. Omit to start from the beginning |
{- "entries": [
- {
- "at_epoch": 0,
- "author_public_key": "string",
- "binary_hash": "string",
- "metadata_hash": "string",
- "template_address": "string",
- "template_name": "string"
}
]
}List recent transactions, newest first.
BEST EFFORT: this lists what this indexer happens to hold — transactions submitted through it, plus those it observed on the network gossip topic while it was running and subscribed. It is not a complete record of network activity and absence from this listing does not mean a transaction does not exist. An indexer misses a transaction if it was offline or still starting up when it was gossiped, if its inbound gossip queue was full, or if the transaction has since aged past its retention window (see transaction_retention_epochs on /info).
Transaction receipts are different: they are synced from network state rather than gossip, are complete from genesis back to the indexer's receipt retention window (see transaction_receipt_retention_epochs on /info), and are recovered after downtime. A committed transaction whose gossip this indexer missed therefore has a receipt but no entry here — list it from /transaction-receipts instead. Transactions that never committed (mempool-rejected, aborted or expired) never get a receipt, so gossip is the only source for them and coverage is best effort with no fallback.
{- "transactions": [
- {
- "created_at": "2019-08-24T14:15:22Z",
- "rejected_reason": "string",
- "source": "local",
- "summary": { },
- "transaction": { },
- "transaction_id": "string"
}
]
}Get a transaction (including its instructions, fee instructions and signatures) by transaction ID.
BEST EFFORT: this reads the indexer's local transaction store, which holds transactions submitted through this indexer and — when gossip indexing is enabled, see index_gossiped_transactions on /info — those it observed on the network gossip topic. A 404 means this indexer has no body for the transaction, not that the transaction does not exist: it may have been gossiped while the indexer was offline, dropped from a full inbound queue, or pruned once past its retention window.
Two endpoints answer authoritatively where this one cannot. /transactions/{transaction_id}/result queries the transaction's committee, so it resolves the outcome of any transaction regardless of where it was submitted. /transaction-receipts is synced from network state rather than gossip and is complete back to its retention window (see transaction_receipt_retention_epochs on /info), which is longer than the transaction one, so a committed transaction always has a receipt there even when its body is missing here.
{- "transaction": {
- "created_at": "2019-08-24T14:15:22Z",
- "rejected_reason": "string",
- "source": "local",
- "summary": { },
- "transaction": { },
- "transaction_id": "string"
}
}Get the result of a submitted transaction (by transaction ID)
| transaction_id required | string The transaction ID |
| include_proof | boolean If true, a committed transaction's result includes its receipt and the proof that the receipt was committed |
{- "receipt": { },
- "result": { }
}SSE stream of template-emitted transaction events. Supports catch-up via the after_id query parameter or Last-Event-ID header.
| topic | string Filter by event topic |
| substate_id | string Filter by substate ID |
| template_address | string Filter by template address |
| resource_address | string Filter by resource address. Matches only std.resource.* events, which carry the resource as their substate_id. Vault events name no resource: filter those by substate_id (the vault ID) |
| after_id | integer <int64> Resume from this event ID (exclusive) |
Gets full UTXO data for a list of UTXO IDs
| resource_address required | string |
required | Array of items |
{- "resource_address": "string",
- "tag_and_nonce_pairs": [
- [
- 0,
- "string"
]
]
}{- "utxos": [
- [
- "string",
- { }
]
]
}Streams UTXO updates
| from_epoch | integer <int64> >= 0 |
| per_shard_limit required | integer <int32> >= 0 The number of UTXO rows to read per shard in this pass, from 1 to 1000. |
| resource_address required | string |
required | Array of items |
| unspent_only | boolean |
{- "from_epoch": 0,
- "per_shard_limit": 0,
- "resource_address": "string",
- "shard_state_versions": [
- 0,
- 0
], - "unspent_only": true
}{- "error": "string"
}Get the validator roster for an epoch as tracked by the epoch manager
| epoch | integer <int64> >= 0 Epoch to fetch the roster for. Defaults to the current epoch |
{- "epoch": 0,
- "validators": [
- {
- "end_epoch": 0,
- "fee_claim_public_key": "string",
- "peer_id": "string",
- "public_key": "string",
- "shard_group": { },
- "start_epoch": 0,
- "vote_power": 0
}
]
}