openapi: "3.0.2" info: title: Namada Interface Indexer REST Api version: "2.4.4" description: "Set of API to interact with a namada indexer." contact: email: hello@heliax.dev url: https://github.com/anoma/namada-indexer servers: - url: http://localhost:5001 - url: https://indexer.namada.tududes.com paths: /health: get: responses: "200": description: Health check content: application/json: schema: type: object properties: commit: type: string version: type: string /api/v1/ibc/rate-limits: get: summary: Get the rate limits of IBC tokens parameters: - in: query name: tokenAddress schema: type: integer minimum: 0 description: Optional address of the token to query - in: query name: throughputLimit schema: type: integer minimum: 0 description: Optional throughput limit to filter with responses: "200": description: List of IBC tokens and their rate limits content: application/json: schema: type: array items: $ref: "#/components/schemas/IbcRateLimit" /api/v1/ibc/token-flows: get: summary: Get the withdraw and deposit rates of IBC tokens parameters: - in: query name: tokenAddress schema: type: integer minimum: 0 description: Optional address of the token to query responses: "200": description: List of IBC tokens and their withdraw and deposit rates content: application/json: schema: type: array items: $ref: "#/components/schemas/IbcTokenFlow" /api/v1/ibc/token-throughput/{address}: get: summary: Get the throughput of the given IBC token parameters: - in: path name: address schema: type: string required: true description: The address of the IBC token responses: "200": description: The throughput of the queried IBC token content: application/json: schema: $ref: "#/components/schemas/IbcTokenThroughput" /api/v1/pos/validator: get: summary: Get all validators, paginated parameters: - in: query name: page schema: type: integer minimum: 1 description: Pagination parameter - in: query name: state schema: type: array items: $ref: "#/components/schemas/ValidatorStatus" description: Validator status parameter - in: query name: sortField schema: type: string enum: [votingPower, commission, rank] description: Sort field - in: query name: sortOrder schema: type: string enum: [asc, desc] description: Sort order - ignored if sortField is not provided responses: "200": description: A list of validator. content: application/json: schema: type: object required: [results, pagination] properties: results: type: array items: $ref: "#/components/schemas/Validator" pagination: $ref: "#/components/schemas/Pagination" /api/v1/pos/validator/all: get: summary: Get all validators, non paginated parameters: - in: query name: state schema: type: array items: $ref: "#/components/schemas/ValidatorStatus" description: Validator status parameter responses: "200": description: A list of validator. content: application/json: schema: type: array items: $ref: "#/components/schemas/Validator" /api/v1/pos/reward/{address}: get: summary: Get all the rewards for an address parameters: - in: path name: address schema: type: string required: true description: The delegator address responses: "200": description: A list of rewards. content: application/json: schema: type: array items: $ref: "#/components/schemas/Reward" /api/v1/pos/bond/{address}: get: summary: Get all the bonds for an address parameters: - in: path name: address schema: type: string required: true description: The delegator address - in: query name: page schema: type: integer minimum: 1 description: Pagination parameter - in: query name: activeAt schema: type: integer minimum: 0 description: Get all bonds that are active at this epoch responses: "200": description: A list of bonds. content: application/json: schema: type: object required: [results, pagination] properties: results: type: array items: $ref: "#/components/schemas/Bond" pagination: $ref: "#/components/schemas/Pagination" /api/v1/pos/merged-bonds/{address}: get: summary: Get all the bonds for an address, with merged amounts, regardless of the status parameters: - in: path name: address schema: type: string required: true description: The delegator address - in: query name: page schema: type: integer minimum: 1 description: Pagination parameter responses: "200": description: A list of bonds. content: application/json: schema: type: object required: [results, pagination] properties: results: type: array items: $ref: "#/components/schemas/MergedBond" pagination: $ref: "#/components/schemas/Pagination" /api/v1/pos/unbond/{address}: get: summary: Get all the unbonds for an an address parameters: - in: path name: address schema: type: string required: true description: The delegator address - in: query name: page schema: type: integer minimum: 1 description: Pagination parameter - in: query name: activeAt schema: type: integer minimum: 0 description: Get all unbonds that are active at this epoch( < ) responses: "200": description: A list of unbonds. content: application/json: schema: type: object required: [results, pagination] properties: results: type: array items: $ref: "#/components/schemas/Unbond" pagination: $ref: "#/components/schemas/Pagination" /api/v1/pos/merged-unbonds/{address}: get: summary: Get all the unbonds for an an address with merged withdraw amounts parameters: - in: path name: address schema: type: string required: true description: The delegator address - in: query name: page schema: type: integer minimum: 1 description: Pagination parameter responses: "200": description: A list of unbonds. content: application/json: schema: type: object required: [results, pagination] properties: results: type: array items: $ref: "#/components/schemas/Unbond" pagination: $ref: "#/components/schemas/Pagination" /api/v1/pos/withdraw/{address}: get: summary: Get all the withdraws for an address at a specific epoch parameters: - in: path name: address schema: type: string required: true description: The delegator address - in: query name: epoch schema: type: integer description: The epoch - in: query name: page schema: type: integer minimum: 1 description: Pagination parameter responses: "200": description: A list of withdraws. content: application/json: schema: type: object required: [results, pagination] properties: results: type: array items: $ref: "#/components/schemas/Withdraw" pagination: $ref: "#/components/schemas/Pagination" /api/v1/pos/voting-power: get: summary: Get the total voting power responses: "200": description: The total voting power. content: application/json: schema: $ref: "#/components/schemas/VotingPower" /api/v1/gov/proposal: get: summary: Get a list of governance proposals parameters: - in: query name: page schema: type: integer minimum: 1 description: Pagination parameter - in: query name: status schema: type: string enum: [pending, votingPeriod, passed, rejected, executedPassed, executedRejected] description: The status of the proposal - in: query name: kind schema: type: string enum: [default, defaultWithWasm, pgfSteward, pgfFunding] description: The status of the proposal - in: query name: pattern schema: type: string description: The status of the proposal responses: "200": description: A list of governance proposal. content: application/json: schema: type: object required: [results, pagination] properties: results: type: array items: $ref: "#/components/schemas/Proposal" pagination: $ref: "#/components/schemas/Pagination" /api/v1/gov/proposal/all: get: summary: Get a list of all governance proposals parameters: - in: query name: status schema: type: string enum: [pending, votingPeriod, passed, rejected, executedPassed, executedRejected] description: The status of the proposal - in: query name: kind schema: type: string enum: [default, defaultWithWasm, pgfSteward, pgfFunding] description: The status of the proposal - in: query name: pattern schema: type: string description: The status of the proposal responses: "200": description: A list of governance proposals. content: application/json: schema: type: array items: $ref: "#/components/schemas/Proposal" /api/v1/gov/proposal/{id}: get: summary: Get a governance proposal by proposal id parameters: - in: path name: id schema: type: integer minimum: 0 required: true description: Proposal id responses: "200": description: A Governance proposal. content: application/json: schema: $ref: "#/components/schemas/Proposal" /api/v1/gov/proposal/{id}/data: get: summary: Get a governance proposal data by proposal id parameters: - in: path name: id schema: type: integer minimum: 0 required: true description: Proposal id responses: '200': description: A Governance proposal data. /api/v1/gov/proposal/{id}/votes: get: summary: Get all the votes for a governance proposal parameters: - in: path name: id schema: type: integer minimum: 1 required: true description: Proposal id responses: "200": description: A list of votes for a governance proposal. content: application/json: schema: type: object required: [results, pagination] properties: results: type: array items: $ref: "#/components/schemas/Vote" pagination: $ref: "#/components/schemas/Pagination" /api/v1/gov/proposal/{id}/votes/{address}: get: summary: Get all the votes for a governance proposal from an address parameters: - in: path name: id schema: type: integer minimum: 1 required: true description: Proposal id - in: path name: address schema: type: string required: true description: The voter address responses: "200": description: A list of votes. content: application/json: schema: type: array items: $ref: "#/components/schemas/Vote" /api/v1/gov/voter/{address}/votes: get: summary: Get all the votes from a voter parameters: - in: path name: address schema: type: string required: true description: The voter address responses: "200": description: A list of votes. content: application/json: schema: type: array items: $ref: "#/components/schemas/Vote" /api/v1/account/{address}: get: summary: Get the all the tokens balances of an address parameters: - in: path name: address schema: type: string required: true description: The address account responses: "200": description: A List of balances. content: application/json: schema: type: array items: $ref: "#/components/schemas/Balance" /api/v1/revealed-public-key/{address}: get: summary: Get revealed public key for an address if exists parameters: - in: path name: address schema: type: string required: true description: The address account responses: "200": description: Revealed public key. content: application/json: schema: $ref: "#/components/schemas/RevealedPk" /api/v1/masp/aggregates: get: summary: Get inflows and outflows from/to the MASP pool responses: "200": description: Get the inflows and outflows from/to the MASP pool content: application/json: schema: $ref: "#/components/schemas/MaspPoolAggregateResponse" /api/v1/gas-price: get: summary: Get all the gas prices responses: "200": description: Gas price table content: application/json: schema: $ref: "#/components/schemas/GasPriceTable" /api/v1/gas-price/{token}: get: parameters: - in: path name: token schema: type: string required: true description: The gas token. summary: Get the gas price per token type responses: "200": description: Gas price table content: application/json: schema: $ref: "#/components/schemas/GasPriceTable" /api/v1/gas/estimate: get: summary: Get an estimate for a transaction parameters: - in: query name: bond schema: type: integer minimum: 1 maximum: 100 - in: query name: claim_rewards schema: type: integer minimum: 1 maximum: 100 - in: query name: unbond schema: type: integer minimum: 1 maximum: 100 - in: query name: transparent_transfer schema: type: integer minimum: 1 maximum: 100 - in: query name: shielded_transfer schema: type: integer minimum: 1 maximum: 100 - in: query name: shielding_transfer schema: type: integer minimum: 1 maximum: 100 - in: query name: unshielding_transfer schema: type: integer minimum: 1 maximum: 100 - in: query name: vote schema: type: integer minimum: 1 maximum: 100 - in: query name: ibc_unshielding_transfer schema: type: integer minimum: 1 maximum: 100 - in: query name: ibc_shielding_transfer schema: type: integer minimum: 1 maximum: 100 - in: query name: ibc_transparent_transfer schema: type: integer minimum: 1 maximum: 100 - in: query name: withdraw schema: type: integer minimum: 1 maximum: 100 - in: query name: reveal_pk schema: type: integer minimum: 1 maximum: 100 - in: query name: redelegate schema: type: integer minimum: 1 maximum: 100 - in: query name: signatures schema: type: integer minimum: 1 maximum: 20 - in: query name: tx_size schema: type: integer minimum: 1 responses: "200": description: A gas estimate. content: application/json: schema: $ref: "#/components/schemas/GasEstimate" /api/v1/chain/token: get: summary: Get chain tokens responses: "200": description: Chain tokens content: application/json: schema: type: array items: oneOf: - $ref: "#/components/schemas/NativeToken" - $ref: "#/components/schemas/IbcToken" examples: native: summary: An example of native token value: - address: tnam1qqg0jc68dx69d7klxg6n39qtcc6qnhc93senzthk] ibc: summary: An example of ibc token value: - address: tnam1pkg30gnt4q0zn7j00r6hms4ajrxn6f5ysyyl7w9m trace: transfer/channel-2/uatom /api/v1/chain/token-supply: get: summary: Get the supply of some token at the given epoch parameters: - in: query name: address schema: type: string required: true description: Address of the token - in: query name: epoch schema: type: integer minimum: 0 description: Epoch to query responses: "200": description: Chain token supply content: application/json: schema: $ref: "#/components/schemas/TokenSupply" /api/v1/chain/parameters: get: summary: Get chain parameters responses: "200": description: Chain parameters content: application/json: schema: $ref: "#/components/schemas/Parameters" /api/v1/chain/rpc-url: get: summary: Get rpc url that indexer connects to responses: "200": description: Rpc url content: application/json: schema: $ref: "#/components/schemas/RpcUrl" /api/v1/chain/block/latest: get: summary: Get the latest block processed by the chain crawler responses: "200": description: Block height content: application/json: schema: type: object required: [height] properties: height: type: string /api/v1/chain/epoch/latest: get: summary: Get the latest epoch processed by the chain crawler responses: "200": description: Epoch content: application/json: schema: type: object required: [epoch] properties: height: type: string /api/v1/chain/wrapper/{tx_id}: get: summary: Get the wrapper transaction by hash parameters: - in: path name: tx_id schema: type: string required: true description: Tx id hash responses: "200": description: Wrapper transaction content: application/json: schema: $ref: "#/components/schemas/WrapperTransaction" /api/v1/chain/inner/{tx_id}: get: summary: Get the inner transaction by hash parameters: - in: path name: tx_id schema: type: string required: true description: Tx id hash responses: "200": description: Inner transaction content: application/json: schema: $ref: "#/components/schemas/InnerTransaction" /api/v1/ibc/{tx_id}/status: get: summary: Get the status of an IBC transfer by tx id parameters: - in: path name: tx_id schema: type: string required: true description: Tx id hash responses: "200": description: Status of the IBC transfer content: application/json: schema: type: object properties: status: type: string enum: [unknown, timeout, success, fail] /api/v1/block/height/{value}: get: summary: Get the block by height parameters: - in: path name: value schema: type: number required: true description: Block height responses: "200": description: Block info content: application/json: schema: $ref: "#/components/schemas/Block" /api/v1/block/timestamp/{value}: get: summary: Get the block by timestamp parameters: - in: path name: value schema: type: number required: true description: Block timestamp responses: "200": description: Block info content: application/json: schema: $ref: "#/components/schemas/Block" /api/v1/crawlers/timestamps: get: summary: Get timestamps of the last activity of the crawlers parameters: - in: query name: crawler_names schema: type: array items: type: string enum: [chain, governance, parameters, pos, rewards, transactions] description: The crawler names responses: "200": description: Inner transaction content: application/json: schema: type: array items: type: object required: [name, timestamp] properties: name: type: string enum: [ chain, governance, parameters, pos, rewards, transactions, ] timestamp: type: number last_processed_block_height: type: number /api/v1/chain/history: get: summary: Get a paginated list of transaction for a list of addresses parameters: - in: query name: addresses schema: type: array items: type: string minItems: 1 maxItems: 10 description: The list of address. Must contain at least 1 element responses: "200": description: Pagined historic transaction list. content: application/json: schema: type: object required: [results, pagination] properties: results: type: array items: $ref: "#/components/schemas/TransactionHistory" pagination: $ref: "#/components/schemas/Pagination" components: schemas: Validator: type: object required: [ validatorId, address, name, votingPower, maxCommission, commission, state, ] properties: validatorId: type: string rank: type: number address: type: string votingPower: type: string maxCommission: type: string commission: type: string name: type: string email: type: string website: type: string description: type: string discordHandle: type: string avatar: type: string state: $ref: "#/components/schemas/ValidatorStatus" ValidatorStatus: type: string enum: [ consensus, belowCapacity, belowThreshold, inactive, jailed, unknown, unjailing, deactivating, reactivating, ] Proposal: type: object required: [ id, content, type, author, startEpoch, endEpoch, activationEpoch, startTime, endTime, currentTime, activationTime, status, yayVotes, nayVotes, abstainVotes, tallyType, ] properties: id: type: string content: type: string type: type: string enum: [default, defaultWithWasm, pgfSteward, pgfFunding] tallyType: type: string enum: [twoFifths, oneHalfOverOneThird, lessOneHalfOverOneThirdNay] data: type: string author: type: string startEpoch: type: string endEpoch: type: string activationEpoch: type: string startTime: type: string endTime: type: string currentTime: type: string activationTime: type: string status: type: string enum: [pending, voting, passed, rejected, executedPassed, executedRejected] yayVotes: type: string nayVotes: type: string abstainVotes: type: string Vote: type: object required: [proposalId, vote, voterAddress] properties: proposalId: type: string vote: type: string enum: [yay, nay, abstain, unknown] voterAddress: type: string Reward: type: object properties: validator: $ref: "#/components/schemas/Validator" minDenomAmount: type: string format: float minimum: 0 Bond: type: object required: [validator, minDenomAmount, status, startEpoch] properties: validator: $ref: "#/components/schemas/Validator" minDenomAmount: type: string status: type: string enum: [active, inactive] startEpoch: type: string RedelegationInfo: type: object required: [earliest_redelegation_epoch, earliest_redelegation_time] properties: earliest_redelegation_epoch: type: string earliest_redelegation_time: type: string MergedBond: type: object required: [validator, minDenomAmount] properties: validator: $ref: "#/components/schemas/Validator" minDenomAmount: type: string redelegationInfo: $ref: '#/components/schemas/RedelegationInfo' Unbond: type: object required: [validator, minDenomAmount, withdrawEpoch, withdrawTime, canWithdraw] properties: validator: $ref: "#/components/schemas/Validator" minDenomAmount: type: string withdrawEpoch: type: string withdrawTime: type: string canWithdraw: type: boolean Withdraw: type: object required: [minDenomAmount, withdrawEpoch] properties: validator: $ref: "#/components/schemas/Validator" minDenomAmount: type: string format: float minimum: 0 withdrawEpoch: type: string VotingPower: type: object required: [totalVotingPower] properties: totalVotingPower: type: string Balance: type: object required: [tokenAddress, minDenomAmount] properties: tokenAddress: type: string minDenomAmount: type: string MaspPoolAggregateResponse: type: object required: [tokenAddress, timeWindow, kind, totalAmount] properties: tokenAddress: type: string timeWindow: type: string enum: [oneDay, sevenDays, thirtyDays, allTime] kind: type: string enum: [inflows, outflows] totalAmount: type: string Pagination: type: object properties: page: type: string minimum: 0 perPage: type: string minimum: 0 totalPages: type: string minimum: 0 totalItems: type: string minimum: 0 RevealedPk: type: object properties: publicKey: type: string GasPriceTable: type: array items: type: object required: [token, minDenomAmount] properties: token: type: string minDenomAmount: type: string GasEstimate: type: object required: [min, max, avg, totalEstimates] properties: min: type: number max: type: number avg: type: number totalEstimates: type: number NativeToken: type: object required: [address] properties: address: type: string IbcToken: type: object required: [address, trace] properties: address: type: string trace: type: string TokenSupply: type: object required: [ address, totalSupply, ] properties: address: type: string totalSupply: type: string effectiveSupply: type: string Parameters: type: object required: [ unbondingLength, pipelineLength, epochsPerYear, apr, nativeTokenAddress, chainId, genesisTime, minDuration, minNumOfBlocks, maxBlockTime, checksums, epochSwitchBlocksDelay, cubicSlashingWindowLength, duplicateVoteMinSlashRate, lightClientAttackMinSlashRate, ] properties: unbondingLength: type: string pipelineLength: type: string epochsPerYear: type: string apr: type: string nativeTokenAddress: type: string chainId: type: string genesisTime: type: string minDuration: type: string minNumOfBlocks: type: string maxBlockTime: type: string checksums: type: object additionalProperties: type: string epochSwitchBlocksDelay: type: string cubicSlashingWindowLength: type: string duplicateVoteMinSlashRate: type: string lightClientAttackMinSlashRate: type: string RpcUrl: type: object required: [url] properties: url: type: string WrapperTransaction: type: object required: [ txId, feePayer, feeToken, gasLimit, blockHeight, innerTransactions, exitCode, atomic, ] properties: txId: type: string feePayer: type: string feeToken: type: string gasLimit: type: number amountPerGasUnit: type: number format: float gasUsed: type: number blockHeight: type: string innerTransactions: type: array items: type: object required: [txId, kind, exitCode] properties: txId: type: string kind: type: string enum: [ "transparentTransfer", "shieldedTransfer", "shieldingTransfer", "unshieldingTransfer", "bond", "redelegation", "unbond", "withdraw", "claimRewards", "voteProposal", "initProposal", "changeMetadata", "changeCommission", "revealPk", "deactivateValidator", "reactivateValidator", "unjailValidator", "unknown", ] exitCode: type: string enum: [applied, rejected] memo: type: string data: type: string exitCode: type: string enum: [applied, rejected] atomic: type: boolean InnerTransaction: type: object required: [txId, kind, wrapperId, exitCode] properties: txId: type: string wrapperId: type: string kind: type: string enum: [ "transparentTransfer", "shieldedTransfer", "shieldingTransfer", "unshieldingTransfer", "bond", "redelegation", "unbond", "withdraw", "claimRewards", "voteProposal", "initProposal", "changeMetadata", "changeCommission", "revealPk", "unknown", ] exitCode: type: string enum: [applied, rejected] memo: type: string data: type: string Block: type: object required: [height] properties: height: type: string hash: type: string appHash: type: string timestamp: type: string proposer: type: string transactions: type: array items: type: string parentHash: type: string epoch: type: string TransactionHistory: type: object required: [txId, kind, wrapperId, exitCode] properties: tx: type: object required: [txId, kind, wrapperId, exitCode] properties: txId: type: string wrapperId: type: string kind: type: string enum: [ "transparentTransfer", "shieldedTransfer", "shieldingTransfer", "unshieldingTransfer", "bond", "redelegation", "unbond", "withdraw", "claimRewards", "voteProposal", "initProposal", "changeMetadata", "changeCommission", "revealPk", "unknown", ] exitCode: type: string enum: [applied, rejected] memo: type: string data: type: string target: type: string kind: type: string enum: [received, sent] block_height: type: string IbcRateLimit: type: object required: [tokenAddress, throughputLimit] properties: tokenAddress: type: string throughputLimit: type: string IbcTokenFlow: type: object required: [tokenAddress, withdraw, deposit] properties: tokenAddress: type: string withdraw: type: string deposit: type: string IbcTokenThroughput: type: object required: [throughput, limit] properties: throughput: type: string limit: type: string