You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

3037 lines
92 KiB

openapi: 3.0.0
info:
title: Tendermint RPC
contact:
name: Tendermint RPC
url: https://github.com/tendermint/tendermint/issues/new/choose
description: |
Tendermint supports the following RPC protocols:
* URI over HTTP
* JSONRPC over HTTP
* JSONRPC over websockets
## Configuration
RPC can be configured by tuning parameters under `[rpc]` table in the
`$TMHOME/config/config.toml` file or by using the `--rpc.X` command-line
flags.
Default rpc listen address is `tcp://0.0.0.0:26657`.
To set another address, set the `laddr` config parameter to desired value.
CORS (Cross-Origin Resource Sharing) can be enabled by setting
`cors_allowed_origins`, `cors_allowed_methods`, `cors_allowed_headers`
config parameters.
## Arguments
Arguments which expect strings or byte arrays may be passed as quoted
strings, like `"abc"` or as `0x`-prefixed strings, like `0x616263`.
## URI/HTTP
A REST like interface.
curl localhost:26657/block?height=5
## JSONRPC/HTTP
JSONRPC requests can be POST'd to the root RPC endpoint via HTTP.
curl --header "Content-Type: application/json" --request POST --data '{"method": "block", "params": ["5"], "id": 1}' localhost:26657
## JSONRPC/websockets
JSONRPC requests can be also made via websocket.
The websocket endpoint is at `/websocket`, e.g. `localhost:26657/websocket`.
Asynchronous RPC functions like event `subscribe` and `unsubscribe` are
only available via websockets.
Example using https://github.com/hashrocket/ws:
ws ws://localhost:26657/websocket
> { "jsonrpc": "2.0", "method": "subscribe", "params": ["tm.event='NewBlock'"], "id": 1 }
version: "Master"
license:
name: Apache 2.0
url: https://github.com/tendermint/tendermint/blob/master/LICENSE
servers:
- url: https://rpc.cosmos.network
description: Cosmos mainnet node to interact with the Tendermint RPC
- url: http://localhost:26657
description: Interact with the Tendermint RPC locally on your device
tags:
- name: Websocket
description: Subscribe/unsubscribe are reserved for websocket events.
- name: Info
description: Informations about the node APIs
- name: Tx
description: Transactions broadcast APIs
- name: ABCI
description: ABCI APIs
- name: Evidence
description: Evidence APIs
- name: Unsafe
description: Unsafe APIs
paths:
/broadcast_tx_sync:
get:
summary: Returns with the response from CheckTx. Does not wait for DeliverTx result.
tags:
- Tx
operationId: broadcast_tx_sync
description: |
If you want to be sure that the transaction is included in a block, you can
subscribe for the result using JSONRPC via a websocket. See
https://docs.tendermint.com/master/app-dev/subscribing-to-events-via-websocket.html
If you haven't received anything after a couple of blocks, resend it. If the
same happens again, send it to some other node. A few reasons why it could
happen:
1. malicious node can drop or pretend it had committed your tx
2. malicious proposer (not necessary the one you're communicating with) can
drop transactions, which might become valid in the future
(https://github.com/tendermint/tendermint/issues/3322)
Please refer to
https://docs.tendermint.com/master/tendermint-core/using-tendermint.html#formatting
for formatting/encoding rules.
parameters:
- in: query
name: tx
required: true
schema:
type: string
example: "456"
description: The transaction
responses:
"200":
description: Empty
content:
application/json:
schema:
$ref: "#/components/schemas/BroadcastTxResponse"
"500":
description: Error
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
/broadcast_tx_async:
get:
summary: Returns right away, with no response. Does not wait for CheckTx nor DeliverTx results.
tags:
- Tx
operationId: broadcast_tx_async
description: |
If you want to be sure that the transaction is included in a block, you can
subscribe for the result using JSONRPC via a websocket. See
https://docs.tendermint.com/master/app-dev/subscribing-to-events-via-websocket.html
If you haven't received anything after a couple of blocks, resend it. If the
same happens again, send it to some other node. A few reasons why it could
happen:
1. malicious node can drop or pretend it had committed your tx
2. malicious proposer (not necessary the one you're communicating with) can
drop transactions, which might become valid in the future
(https://github.com/tendermint/tendermint/issues/3322)
3. node can be offline
Please refer to
https://docs.tendermint.com/master/tendermint-core/using-tendermint.html#formatting
for formatting/encoding rules.
parameters:
- in: query
name: tx
required: true
schema:
type: string
example: "123"
description: The transaction
responses:
"200":
description: empty answer
content:
application/json:
schema:
$ref: "#/components/schemas/BroadcastTxResponse"
"500":
description: empty error
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
/broadcast_tx_commit:
get:
summary: Returns with the responses from CheckTx and DeliverTx.
tags:
- Tx
operationId: broadcast_tx_commit
description: |
IMPORTANT: use only for testing and development. In production, use
BroadcastTxSync or BroadcastTxAsync. You can subscribe for the transaction
result using JSONRPC via a websocket. See
https://docs.tendermint.com/master/app-dev/subscribing-to-events-via-websocket.html
CONTRACT: only returns error if mempool.CheckTx() errs or if we timeout
waiting for tx to commit.
If CheckTx or DeliverTx fail, no error will be returned, but the returned result
will contain a non-OK ABCI code.
Please refer to
https://docs.tendermint.com/master/tendermint-core/using-tendermint.html#formatting
for formatting/encoding rules.
parameters:
- in: query
name: tx
required: true
schema:
type: string
example: "785"
description: The transaction
responses:
"200":
description: empty answer
content:
application/json:
schema:
$ref: "#/components/schemas/BroadcastTxCommitResponse"
"500":
description: empty error
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
/check_tx:
get:
summary: Checks the transaction without executing it.
tags:
- Tx
operationId: check_tx
description: |
The transaction won't be added to the mempool.
Please refer to
https://docs.tendermint.com/master/tendermint-core/using-tendermint.html#formatting
for formatting/encoding rules.
parameters:
- in: query
name: tx
required: true
schema:
type: string
example: "785"
description: The transaction
responses:
"200":
description: ABCI application's CheckTx response
content:
application/json:
schema:
$ref: "#/components/schemas/CheckTxResponse"
"500":
description: empty error
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
/subscribe:
get:
summary: Subscribe for events via WebSocket.
tags:
- Websocket
operationId: subscribe
description: |
To tell which events you want, you need to provide a query. query is a
string, which has a form: "condition AND condition ..." (no OR at the
moment). condition has a form: "key operation operand". key is a string with
a restricted set of possible symbols ( \t\n\r\\()"'=>< are not allowed).
operation can be "=", "<", "<=", ">", ">=", "CONTAINS" AND "EXISTS". operand
can be a string (escaped with single quotes), number, date or time.
Examples:
tm.event = 'NewBlock' # new blocks
tm.event = 'CompleteProposal' # node got a complete proposal
tm.event = 'Tx' AND tx.hash = 'XYZ' # single transaction
tm.event = 'Tx' AND tx.height = 5 # all txs of the fifth block
tx.height = 5 # all txs of the fifth block
Tendermint provides a few predefined keys: tm.event, tx.hash and tx.height.
Note for transactions, you can define additional keys by providing events with
DeliverTx response.
import (
abci "github.com/tendermint/tendermint/abci/types"
"github.com/tendermint/tendermint/libs/pubsub/query"
)
abci.ResponseDeliverTx{
Events: []abci.Event{
{
Type: "rewards.withdraw",
Attributes: abci.EventAttribute{
{Key: []byte("address"), Value: []byte("AddrA"), Index: true},
{Key: []byte("source"), Value: []byte("SrcX"), Index: true},
{Key: []byte("amount"), Value: []byte("..."), Index: true},
{Key: []byte("balance"), Value: []byte("..."), Index: true},
},
},
{
Type: "rewards.withdraw",
Attributes: abci.EventAttribute{
{Key: []byte("address"), Value: []byte("AddrB"), Index: true},
{Key: []byte("source"), Value: []byte("SrcY"), Index: true},
{Key: []byte("amount"), Value: []byte("..."), Index: true},
{Key: []byte("balance"), Value: []byte("..."), Index: true},
},
},
{
Type: "transfer",
Attributes: abci.EventAttribute{
{Key: []byte("sender"), Value: []byte("AddrC"), Index: true},
{Key: []byte("recipient"), Value: []byte("AddrD"), Index: true},
{Key: []byte("amount"), Value: []byte("..."), Index: true},
},
},
},
}
All events are indexed by a composite key of the form {eventType}.{evenAttrKey}.
In the above examples, the following keys would be indexed:
- rewards.withdraw.address
- rewards.withdraw.source
- rewards.withdraw.amount
- rewards.withdraw.balance
- transfer.sender
- transfer.recipient
- transfer.amount
Multiple event types with duplicate keys are allowed and are meant to
categorize unique and distinct events. In the above example, all events
indexed under the key `rewards.withdraw.address` will have the following
values stored and queryable:
- AddrA
- AddrB
To create a query for txs where address AddrA withdrew rewards:
query.MustParse("tm.event = 'Tx' AND rewards.withdraw.address = 'AddrA'")
To create a query for txs where address AddrA withdrew rewards from source Y:
query.MustParse("tm.event = 'Tx' AND rewards.withdraw.address = 'AddrA' AND rewards.withdraw.source = 'Y'")
To create a query for txs where AddrA transferred funds:
query.MustParse("tm.event = 'Tx' AND transfer.sender = 'AddrA'")
The following queries would return no results:
query.MustParse("tm.event = 'Tx' AND transfer.sender = 'AddrZ'")
query.MustParse("tm.event = 'Tx' AND rewards.withdraw.address = 'AddrZ'")
query.MustParse("tm.event = 'Tx' AND rewards.withdraw.source = 'W'")
See list of all possible events here
https://godoc.org/github.com/tendermint/tendermint/types#pkg-constants
For complete query syntax, check out
https://godoc.org/github.com/tendermint/tendermint/libs/pubsub/query.
```go
import rpchttp "github.com/tendermint/rpc/client/http"
import "github.com/tendermint/tendermint/types"
client := rpchttp.New("tcp://0.0.0.0:26657")
err := client.Start()
if err != nil {
handle error
}
defer client.Stop()
ctx, cancel := context.WithTimeout(context.Background(), 1 * time.Second)
defer cancel()
query := "tm.event = 'Tx' AND tx.height = 3"
txs, err := client.Subscribe(ctx, "test-client", query)
if err != nil {
handle error
}
go func() {
for e := range txs {
fmt.Println("got ", e.Data.(types.EventDataTx))
}
}()
```
NOTE: if you're not reading events fast enough, Tendermint might
terminate the subscription.
parameters:
- in: query
name: query
required: true
schema:
type: string
example: tm.event = 'Tx' AND tx.height = 5
description: |
query is a string, which has a form: "condition AND condition ..." (no OR at the
moment). condition has a form: "key operation operand". key is a string with
a restricted set of possible symbols ( \t\n\r\\()"'=>< are not allowed).
operation can be "=", "<", "<=", ">", ">=", "CONTAINS". operand can be a
string (escaped with single quotes), number, date or time.
responses:
"200":
description: empty answer
content:
application/json:
schema:
$ref: "#/components/schemas/EmptyResponse"
"500":
description: empty error
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
/unsubscribe:
get:
summary: Unsubscribe from event on Websocket
tags:
- Websocket
operationId: unsubscribe
description: |
```go
client := rpchttp.New("tcp://0.0.0.0:26657")
err := client.Start()
if err != nil {
handle error
}
defer client.Stop()
query := "tm.event = 'Tx' AND tx.height = 3"
err = client.Unsubscribe(context.Background(), "test-client", query)
if err != nil {
handle error
}
```
parameters:
- in: query
name: query
required: true
schema:
type: string
example: tm.event = 'Tx' AND tx.height = 5
description: |
query is a string, which has a form: "condition AND condition ..." (no OR at the
moment). condition has a form: "key operation operand". key is a string with
a restricted set of possible symbols ( \t\n\r\\()"'=>< are not allowed).
operation can be "=", "<", "<=", ">", ">=", "CONTAINS". operand can be a
string (escaped with single quotes), number, date or time.
responses:
"200":
description: Answer
content:
application/json:
schema:
$ref: "#/components/schemas/EmptyResponse"
"500":
description: Error
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
/unsubscribe_all:
get:
summary: Unsubscribe from all events via WebSocket
tags:
- Websocket
operationId: unsubscribe_all
description: |
Unsubscribe from all events via WebSocket
responses:
"200":
description: empty answer
content:
application/json:
schema:
$ref: "#/components/schemas/EmptyResponse"
"500":
description: empty error
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
/health:
get:
summary: Node heartbeat
tags:
- Info
operationId: health
description: |
Get node health. Returns empty result (200 OK) on success, no response - in case of an error.
responses:
"200":
description: Gets Node Health
content:
application/json:
schema:
$ref: "#/components/schemas/EmptyResponse"
"500":
description: empty error
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
/status:
get:
summary: Node Status
operationId: status
tags:
- Info
description: |
Get Tendermint status including node info, pubkey, latest block hash, app hash, block height, current max peer height, and time.
responses:
"200":
description: Status of the node
content:
application/json:
schema:
$ref: "#/components/schemas/StatusResponse"
"500":
description: empty error
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
/net_info:
get:
summary: Network informations
operationId: net_info
tags:
- Info
description: |
Get network info.
responses:
"200":
description: empty answer
content:
application/json:
schema:
$ref: "#/components/schemas/NetInfoResponse"
"500":
description: empty error
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
/dial_seeds:
get:
summary: Dial Seeds (Unsafe)
operationId: dial_seeds
tags:
- Unsafe
description: |
Dial a peer, this route in under unsafe, and has to manually enabled to use
**Example:** curl 'localhost:26657/dial_seeds?seeds=\["f9baeaa15fedf5e1ef7448dd60f46c01f1a9e9c4@1.2.3.4:26656","0491d373a8e0fcf1023aaf18c51d6a1d0d4f31bd@5.6.7.8:26656"\]'
parameters:
- in: query
name: peers
description: list of seed nodes to dial
schema:
type: array
items:
type: string
example: "f9baeaa15fedf5e1ef7448dd60f46c01f1a9e9c4@1.2.3.4:26656"
responses:
"200":
description: Dialing seeds in progress. See /net_info for details
content:
application/json:
schema:
$ref: "#/components/schemas/dialResp"
"500":
description: empty error
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
/dial_peers:
get:
summary: Add Peers/Persistent Peers (unsafe)
operationId: dial_peers
tags:
- Unsafe
description: |
Set a persistent peer, this route in under unsafe, and has to manually enabled to use.
**Example:** curl 'localhost:26657/dial_peers?peers=\["f9baeaa15fedf5e1ef7448dd60f46c01f1a9e9c4@1.2.3.4:26656","0491d373a8e0fcf1023aaf18c51d6a1d0d4f31bd@5.6.7.8:26656"\]&persistent=false'
parameters:
- in: query
name: persistent
description: Have the peers you are dialing be persistent
schema:
type: boolean
example: true
- in: query
name: unconditional
description: Have the peers you are dialing be unconditional
schema:
type: boolean
example: true
- in: query
name: private
description: Have the peers you are dialing be private
schema:
type: boolean
example: true
- in: query
name: peers
description: array of peers to dial
schema:
type: array
items:
type: string
example: "f9baeaa15fedf5e1ef7448dd60f46c01f1a9e9c4@1.2.3.4:26656"
responses:
"200":
description: Dialing seeds in progress. See /net_info for details
content:
application/json:
schema:
$ref: "#/components/schemas/dialResp"
"500":
description: empty error
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
/blockchain:
get:
summary: "Get block headers (max: 20) for minHeight <= height <= maxHeight."
operationId: blockchain
parameters:
- in: query
name: minHeight
description: Minimum block height to return
schema:
type: integer
example: 1
- in: query
name: maxHeight
description: Maximum block height to return
schema:
type: integer
example: 2
tags:
- Info
description: |
Get block headers for minHeight <= height maxHeight.
If maxHeight does not yet exist, blocks up to the current height will
be returned. If minHeight does not exist (due to pruning), earliest
existing height will be used.
At most 20 items will be returned. Block headers are returned in
descending order (highest first).
responses:
"200":
description: Block headers, returned in descending order (highest first).
content:
application/json:
schema:
$ref: "#/components/schemas/BlockchainResponse"
"500":
description: Error
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
/block:
get:
summary: Get block at a specified height
operationId: block
parameters:
- in: query
name: height
schema:
type: integer
default: 0
example: 1
description: height to return. If no height is provided, it will fetch the latest block.
tags:
- Info
description: |
Get Block.
responses:
"200":
description: Block informations.
content:
application/json:
schema:
$ref: "#/components/schemas/BlockResponse"
"500":
description: Error
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
/block_by_hash:
get:
summary: Get block by hash
operationId: block_by_hash
parameters:
- in: query
name: hash
description: block hash
required: true
schema:
type: string
example: "0xD70952032620CC4E2737EB8AC379806359D8E0B17B0488F627997A0B043ABDED"
tags:
- Info
description: |
Get Block By Hash.
responses:
"200":
description: Block informations.
content:
application/json:
schema:
$ref: "#/components/schemas/BlockResponse"
"500":
description: Error
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
/block_results:
get:
summary: Get block results at a specified height
operationId: block_results
parameters:
- in: query
name: height
description: height to return. If no height is provided, it will fetch informations regarding the latest block.
schema:
type: integer
default: 0
example: 1
tags:
- Info
description: |
Get block_results.
responses:
"200":
description: Block results.
content:
application/json:
schema:
$ref: "#/components/schemas/BlockSearchResponse"
"500":
description: Error
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
/commit:
get:
summary: Get commit results at a specified height
operationId: commit
parameters:
- in: query
name: height
description: height to return. If no height is provided, it will fetch commit informations regarding the latest block.
schema:
type: integer
default: 0
example: 1
tags:
- Info
description: |
Get Commit.
responses:
"200":
description: |
Commit results.
canonical switches from false to true for block H once block H+1 has been committed. Until then it's subjective and only reflects what this node has seen so far.
content:
application/json:
schema:
$ref: "#/components/schemas/CommitResponse"
"500":
description: Error
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
/validators:
get:
summary: Get validator set at a specified height
operationId: validators
parameters:
- in: query
name: height
description: height to return. If no height is provided, it will fetch validator set which corresponds to the latest block.
schema:
type: integer
default: 0
example: 1
- in: query
name: page
description: "Page number (1-based)"
required: false
schema:
type: integer
default: 1
example: 1
- in: query
name: per_page
description: "Number of entries per page (max: 100)"
required: false
schema:
type: integer
example: 30
default: 30
tags:
- Info
description: |
Get Validators. Validators are sorted first by voting power (descending), then by address (ascending).
responses:
"200":
description: Commit results.
content:
application/json:
schema:
$ref: "#/components/schemas/ValidatorsResponse"
"500":
description: Error
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
/genesis:
get:
summary: Get Genesis
operationId: genesis
tags:
- Info
description: |
Get the genesis document.
responses:
"200":
description: Genesis results.
content:
application/json:
schema:
$ref: "#/components/schemas/GenesisResponse"
"500":
description: Error
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
/genesis_chunked:
get:
summary: Get Genesis in paginated chunks
operationId: genesis_chunked
tags:
- Info
description: |
Get genesis document in a paginated/chunked format to make it
easier to iterate through larger genesis structures.
parameters:
- in: query
name: chunkID
description: Sequence number of the chunk to download.
schema:
type: integer
default: 0
example: 1
responses:
"200":
description: Genesis results.
content:
application/json:
schema:
$ref: "#/components/schemas/GenesisChunkedResponse"
"500":
description: Error
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
/dump_consensus_state:
get:
summary: Get consensus state
operationId: dump_consensus_state
tags:
- Info
description: |
Get consensus state.
Not safe to call from inside the ABCI application during a block execution.
responses:
"200":
description: |
Complete consensus state.
See https://pkg.go.dev/github.com/tendermint/tendermint/types?tab=doc#Vote.String for Vote string description.
content:
application/json:
schema:
$ref: "#/components/schemas/DumpConsensusResponse"
"500":
description: Error
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
/consensus_state:
get:
summary: Get consensus state
operationId: consensus_state
tags:
- Info
description: |
Get consensus state.
Not safe to call from inside the ABCI application during a block execution.
responses:
"200":
description: consensus state results.
content:
application/json:
schema:
$ref: "#/components/schemas/ConsensusStateResponse"
"500":
description: Error
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
/consensus_params:
get:
summary: Get consensus parameters
operationId: consensus_params
parameters:
- in: query
name: height
description: height to return. If no height is provided, it will fetch commit informations regarding the latest block.
schema:
type: integer
default: 0
example: 1
tags:
- Info
description: |
Get consensus parameters.
responses:
"200":
description: consensus parameters results.
content:
application/json:
schema:
$ref: "#/components/schemas/ConsensusParamsResponse"
"500":
description: Error
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
/unconfirmed_txs:
get:
summary: Get the list of unconfirmed transactions
operationId: unconfirmed_txs
parameters:
- in: query
name: limit
description: Maximum number of unconfirmed transactions to return (max 100)
required: false
schema:
type: integer
default: 30
example: 1
tags:
- Info
description: |
Get list of unconfirmed transactions
responses:
"200":
description: List of unconfirmed transactions
content:
application/json:
schema:
$ref: "#/components/schemas/UnconfirmedTransactionsResponse"
"500":
description: Error
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
/num_unconfirmed_txs:
get:
summary: Get data about unconfirmed transactions
operationId: num_unconfirmed_txs
tags:
- Info
description: |
Get data about unconfirmed transactions
responses:
"200":
description: status about unconfirmed transactions
content:
application/json:
schema:
$ref: "#/components/schemas/NumUnconfirmedTransactionsResponse"
"500":
description: Error
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
/tx_search:
get:
summary: Search for transactions
description: |
Search for transactions w/ their results.
See /subscribe for the query syntax.
operationId: tx_search
parameters:
- in: query
name: query
description: Query
required: true
schema:
type: string
example: "tx.height=1000"
- in: query
name: prove
description: Include proofs of the transactions inclusion in the block
required: false
schema:
type: boolean
default: false
example: true
- in: query
name: page
description: "Page number (1-based)"
required: false
schema:
type: integer
default: 1
example: 1
- in: query
name: per_page
description: "Number of entries per page (max: 100)"
required: false
schema:
type: integer
default: 30
example: 30
- in: query
name: order_by
description: Order in which transactions are sorted ("asc" or "desc"), by height & index. If empty, default sorting will be still applied.
required: false
schema:
type: string
default: "desc"
example: "asc"
tags:
- Info
responses:
"200":
description: List of unconfirmed transactions
content:
application/json:
schema:
$ref: "#/components/schemas/TxSearchResponse"
"500":
description: Error
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
/block_search:
get:
summary: Search for blocks by BeginBlock and EndBlock events
description: |
Search for blocks by BeginBlock and EndBlock events.
See /subscribe for the query syntax.
operationId: block_search
parameters:
- in: query
name: query
description: Query
required: true
schema:
type: string
example: "block.height > 1000 AND valset.changed > 0"
- in: query
name: page
description: "Page number (1-based)"
required: false
schema:
type: integer
default: 1
example: 1
- in: query
name: per_page
description: "Number of entries per page (max: 100)"
required: false
schema:
type: integer
default: 30
example: 30
- in: query
name: order_by
description: Order in which blocks are sorted ("asc" or "desc"), by height. If empty, default sorting will be still applied.
required: false
schema:
type: string
default: "desc"
example: "asc"
tags:
- Info
responses:
"200":
description: List of paginated blocks matching the search criteria.
content:
application/json:
schema:
$ref: "#/components/schemas/BlockResultsResponse"
"500":
description: Error
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
/tx:
get:
summary: Get transactions by hash
operationId: tx
parameters:
- in: query
name: hash
description: transaction Hash to retrive
required: true
schema:
type: string
example: "0xD70952032620CC4E2737EB8AC379806359D8E0B17B0488F627997A0B043ABDED"
- in: query
name: prove
description: Include proofs of the transactions inclusion in the block
required: false
schema:
type: boolean
example: true
default: false
tags:
- Info
description: |
Get a trasasction
responses:
"200":
description: Get a transaction`
content:
application/json:
schema:
$ref: "#/components/schemas/TxResponse"
"500":
description: Error
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
/abci_info:
get:
summary: Get some info about the application.
operationId: abci_info
tags:
- ABCI
description: |
Get some info about the application.
responses:
"200":
description: Get some info about the application.
content:
application/json:
schema:
$ref: "#/components/schemas/ABCIInfoResponse"
"500":
description: Error
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
/abci_query:
get:
summary: Query the application for some information.
operationId: abci_query
parameters:
- in: query
name: path
description: Path to the data ("/a/b/c")
required: true
schema:
type: string
example: "/a/b/c"
- in: query
name: data
description: Data
required: true
schema:
type: string
example: "IHAVENOIDEA"
- in: query
name: height
description: Height (0 means latest)
required: false
schema:
type: integer
example: 1
default: 0
- in: query
name: prove
description: Include proofs of the transactions inclusion in the block
required: false
schema:
type: boolean
example: true
default: false
tags:
- ABCI
description: |
Query the application for some information.
responses:
"200":
description: Response of the submitted query
content:
application/json:
schema:
$ref: "#/components/schemas/ABCIQueryResponse"
"500":
description: Error
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
/broadcast_evidence:
get:
summary: Broadcast evidence of the misbehavior.
operationId: broadcast_evidence
parameters:
- in: query
name: evidence
description: JSON evidence
required: true
schema:
type: string
example: "JSON_EVIDENCE_encoded"
tags:
- Evidence
description: |
Broadcast evidence of the misbehavior.
responses:
"200":
description: Broadcast evidence of the misbehavior.
content:
application/json:
schema:
$ref: "#/components/schemas/BroadcastEvidenceResponse"
"500":
description: Error
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
components:
schemas:
JSONRPC:
type: object
properties:
id:
type: integer
example: 0
jsonrpc:
type: string
example: "2.0"
EmptyResponse:
description: Empty Response
allOf:
- $ref: "#/components/schemas/JSONRPC"
- type: object
properties:
result:
type: object
additionalProperties: {}
ErrorResponse:
description: Error Response
allOf:
- $ref: "#/components/schemas/JSONRPC"
- type: object
properties:
error:
type: string
example: "Description of failure"
ProtocolVersion:
type: object
properties:
p2p:
type: string
example: "7"
block:
type: string
example: "10"
app:
type: string
example: "0"
PubKey:
type: object
properties:
type:
type: string
example: "tendermint/PubKeyEd25519"
value:
type: string
example: "A6DoBUypNtUAyEHWtQ9bFjfNg8Bo9CrnkUGl6k6OHN4="
NodeInfo:
type: object
properties:
protocol_version:
$ref: "#/components/schemas/ProtocolVersion"
id:
type: string
example: "5576458aef205977e18fd50b274e9b5d9014525a"
listen_addr:
type: string
example: "tcp://0.0.0.0:26656"
network:
type: string
example: "cosmoshub-2"
version:
type: string
example: "0.32.1"
channels:
type: string
example: "4020212223303800"
moniker:
type: string
example: "moniker-node"
other:
type: object
properties:
tx_index:
type: string
example: "on"
rpc_address:
type: string
example: "tcp://0.0.0.0:26657"
SyncInfo:
type: object
properties:
latest_block_hash:
type: string
example: "790BA84C3545FCCC49A5C629CEE6EA58A6E875C3862175BDC11EE7AF54703501"
latest_app_hash:
type: string
example: "C9AEBB441B787D9F1D846DE51F3826F4FD386108B59B08239653ABF59455C3F8"
latest_block_height:
type: string
example: "1262196"
latest_block_time:
type: string
example: "2019-08-01T11:52:22.818762194Z"
earliest_block_hash:
type: string
example: "790BA84C3545FCCC49A5C629CEE6EA58A6E875C3862175BDC11EE7AF54703501"
earliest_app_hash:
type: string
example: "C9AEBB441B787D9F1D846DE51F3826F4FD386108B59B08239653ABF59455C3F8"
earliest_block_height:
type: string
example: "1262196"
earliest_block_time:
type: string
example: "2019-08-01T11:52:22.818762194Z"
max_peer_block_height:
type: string
example: "1262196"
catching_up:
type: boolean
example: false
total_synced_time:
type: string
example: "1000000000"
remaining_time:
type: string
example: "0"
ValidatorInfo:
type: object
properties:
address:
type: string
example: "5D6A51A8E9899C44079C6AF90618BA0369070E6E"
pub_key:
$ref: "#/components/schemas/PubKey"
voting_power:
type: string
example: "0"
Status:
description: Status Response
type: object
properties:
node_info:
$ref: "#/components/schemas/NodeInfo"
sync_info:
$ref: "#/components/schemas/SyncInfo"
validator_info:
$ref: "#/components/schemas/ValidatorInfo"
StatusResponse:
description: Status Response
allOf:
- $ref: "#/components/schemas/JSONRPC"
- type: object
properties:
result:
$ref: "#/components/schemas/Status"
Monitor:
type: object
properties:
Active:
type: boolean
example: true
Start:
type: string
example: "2019-07-31T14:31:28.66Z"
Duration:
type: string
example: "168901060000000"
Idle:
type: string
example: "168901040000000"
Bytes:
type: string
example: "5"
Samples:
type: string
example: "1"
InstRate:
type: string
example: "0"
CurRate:
type: string
example: "0"
AvgRate:
type: string
example: "0"
PeakRate:
type: string
example: "0"
BytesRem:
type: string
example: "0"
TimeRem:
type: string
example: "0"
Progress:
type: integer
example: 0
Channel:
type: object
properties:
ID:
type: integer
example: 48
SendQueueCapacity:
type: string
example: "1"
SendQueueSize:
type: string
example: "0"
Priority:
type: string
example: "5"
RecentlySent:
type: string
example: "0"
ConnectionStatus:
type: object
properties:
Duration:
type: string
example: "168901057956119"
SendMonitor:
$ref: "#/components/schemas/Monitor"
RecvMonitor:
$ref: "#/components/schemas/Monitor"
Channels:
type: array
items:
$ref: "#/components/schemas/Channel"
Peer:
type: object
properties:
node_info:
$ref: "#/components/schemas/NodeInfo"
is_outbound:
type: boolean
example: true
connection_status:
$ref: "#/components/schemas/ConnectionStatus"
remote_ip:
type: string
example: "95.179.155.35"
NetInfo:
type: object
properties:
listening:
type: boolean
example: true
listeners:
type: array
items:
type: string
example: "Listener(@)"
n_peers:
type: string
example: "1"
peers:
type: array
items:
$ref: "#/components/schemas/Peer"
NetInfoResponse:
description: NetInfo Response
allOf:
- $ref: "#/components/schemas/JSONRPC"
- type: object
properties:
result:
$ref: "#/components/schemas/NetInfo"
BlockMeta:
type: object
properties:
block_id:
$ref: "#/components/schemas/BlockID"
block_size:
type: integer
example: 1000000
header:
$ref: "#/components/schemas/BlockHeader"
num_txs:
type: string
example: "54"
Blockchain:
type: object
required:
- "last_height"
- "block_metas"
properties:
last_height:
type: string
example: "1276718"
block_metas:
type: array
items:
$ref: "#/components/schemas/BlockMeta"
BlockchainResponse:
description: Blockchain info
allOf:
- $ref: "#/components/schemas/JSONRPC"
- type: object
properties:
result:
$ref: "#/components/schemas/Blockchain"
Commit:
required:
- "type"
- "height"
- "round"
- "block_id"
- "timestamp"
- "validator_address"
- "validator_index"
- "signature"
properties:
type:
type: integer
example: 2
height:
type: string
example: "1262085"
round:
type: integer
example: 0
block_id:
$ref: "#/components/schemas/BlockID"
timestamp:
type: string
example: "2019-08-01T11:39:38.867269833Z"
validator_address:
type: string
example: "000001E443FD237E4B616E2FA69DF4EE3D49A94F"
validator_index:
type: integer
example: 0
signature:
type: string
example: "DBchvucTzAUEJnGYpNvMdqLhBAHG4Px8BsOBB3J3mAFCLGeuG7uJqy+nVngKzZdPhPi8RhmE/xcw/M9DOJjEDg=="
Block:
type: object
properties:
header:
$ref: "#/components/schemas/BlockHeader"
data:
type: array
items:
type: string
example: "yQHwYl3uCkKoo2GaChRnd+THLQ2RM87nEZrE19910Z28ABIUWW/t8AtIMwcyU0sT32RcMDI9GF0aEAoFdWF0b20SBzEwMDAwMDASEwoNCgV1YXRvbRIEMzEwMRCd8gEaagom61rphyEDoJPxlcjRoNDtZ9xMdvs+lRzFaHe2dl2P5R2yVCWrsHISQKkqX5H1zXAIJuC57yw0Yb03Fwy75VRip0ZBtLiYsUqkOsPUoQZAhDNP+6LY+RUwz/nVzedkF0S29NZ32QXdGv0="
evidence:
type: array
items:
$ref: "#/components/schemas/Evidence"
last_commit:
type: object
properties:
height:
type: integer
round:
type: integer
block_id:
$ref: "#/components/schemas/BlockID"
signatures:
type: array
items:
$ref: "#/components/schemas/Commit"
Evidence:
type: object
properties:
type:
type: string
height:
type: integer
time:
type: integer
total_voting_power:
type: integer
validator:
$ref: "#/components/schemas/Validator"
BlockComplete:
type: object
properties:
block_id:
$ref: "#/components/schemas/BlockID"
block:
$ref: "#/components/schemas/Block"
BlockResponse:
description: Blockc info
allOf:
- $ref: "#/components/schemas/JSONRPC"
- type: object
properties:
result:
$ref: "#/components/schemas/BlockComplete"
################## FROM NOW ON NEEDS REFACTOR ##################
BlockResultsResponse:
type: object
required:
- "jsonrpc"
- "id"
- "result"
properties:
jsonrpc:
type: string
example: "2.0"
id:
type: integer
example: 0
result:
type: object
required:
- "height"
properties:
height:
type: string
example: "12"
txs_results:
type: array
nullable: true
items:
type: object
properties:
code:
type: string
example: "0"
data:
type: string
example: ""
log:
type: string
example: "not enough gas"
info:
type: string
example: ""
gas_wanted:
type: string
example: "100"
gas_used:
type: string
example: "100"
events:
type: array
nullable: true
items:
type: object
properties:
type:
type: string
example: "app"
attributes:
type: array
nullable: false
items:
$ref: "#/components/schemas/Event"
codespace:
type: string
example: "ibc"
total_gas_used:
type: string
example: "100"
begin_block_events:
type: array
nullable: true
items:
type: object
properties:
type:
type: string
example: "app"
attributes:
type: array
nullable: false
items:
$ref: "#/components/schemas/Event"
end_block:
type: array
nullable: true
items:
type: object
properties:
type:
type: string
example: "app"
attributes:
type: array
nullable: false
items:
$ref: "#/components/schemas/Event"
validator_updates:
type: array
nullable: true
items:
type: object
properties:
pub_key:
type: object
required:
- "type"
- "value"
properties:
type:
type: string
example: "tendermint/PubKeyEd25519"
value:
type: string
example: "9tK9IT+FPdf2qm+5c2qaxi10sWP+3erWTKgftn2PaQM="
power:
type: string
example: "300"
consensus_params_updates:
$ref: "#/components/schemas/ConsensusParams"
CommitResponse:
type: object
required:
- "jsonrpc"
- "id"
- "result"
properties:
jsonrpc:
type: string
example: "2.0"
id:
type: integer
example: 0
result:
required:
- "signed_header"
- "canonical"
properties:
signed_header:
required:
- "header"
- "commit"
properties:
header:
$ref: "#/components/schemas/BlockHeader"
commit:
required:
- "height"
- "round"
- "block_id"
- "signatures"
properties:
height:
type: string
example: "1311801"
round:
type: integer
example: 0
block_id:
$ref: "#/components/schemas/BlockID"
signatures:
type: array
items:
type: object
properties:
block_id_flag:
type: integer
example: 2
validator_address:
type: string
example: "000001E443FD237E4B616E2FA69DF4EE3D49A94F"
timestamp:
type: string
example: "2019-04-22T17:01:58.376629719Z"
signature:
type: string
example: "14jaTQXYRt8kbLKEhdHq7AXycrFImiLuZx50uOjs2+Zv+2i7RTG/jnObD07Jo2ubZ8xd7bNBJMqkgtkd0oQHAw=="
type: object
type: object
canonical:
type: boolean
example: true
type: object
ValidatorsResponse:
type: object
required:
- "jsonrpc"
- "id"
- "result"
properties:
jsonrpc:
type: string
example: "2.0"
id:
type: integer
example: 0
result:
required:
- "block_height"
- "validators"
properties:
block_height:
type: string
example: "55"
validators:
type: array
items:
$ref: "#/components/schemas/ValidatorPriority"
count:
type: string
example: "1"
total:
type: string
example: "25"
type: object
GenesisResponse:
type: object
required:
- "jsonrpc"
- "id"
- "result"
properties:
jsonrpc:
type: string
example: "2.0"
id:
type: integer
example: 0
result:
type: object
required:
- "genesis"
properties:
genesis:
type: object
required:
- "genesis_time"
- "chain_id"
- "initial_height"
- "consensus_params"
- "validators"
- "app_hash"
properties:
genesis_time:
type: string
example: "2019-04-22T17:00:00Z"
chain_id:
type: string
example: "cosmoshub-2"
initial_height:
type: string
example: "2"
consensus_params:
$ref: "#/components/schemas/ConsensusParams"
validators:
type: array
items:
type: object
properties:
address:
type: string
example: "B00A6323737F321EB0B8D59C6FD497A14B60938A"
pub_key:
required:
- "type"
- "value"
properties:
type:
type: string
example: "tendermint/PubKeyEd25519"
value:
type: string
example: "cOQZvh/h9ZioSeUMZB/1Vy1Xo5x2sjrVjlE/qHnYifM="
type: object
power:
type: string
example: "9328525"
name:
type: string
example: "Certus One"
app_hash:
type: string
example: ""
app_state:
properties: {}
type: object
GenesisChunkedResponse:
type: object
required:
- "jsonrpc"
- "id"
- "result"
properties:
jsonrpc:
type: string
example: "2.0"
id:
type: integer
example: 0
result:
required:
- "chunk"
- "total"
- "data"
properties:
chunk:
type: integer
example: 0
total:
type: integer
example: 1
data:
type: string
example: "Z2VuZXNpcwo="
DumpConsensusResponse:
type: object
required:
- "jsonrpc"
- "id"
- "result"
properties:
jsonrpc:
type: string
example: "2.0"
id:
type: integer
example: 0
result:
required:
- "round_state"
- "peers"
properties:
round_state:
required:
- "height"
- "round"
- "step"
- "start_time"
- "commit_time"
- "validators"
- "proposal"
- "proposal_block"
- "proposal_block_parts"
- "locked_round"
- "locked_block"
- "locked_block_parts"
- "valid_round"
- "valid_block"
- "valid_block_parts"
- "votes"
- "commit_round"
- "last_commit"
- "last_validators"
- "triggered_timeout_precommit"
properties:
height:
type: string
example: "1311801"
round:
type: integer
example: 0
step:
type: integer
example: 3
start_time:
type: string
example: "2019-08-05T11:28:49.064658805Z"
commit_time:
type: string
example: "2019-08-05T11:28:44.064658805Z"
validators:
required:
- "validators"
- "proposer"
properties:
validators:
type: array
items:
$ref: "#/components/schemas/ValidatorPriority"
proposer:
$ref: "#/components/schemas/ValidatorPriority"
type: object
locked_round:
type: integer
example: -1
valid_round:
type: string
example: "-1"
votes:
type: array
items:
type: object
properties:
round:
type: string
example: "0"
prevotes:
type: array
nullable: true
items:
type: string
example:
- "nil-Vote"
- "Vote{19:46A3F8B8393B 1311801/00/1(Prevote) 000000000000 64CE682305CB @ 2019-08-05T11:28:47.374703444Z}"
prevotes_bit_array:
type: string
example: "BA{100:___________________x________________________________________________________________________________} 209706/170220253 = 0.00"
precommits:
type: array
nullable: true
items:
type: string
example:
- "nil-Vote"
precommits_bit_array:
type: string
example: "BA{100:____________________________________________________________________________________________________} 0/170220253 = 0.00"
commit_round:
type: integer
example: -1
last_commit:
nullable: true
required:
- "votes"
- "votes_bit_array"
- "peer_maj_23s"
properties:
votes:
type: array
items:
type: string
example:
- "Vote{0:000001E443FD 1311800/00/2(Precommit) 3071ADB27D1A 77EE1B6B6847 @ 2019-08-05T11:28:43.810128139Z}"
votes_bit_array:
type: string
example: "BA{100:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx} 170220253/170220253 = 1.00"
peer_maj_23s:
properties: {}
type: object
type: object
last_validators:
required:
- "validators"
- "proposer"
properties:
validators:
type: array
items:
$ref: "#/components/schemas/ValidatorPriority"
proposer:
$ref: "#/components/schemas/ValidatorPriority"
type: object
triggered_timeout_precommit:
type: boolean
example: false
type: object
peers:
type: array
items:
type: object
properties:
node_address:
type: string
example: "357f6a6c1d27414579a8185060aa8adf9815c43c@68.183.41.207:26656"
peer_state:
required:
- "round_state"
- "stats"
properties:
round_state:
required:
- "height"
- "round"
- "step"
- "start_time"
- "proposal"
- "proposal_block_parts_header"
- "proposal_block_parts"
- "proposal_pol_round"
- "proposal_pol"
- "prevotes"
- "precommits"
- "last_commit_round"
- "last_commit"
- "catchup_commit_round"
- "catchup_commit"
properties:
height:
type: string
example: "1311801"
round:
type: string
example: "0"
step:
type: integer
example: 3
start_time:
type: string
example: "2019-08-05T11:28:49.21730864Z"
proposal:
type: boolean
example: false
proposal_block_parts_header:
required:
- "total"
- "hash"
properties:
total:
type: integer
example: 0
hash:
type: string
example: ""
type: object
proposal_pol_round:
nullable: true
type: integer
example: -1
proposal_pol:
nullable: true
type: string
example: "____________________________________________________________________________________________________"
prevotes:
nullable: true
type: string
example: "___________________x________________________________________________________________________________"
precommits:
nullable: true
type: string
example: "____________________________________________________________________________________________________"
last_commit_round:
nullable: true
type: integer
example: 0
last_commit:
nullable: true
type: string
example: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
catchup_commit_round:
type: integer
nullable: true
example: -1
catchup_commit:
nullable: true
type: string
example: "____________________________________________________________________________________________________"
type: object
stats:
required:
- "votes"
- "block_parts"
properties:
votes:
type: string
example: "1159558"
block_parts:
type: string
example: "4786"
type: object
type: object
type: object
ConsensusStateResponse:
type: object
required:
- "jsonrpc"
- "id"
- "result"
properties:
jsonrpc:
type: string
example: "2.0"
id:
type: integer
example: 0
result:
required:
- "round_state"
properties:
round_state:
required:
- "height/round/step"
- "start_time"
- "proposal_block_hash"
- "locked_block_hash"
- "valid_block_hash"
- "height_vote_set"
- "proposer"
properties:
height/round/step:
type: string
example: "1262197/0/8"
start_time:
type: string
example: "2019-08-01T11:52:38.962730289Z"
proposal_block_hash:
type: string
example: "634ADAF1F402663BEC2ABC340ECE8B4B45AA906FA603272ACC5F5EED3097E009"
locked_block_hash:
type: string
example: "634ADAF1F402663BEC2ABC340ECE8B4B45AA906FA603272ACC5F5EED3097E009"
valid_block_hash:
type: string
example: "634ADAF1F402663BEC2ABC340ECE8B4B45AA906FA603272ACC5F5EED3097E009"
height_vote_set:
type: array
items:
type: object
properties:
round:
type: integer
example: 0
prevotes:
type: array
items:
type: string
example:
- "Vote{0:000001E443FD 1262197/00/1(Prevote) 634ADAF1F402 7BB974E1BA40 @ 2019-08-01T11:52:35.513572509Z}"
- "nil-Vote"
prevotes_bit_array:
type: string
example: "BA{100:xxxxxxxxxxxxxxxxx_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx} 169753436/170151262 = 1.00"
precommits:
type: array
items:
type: string
example:
- "Vote{5:18C78D135C9D 1262197/00/2(Precommit) 634ADAF1F402 8B5EFFFEABCD @ 2019-08-01T11:52:36.25600005Z}"
- "nil-Vote"
precommits_bit_array:
type: string
example: "BA{100:xxxxxx_xxxxx_xxxx_x_xxx_xx_xx_xx__x_x_x__xxxxxxxxxxxxxx_xxxx_xx_xxxxxx_xxxxxxxx_xxxx_xxx_x_xxxx__xxx} 118726247/170151262 = 0.70"
proposer:
type: object
properties:
address:
type: string
example: "D540AB022088612AC74B287D076DBFBC4A377A2E"
index:
type: integer
example: 0
type: object
type: object
ConsensusParamsResponse:
type: object
required:
- "jsonrpc"
- "id"
- "result"
properties:
jsonrpc:
type: string
example: "2.0"
id:
type: integer
example: 0
result:
type: object
required:
- "block_height"
- "consensus_params"
properties:
block_height:
type: string
example: "1"
consensus_params:
$ref: "#/components/schemas/ConsensusParams"
NumUnconfirmedTransactionsResponse:
type: object
required:
- "jsonrpc"
- "id"
- "result"
properties:
jsonrpc:
type: string
example: "2.0"
id:
type: integer
example: 0
result:
required:
- "n_txs"
- "total"
- "total_bytes"
properties:
n_txs:
type: string
example: "31"
total:
type: string
example: "82"
total_bytes:
type: string
example: "19974"
# txs:
# type: array
# nullable: true
# items:
# type: string
# nullable: true
# example:
# - "gAPwYl3uCjCMTXENChSMnIkb5ZpYHBKIZqecFEV2tuZr7xIUA75/FmYq9WymsOBJ0XSJ8yV8zmQKMIxNcQ0KFIyciRvlmlgcEohmp5wURXa25mvvEhQbrvwbvlNiT+Yjr86G+YQNx7kRVgowjE1xDQoUjJyJG+WaWBwSiGannBRFdrbma+8SFK2m+1oxgILuQLO55n8mWfnbIzyPCjCMTXENChSMnIkb5ZpYHBKIZqecFEV2tuZr7xIUQNGfkmhTNMis4j+dyMDIWXdIPiYKMIxNcQ0KFIyciRvlmlgcEohmp5wURXa25mvvEhS8sL0D0wwgGCItQwVowak5YB38KRIUCg4KBXVhdG9tEgUxMDA1NBDoxRgaagom61rphyECn8x7emhhKdRCB2io7aS/6Cpuq5NbVqbODmqOT3jWw6kSQKUresk+d+Gw0BhjiggTsu8+1voW+VlDCQ1GRYnMaFOHXhyFv7BCLhFWxLxHSAYT8a5XqoMayosZf9mANKdXArA="
type: object
UnconfirmedTransactionsResponse:
type: object
required:
- "jsonrpc"
- "id"
- "result"
properties:
jsonrpc:
type: string
example: "2.0"
id:
type: integer
example: 0
result:
required:
- "n_txs"
- "total"
- "total_bytes"
- "txs"
properties:
n_txs:
type: string
example: "82"
total:
type: string
example: "82"
total_bytes:
type: string
example: "19974"
txs:
type: array
nullable: true
items:
type: string
nullable: true
example:
- "gAPwYl3uCjCMTXENChSMnIkb5ZpYHBKIZqecFEV2tuZr7xIUA75/FmYq9WymsOBJ0XSJ8yV8zmQKMIxNcQ0KFIyciRvlmlgcEohmp5wURXa25mvvEhQbrvwbvlNiT+Yjr86G+YQNx7kRVgowjE1xDQoUjJyJG+WaWBwSiGannBRFdrbma+8SFK2m+1oxgILuQLO55n8mWfnbIzyPCjCMTXENChSMnIkb5ZpYHBKIZqecFEV2tuZr7xIUQNGfkmhTNMis4j+dyMDIWXdIPiYKMIxNcQ0KFIyciRvlmlgcEohmp5wURXa25mvvEhS8sL0D0wwgGCItQwVowak5YB38KRIUCg4KBXVhdG9tEgUxMDA1NBDoxRgaagom61rphyECn8x7emhhKdRCB2io7aS/6Cpuq5NbVqbODmqOT3jWw6kSQKUresk+d+Gw0BhjiggTsu8+1voW+VlDCQ1GRYnMaFOHXhyFv7BCLhFWxLxHSAYT8a5XqoMayosZf9mANKdXArA="
type: object
TxSearchResponse:
type: object
required:
- "jsonrpc"
- "id"
- "result"
properties:
jsonrpc:
type: string
example: "2.0"
id:
type: integer
example: 0
result:
required:
- "txs"
- "total_count"
properties:
txs:
type: array
items:
type: object
properties:
hash:
type: string
example: "D70952032620CC4E2737EB8AC379806359D8E0B17B0488F627997A0B043ABDED"
height:
type: string
example: "1000"
index:
type: integer
example: 0
tx_result:
required:
- "log"
- "gas_wanted"
- "gas_used"
- "tags"
properties:
log:
type: string
example: '[{"msg_index":"0","success":true,"log":""}]'
gas_wanted:
type: string
example: "200000"
gas_used:
type: string
example: "28596"
tags:
$ref: "#/components/schemas/Event"
type: object
tx:
type: string
example: "5wHwYl3uCkaoo2GaChQmSIu8hxpJxLcCuIi8fiHN4TMwrRIU/Af1cEG7Rcs/6LjTl7YjRSymJfYaFAoFdWF0b20SCzE0OTk5OTk1MDAwEhMKDQoFdWF0b20SBDUwMDAQwJoMGmoKJuta6YchAwswBShaB1wkZBctLIhYqBC3JrAI28XGzxP+rVEticGEEkAc+khTkKL9CDE47aDvjEHvUNt+izJfT4KVF2v2JkC+bmlH9K08q3PqHeMI9Z5up+XMusnTqlP985KF+SI5J3ZOIhhNYWRlIGJ5IENpcmNsZSB3aXRoIGxvdmU="
proof:
required:
- "RootHash"
- "Data"
- "Proof"
properties:
RootHash:
type: string
example: "72FE6BF6D4109105357AECE0A82E99D0F6288854D16D8767C5E72C57F876A14D"
Data:
type: string
example: "5wHwYl3uCkaoo2GaChQmSIu8hxpJxLcCuIi8fiHN4TMwrRIU/Af1cEG7Rcs/6LjTl7YjRSymJfYaFAoFdWF0b20SCzE0OTk5OTk1MDAwEhMKDQoFdWF0b20SBDUwMDAQwJoMGmoKJuta6YchAwswBShaB1wkZBctLIhYqBC3JrAI28XGzxP+rVEticGEEkAc+khTkKL9CDE47aDvjEHvUNt+izJfT4KVF2v2JkC+bmlH9K08q3PqHeMI9Z5up+XMusnTqlP985KF+SI5J3ZOIhhNYWRlIGJ5IENpcmNsZSB3aXRoIGxvdmU="
Proof:
required:
- "total"
- "index"
- "leaf_hash"
- "aunts"
properties:
total:
type: string
example: "2"
index:
type: string
example: "0"
leaf_hash:
type: string
example: "eoJxKCzF3m72Xiwb/Q43vJ37/2Sx8sfNS9JKJohlsYI="
aunts:
type: array
items:
type: string
example:
- "eWb+HG/eMmukrQj4vNGyFYb3nKQncAWacq4HF5eFzDY="
type: object
type: object
total_count:
type: string
example: "2"
type: object
TxResponse:
type: object
required:
- "jsonrpc"
- "id"
- "result"
properties:
jsonrpc:
type: string
example: "2.0"
id:
type: integer
example: 0
result:
required:
- "hash"
- "height"
- "index"
- "tx_result"
- "tx"
properties:
hash:
type: string
example: "D70952032620CC4E2737EB8AC379806359D8E0B17B0488F627997A0B043ABDED"
height:
type: string
example: "1000"
index:
type: integer
example: 0
tx_result:
required:
- "log"
- "gas_wanted"
- "gas_used"
- "tags"
properties:
log:
type: string
example: '[{"msg_index":"0","success":true,"log":""}]'
gas_wanted:
type: string
example: "200000"
gas_used:
type: string
example: "28596"
tags:
type: array
items:
$ref: "#/components/schemas/Event"
type: object
tx:
type: string
example: "5wHwYl3uCkaoo2GaChQmSIu8hxpJxLcCuIi8fiHN4TMwrRIU/Af1cEG7Rcs/6LjTl7YjRSymJfYaFAoFdWF0b20SCzE0OTk5OTk1MDAwEhMKDQoFdWF0b20SBDUwMDAQwJoMGmoKJuta6YchAwswBShaB1wkZBctLIhYqBC3JrAI28XGzxP+rVEticGEEkAc+khTkKL9CDE47aDvjEHvUNt+izJfT4KVF2v2JkC+bmlH9K08q3PqHeMI9Z5up+XMusnTqlP985KF+SI5J3ZOIhhNYWRlIGJ5IENpcmNsZSB3aXRoIGxvdmU="
type: object
ABCIInfoResponse:
type: object
required:
- "jsonrpc"
- "id"
properties:
jsonrpc:
type: string
example: "2.0"
id:
type: integer
example: 0
result:
required:
- "response"
properties:
response:
required:
- "data"
- "app_version"
- "version"
properties:
data:
type: string
example: '{"size":0}'
version:
type: string
example: "0.16.1"
app_version:
type: string
example: "1314126"
type: object
type: object
ABCIQueryResponse:
type: object
required:
- "error"
- "result"
- "id"
- "jsonrpc"
properties:
error:
type: string
example: ""
result:
required:
- "response"
properties:
response:
required:
- "log"
- "height"
- "proof"
- "value"
- "key"
- "index"
- "code"
properties:
log:
type: string
example: "exists"
height:
type: string
example: "0"
proof:
type: string
example: "010114FED0DAD959F36091AD761C922ABA3CBF1D8349990101020103011406AA2262E2F448242DF2C2607C3CDC705313EE3B0001149D16177BC71E445476174622EA559715C293740C"
value:
type: string
example: "61626364"
key:
type: string
example: "61626364"
index:
type: string
example: "-1"
code:
type: string
example: "0"
type: object
type: object
id:
type: integer
example: 0
jsonrpc:
type: string
example: "2.0"
BroadcastEvidenceResponse:
type: object
required:
- "id"
- "jsonrpc"
properties:
error:
type: string
example: ""
result:
type: string
example: ""
id:
type: integer
example: 0
jsonrpc:
type: string
example: "2.0"
BroadcastTxCommitResponse:
type: object
required:
- "error"
- "result"
- "id"
- "jsonrpc"
properties:
error:
type: string
example: ""
result:
required:
- "height"
- "hash"
- "deliver_tx"
- "check_tx"
properties:
height:
type: string
example: "26682"
hash:
type: string
example: "75CA0F856A4DA078FC4911580360E70CEFB2EBEE"
deliver_tx:
required:
- "log"
- "data"
- "code"
properties:
log:
type: string
example: ""
data:
type: string
example: ""
code:
type: string
example: "0"
type: object
check_tx:
required:
- "log"
- "data"
- "code"
properties:
log:
type: string
example: ""
data:
type: string
example: ""
code:
type: string
example: "0"
type: object
type: object
id:
type: integer
example: 0
jsonrpc:
type: string
example: "2.0"
CheckTxResponse:
type: object
required:
- "error"
- "result"
- "id"
- "jsonrpc"
properties:
error:
type: string
example: ""
result:
required:
- "log"
- "data"
- "code"
properties:
code:
type: string
example: "0"
data:
type: string
example: ""
log:
type: string
example: ""
info:
type: string
example: ""
gas_wanted:
type: string
example: "1"
gas_used:
type: string
example: "0"
events:
type: array
nullable: true
items:
type: object
properties:
type:
type: string
example: "app"
attributes:
type: array
nullable: false
items:
$ref: "#/components/schemas/Event"
codespace:
type: string
example: "bank"
type: object
id:
type: integer
example: 0
jsonrpc:
type: string
example: "2.0"
BroadcastTxResponse:
type: object
required:
- "jsonrpc"
- "id"
- "result"
- "error"
properties:
jsonrpc:
type: string
example: "2.0"
id:
type: integer
example: 0
result:
required:
- "code"
- "data"
- "log"
- "hash"
properties:
code:
type: string
example: "0"
data:
type: string
example: ""
log:
type: string
example: ""
codespace:
type: string
example: "ibc"
hash:
type: string
example: "0D33F2F03A5234F38706E43004489E061AC40A2E"
type: object
error:
type: string
example: ""
dialResp:
type: object
properties:
Log:
type: string
example: "Dialing seeds in progress. See /net_info for details"
BlockSearchResponse:
type: object
required:
- "jsonrpc"
- "id"
- "result"
properties:
jsonrpc:
type: string
example: "2.0"
id:
type: integer
example: 0
result:
required:
- "blocks"
- "total_count"
properties:
blocks:
type: array
items:
$ref: "#/components/schemas/BlockComplete"
total_count:
type: integer
example: 2
type: object
###### Reuseable types ######
# Validator type with proposer prioirty
ValidatorPriority:
type: object
properties:
address:
type: string
example: "000001E443FD237E4B616E2FA69DF4EE3D49A94F"
pub_key:
required:
- "type"
- "value"
properties:
type:
type: string
example: "tendermint/PubKeyEd25519"
value:
type: string
example: "9tK9IT+FPdf2qm+5c2qaxi10sWP+3erWTKgftn2PaQM="
type: object
voting_power:
type: string
example: "239727"
proposer_priority:
type: string
example: "-11896414"
# Stripped down validator
Validator:
type: object
properties:
pub_key:
$ref: "#/components/schemas/PubKey"
voting_power:
type: integer
address:
type: string
# Consensus Params
ConsensusParams:
type: object
nullable: true
required:
- "block"
- "evidence"
- "validator"
properties:
block:
type: object
required:
- "max_bytes"
- "max_gas"
- "time_iota_ms"
properties:
max_bytes:
type: string
example: "22020096"
max_gas:
type: string
example: "1000"
time_iota_ms:
type: string
example: "1000"
evidence:
type: object
required:
- "max_age"
properties:
max_age:
type: string
example: "100000"
validator:
type: object
required:
- "pub_key_types"
properties:
pub_key_types:
type: array
items:
type: string
example:
- "ed25519"
# Events in tendermint
Event:
type: object
properties:
key:
type: string
example: "YWN0aW9u"
value:
type: string
example: "c2VuZA=="
index:
type: boolean
example: false
# Block Header
BlockHeader:
required:
- "version"
- "chain_id"
- "height"
- "time"
- "last_block_id"
- "last_commit_hash"
- "data_hash"
- "validators_hash"
- "next_validators_hash"
- "consensus_hash"
- "app_hash"
- "last_results_hash"
- "evidence_hash"
- "proposer_address"
properties:
version:
required:
- "block"
- "app"
properties:
block:
type: string
example: "10"
app:
type: string
example: "0"
type: object
chain_id:
type: string
example: "cosmoshub-2"
height:
type: string
example: "12"
time:
type: string
example: "2019-04-22T17:01:51.701356223Z"
last_block_id:
$ref: "#/components/schemas/BlockID"
last_commit_hash:
type: string
example: "21B9BC845AD2CB2C4193CDD17BFC506F1EBE5A7402E84AD96E64171287A34812"
data_hash:
type: string
example: "970886F99E77ED0D60DA8FCE0447C2676E59F2F77302B0C4AA10E1D02F18EF73"
validators_hash:
type: string
example: "D658BFD100CA8025CFD3BECFE86194322731D387286FBD26E059115FD5F2BCA0"
next_validators_hash:
type: string
example: "D658BFD100CA8025CFD3BECFE86194322731D387286FBD26E059115FD5F2BCA0"
consensus_hash:
type: string
example: "0F2908883A105C793B74495EB7D6DF2EEA479ED7FC9349206A65CB0F9987A0B8"
app_hash:
type: string
example: "223BF64D4A01074DC523A80E76B9BBC786C791FB0A1893AC5B14866356FCFD6C"
last_results_hash:
type: string
example: ""
evidence_hash:
type: string
example: ""
proposer_address:
type: string
example: "D540AB022088612AC74B287D076DBFBC4A377A2E"
type: object
BlockID:
required:
- "hash"
- "parts"
properties:
hash:
type: string
example: "112BC173FD838FB68EB43476816CD7B4C6661B6884A9E357B417EE957E1CF8F7"
parts:
required:
- "total"
- "hash"
properties:
total:
type: integer
example: 1
hash:
type: string
example: "38D4B26B5B725C4F13571EFE022C030390E4C33C8CF6F88EDD142EA769642DBD"
type: object