937 lines
23 KiB
YAML
937 lines
23 KiB
YAML
swagger: '2.0'
|
|
info:
|
|
version: '1.1.0'
|
|
title: Gaia-Lite (former LCD) to interface with Cosmos BaseServer via REST
|
|
description: Specification for Gaia-lite provided by `gaiacli rest-server`
|
|
|
|
tags:
|
|
- name: keys
|
|
description: Key management to add or view local private keys
|
|
- name: send
|
|
description: Create and sign a send tx
|
|
- name: stake
|
|
description: Stake module API for staking and validation
|
|
- name: account
|
|
description: Query account balance
|
|
- name: query
|
|
description: Information about blocks and txs
|
|
- name: validator set
|
|
description: Check the state of the validator set
|
|
- name: node
|
|
description: Information of the connected node
|
|
- name: version
|
|
description: Information about the app version
|
|
|
|
|
|
securityDefinitions:
|
|
kms:
|
|
type: basic
|
|
|
|
paths:
|
|
/version:
|
|
get:
|
|
summary: Version of Gaia-lite
|
|
tags:
|
|
- version
|
|
description: Get the version of gaia-lite running locally to compare against expected
|
|
responses:
|
|
200:
|
|
description: Plaintext version i.e. "v0.5.0"
|
|
/node_version:
|
|
get:
|
|
summary: Version of the connected node
|
|
tags:
|
|
- node
|
|
description: Get the version of the SDK running on the connected node to compare against expected
|
|
responses:
|
|
200:
|
|
description: Plaintext version i.e. "v0.5.0"
|
|
/node_info:
|
|
get:
|
|
description: Information about the connected node
|
|
summary: The properties of the connected node
|
|
tags:
|
|
- node
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
200:
|
|
description: Node status
|
|
schema:
|
|
type: object
|
|
properties:
|
|
pub_key:
|
|
$ref: '#/definitions/PubKey'
|
|
moniker:
|
|
type: string
|
|
example: 159.89.198.221
|
|
network:
|
|
type: string
|
|
example: gaia-2
|
|
remote_addr:
|
|
type: string
|
|
listen_addr:
|
|
type: string
|
|
example: 192.168.56.1:26656
|
|
version:
|
|
description: Tendermint version
|
|
type: string
|
|
example: 0.15.0
|
|
other:
|
|
description: more information on versions
|
|
type: array
|
|
items:
|
|
type: string
|
|
/syncing:
|
|
get:
|
|
summary: Syncing state of node
|
|
tags:
|
|
- node
|
|
description: Get if the node is currently syning with other nodes
|
|
responses:
|
|
200:
|
|
description: '"true" or "false"'
|
|
|
|
/keys:
|
|
get:
|
|
summary: List of accounts stored locally
|
|
tags:
|
|
- keys
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
200:
|
|
description: Array of accounts
|
|
schema:
|
|
type: array
|
|
items:
|
|
$ref: '#/definitions/Account'
|
|
post:
|
|
summary: Create a new account locally
|
|
tags:
|
|
- keys
|
|
consumes:
|
|
- application/json
|
|
parameters:
|
|
- in: body
|
|
name: account
|
|
description: The account to create
|
|
schema:
|
|
type: object
|
|
required:
|
|
- name
|
|
- password
|
|
- seed
|
|
properties:
|
|
name:
|
|
type: string
|
|
password:
|
|
type: string
|
|
seed:
|
|
type: string
|
|
responses:
|
|
200:
|
|
description: Returns address of the account created
|
|
/keys/seed:
|
|
get:
|
|
summary: Create a new seed to create a new account with
|
|
tags:
|
|
- keys
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
200:
|
|
description: 16 word Seed
|
|
schema:
|
|
type: string
|
|
/keys/{name}:
|
|
parameters:
|
|
- in: path
|
|
name: name
|
|
description: Account name
|
|
required: true
|
|
type: string
|
|
get:
|
|
summary: Get a certain locally stored account
|
|
tags:
|
|
- keys
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
200:
|
|
description: Locally stored account
|
|
schema:
|
|
$ref: "#/definitions/Account"
|
|
404:
|
|
description: Account is not available
|
|
put:
|
|
summary: Update the password for this account in the KMS
|
|
tags:
|
|
- keys
|
|
consumes:
|
|
- application/json
|
|
parameters:
|
|
- in: body
|
|
name: account
|
|
description: The new and old password
|
|
schema:
|
|
type: object
|
|
required:
|
|
- new_password
|
|
- old_password
|
|
properties:
|
|
new_password:
|
|
type: string
|
|
old_password:
|
|
type: string
|
|
responses:
|
|
200:
|
|
description: Updated password
|
|
401:
|
|
description: Password is wrong
|
|
404:
|
|
description: Account is not available
|
|
delete:
|
|
summary: Remove an account
|
|
tags:
|
|
- keys
|
|
consumes:
|
|
- application/json
|
|
parameters:
|
|
- in: body
|
|
name: account
|
|
description: The password of the account to remove from the KMS
|
|
schema:
|
|
type: object
|
|
required:
|
|
- password
|
|
properties:
|
|
password:
|
|
type: string
|
|
responses:
|
|
200:
|
|
description: Removed account
|
|
401:
|
|
description: Password is wrong
|
|
404:
|
|
description: Account is not available
|
|
# /accounts/send:
|
|
# post:
|
|
# summary: Send coins (build -> sign -> send)
|
|
# security:
|
|
# - sign: []
|
|
# requestBody:
|
|
# content:
|
|
# application/json:
|
|
# schema:
|
|
# type: object
|
|
# properties:
|
|
# fees:
|
|
# $ref: "#/definitions/Coins"
|
|
# outputs:
|
|
# type: array
|
|
# items:
|
|
# type: object
|
|
# properties:
|
|
# pub_key:
|
|
# $ref: "#/definitions/PubKey"
|
|
# amount:
|
|
# type: array
|
|
# items:
|
|
# $ref: "#/definitions/Coins"
|
|
# responses:
|
|
# 202:
|
|
# description: Tx was send and will probably be added to the next block
|
|
# 400:
|
|
# description: The Tx was malformated
|
|
|
|
/accounts/{address}:
|
|
parameters:
|
|
- in: path
|
|
name: address
|
|
description: Account address in bech32 format
|
|
required: true
|
|
type: string
|
|
get:
|
|
summary: Get the account balances
|
|
tags:
|
|
- account
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
200:
|
|
description: Account balances
|
|
schema:
|
|
$ref: "#/definitions/Balance"
|
|
204:
|
|
description: There is no data for the requested account. This is not a 404 as the account might exist, just does not hold data.
|
|
/accounts/{address}/send:
|
|
parameters:
|
|
- in: path
|
|
name: address
|
|
description: Account address in bech32 format
|
|
required: true
|
|
type: string
|
|
post:
|
|
summary: Send coins (build -> sign -> send)
|
|
tags:
|
|
- send
|
|
security:
|
|
- kms: []
|
|
consumes:
|
|
- application/json
|
|
parameters:
|
|
- in: body
|
|
name: account
|
|
description: The password of the account to remove from the KMS
|
|
schema:
|
|
type: object
|
|
properties:
|
|
name:
|
|
type: string
|
|
password:
|
|
type: string
|
|
amount:
|
|
type: array
|
|
items:
|
|
$ref: "#/definitions/Coins"
|
|
chain_id:
|
|
type: string
|
|
squence:
|
|
type: number
|
|
responses:
|
|
202:
|
|
description: Tx was send and will probably be added to the next block
|
|
400:
|
|
description: The Tx was malformated
|
|
/blocks/latest:
|
|
get:
|
|
summary: Get the latest block
|
|
tags:
|
|
- query
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
200:
|
|
description: The latest block
|
|
schema:
|
|
$ref: "#/definitions/Block"
|
|
/blocks/{height}:
|
|
parameters:
|
|
- in: path
|
|
name: height
|
|
description: Block height
|
|
required: true
|
|
type: number
|
|
get:
|
|
summary: Get a block at a certain height
|
|
tags:
|
|
- query
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
200:
|
|
description: The block at a specific height
|
|
schema:
|
|
$ref: "#/definitions/Block"
|
|
404:
|
|
description: Block at height is not available
|
|
/validatorsets/latest:
|
|
get:
|
|
summary: Get the latest validator set
|
|
tags:
|
|
- validator set
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
200:
|
|
description: The validator set at the latest block height
|
|
schema:
|
|
type: object
|
|
properties:
|
|
block_height:
|
|
type: number
|
|
validators:
|
|
type: array
|
|
items:
|
|
$ref: "#/definitions/Validator"
|
|
/validatorsets/{height}:
|
|
parameters:
|
|
- in: path
|
|
name: height
|
|
description: Block height
|
|
required: true
|
|
type: number
|
|
get:
|
|
summary: Get a validator set a certain height
|
|
tags:
|
|
- validator set
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
200:
|
|
description: The validator set at a specific block height
|
|
schema:
|
|
type: object
|
|
properties:
|
|
block_height:
|
|
type: number
|
|
validators:
|
|
type: array
|
|
items:
|
|
$ref: "#/definitions/Validator"
|
|
404:
|
|
description: Block at height not available
|
|
# /txs:
|
|
# parameters:
|
|
# - in: query
|
|
# name: tag
|
|
# schema:
|
|
# type: string
|
|
# example: "coin.sender=EE5F3404034C524501629B56E0DDC38FAD651F04"
|
|
# required: true
|
|
# - in: query
|
|
# name: page
|
|
# description: Pagination page
|
|
# schema:
|
|
# type: number
|
|
# default: 0
|
|
# - in: query
|
|
# name: size
|
|
# description: Pagination size
|
|
# schema:
|
|
# type: number
|
|
# default: 50
|
|
# get:
|
|
# summary: Query Tx
|
|
# responses:
|
|
# 200:
|
|
# description: All Tx matching the provided tags
|
|
# content:
|
|
# application/json:
|
|
# schema:
|
|
# type: array
|
|
# items:
|
|
# $ref: "#/definitions/Tx"
|
|
# 404:
|
|
# description: Pagination is out of bounds
|
|
# /txs/sign:
|
|
# post:
|
|
# summary: Sign a Tx
|
|
# description: Sign a Tx providing locally stored account and according password
|
|
# security:
|
|
# - sign: []
|
|
# requestBody:
|
|
# content:
|
|
# application/json:
|
|
# schema:
|
|
# $ref: "#/definitions/TxBuild"
|
|
# responses:
|
|
# 200:
|
|
# description: The signed Tx
|
|
# content:
|
|
# application/json:
|
|
# schema:
|
|
# $ref: "#/definitions/TxSigned"
|
|
# 401:
|
|
# description: Account name and/or password where wrong
|
|
# /txs/broadcast:
|
|
# post:
|
|
# summary: Send signed Tx
|
|
# requestBody:
|
|
# content:
|
|
# application/json:
|
|
# schema:
|
|
# $ref: "#/definitions/TxSigned"
|
|
# responses:
|
|
# 202:
|
|
# description: Tx was send and will probably be added to the next block
|
|
# 400:
|
|
# description: The Tx was malformated
|
|
/txs/{hash}:
|
|
parameters:
|
|
- in: path
|
|
name: hash
|
|
description: Tx hash
|
|
required: true
|
|
type: string
|
|
get:
|
|
summary: Get a Tx by hash
|
|
tags:
|
|
- query
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
200:
|
|
description: Tx with the provided hash
|
|
schema:
|
|
$ref: "#/definitions/Tx"
|
|
404:
|
|
description: Tx not available for provided hash
|
|
|
|
# ================== Staking Module # ==================
|
|
|
|
# TODO create D
|
|
/stake/delegators/{delegatorAddr}:
|
|
parameters:
|
|
- in: path
|
|
name: delegatorAddr
|
|
description: AccAddress of Delegator
|
|
required: true
|
|
type: string
|
|
get:
|
|
summary: Get all delegations (delegation, undelegation) from a delegator
|
|
tags:
|
|
- stake
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
200:
|
|
description: OK
|
|
404:
|
|
description: Not Found
|
|
500:
|
|
description: Internal Server Error
|
|
|
|
/stake/delegators/{delegatorAddr}/validators:
|
|
parameters:
|
|
- in: path
|
|
name: delegatorAddr
|
|
description: Bech32 AccAddress of Delegator
|
|
required: true
|
|
type: string
|
|
get:
|
|
summary: Query all validators that a delegator is bonded to
|
|
tags:
|
|
- stake
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
200:
|
|
description: OK
|
|
404:
|
|
description: Not Found
|
|
|
|
/stake/delegators/{delegatorAddr}/validators/{validatorAddr}:
|
|
parameters:
|
|
- in: path
|
|
name: delegatorAddr
|
|
description: Bech32 AccAddress of Delegator
|
|
required: true
|
|
type: string
|
|
- in: path
|
|
name: validatorAddr
|
|
description: Bech32 ValAddress of Delegator
|
|
required: true
|
|
type: string
|
|
get:
|
|
summary: Query a validator that a delegator is bonded to
|
|
tags:
|
|
- stake
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
200:
|
|
description: OK
|
|
404:
|
|
description: Not Found
|
|
|
|
/stake/delegators/{delegatorAddr}/txs:
|
|
parameters:
|
|
- in: path
|
|
name: delegatorAddr
|
|
description: AccAddress of Delegator
|
|
required: true
|
|
type: string
|
|
get:
|
|
summary: Get all staking txs (i.e msgs) from a delegator
|
|
tags:
|
|
- stake
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
200:
|
|
description: OK
|
|
schema:
|
|
$ref: "#/definitions/Tx"
|
|
404:
|
|
description: Not Found
|
|
500:
|
|
description: Internal Server Error
|
|
|
|
/stake/delegators/{delegatorAddr}/delegations:
|
|
parameters:
|
|
- in: path
|
|
name: delegatorAddr
|
|
description: Bech32 AccAddress of Delegator
|
|
required: true
|
|
type: string
|
|
post:
|
|
summary: Submit delegation
|
|
parameters:
|
|
- in: body
|
|
name: delegation
|
|
description: The password of the account to remove from the KMS
|
|
schema:
|
|
type: object
|
|
properties:
|
|
name:
|
|
type: string
|
|
password:
|
|
type: string
|
|
account_number:
|
|
type: number
|
|
delegations:
|
|
type: array
|
|
items:
|
|
type: string
|
|
begin_unbondings:
|
|
type: array
|
|
items:
|
|
type: string
|
|
complete_unbondings:
|
|
type: array
|
|
items:
|
|
type: string
|
|
begin_redelegates:
|
|
type: array
|
|
items:
|
|
type: string
|
|
complete_redelegates:
|
|
type: array
|
|
items:
|
|
type: string
|
|
chain_id:
|
|
type: string
|
|
gas:
|
|
type: number
|
|
sequence:
|
|
type: number
|
|
tags:
|
|
- stake
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
200:
|
|
description: OK
|
|
schema:
|
|
$ref: "#/definitions/Tx"
|
|
404:
|
|
description: Not Found
|
|
500:
|
|
description: Internal Server Error
|
|
|
|
/stake/delegators/{delegatorAddr}/delegations/{validatorAddr}:
|
|
parameters:
|
|
- in: path
|
|
name: delegatorAddr
|
|
description: Bech32 AccAddress of Delegator
|
|
required: true
|
|
type: string
|
|
- in: path
|
|
name: validatorAddr
|
|
description: Bech32 ValAddress of Delegator
|
|
required: true
|
|
type: string
|
|
get:
|
|
summary: Query the current delegation status between a delegator and a validator
|
|
tags:
|
|
- stake
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
200:
|
|
description: OK
|
|
404:
|
|
description: Not Found
|
|
|
|
/stake/delegators/{delegatorAddr}/unbonding_delegations/{validatorAddr}:
|
|
parameters:
|
|
- in: path
|
|
name: delegatorAddr
|
|
description: Bech32 AccAddress of Delegator
|
|
required: true
|
|
type: string
|
|
- in: path
|
|
name: validatorAddr
|
|
description: Bech32 ValAddress of Delegator
|
|
required: true
|
|
type: string
|
|
get:
|
|
summary: Query all unbonding delegations between a delegator and a validator
|
|
tags:
|
|
- stake
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
200:
|
|
description: OK
|
|
404:
|
|
description: Not Found
|
|
500:
|
|
description: Internal Server Error
|
|
|
|
/stake/validators:
|
|
get:
|
|
summary: Get all validator candidates
|
|
tags:
|
|
- stake
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
200:
|
|
description: OK
|
|
500:
|
|
description: Internal Server Error
|
|
|
|
/stake/validators/{validatorAddr}:
|
|
parameters:
|
|
- in: path
|
|
name: validatorAddr
|
|
description: Bech32 ValAddress of Delegator
|
|
required: true
|
|
type: string
|
|
get:
|
|
summary: Query the information from a single validator
|
|
tags:
|
|
- stake
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
200:
|
|
description: OK
|
|
404:
|
|
description: Not Found
|
|
500:
|
|
description: Internal Server Error
|
|
|
|
# TODO Add staking definitions
|
|
definitions:
|
|
Address:
|
|
type: string
|
|
description: bech32 encoded addres
|
|
example: cosmosaccaddr:zgnkwr7eyyv643dllwfpdwensmgdtz89yu73zq
|
|
ValidatorAddress:
|
|
type: string
|
|
description: bech32 encoded addres
|
|
example: cosmosvaladdr:zgnkwr7eyyv643dllwfpdwensmgdtz89yu73zq
|
|
PubKey:
|
|
type: string
|
|
description: bech32 encoded public key
|
|
example: cosmosaccpub:zgnkwr7eyyv643dllwfpdwensmgdtz89yu73zq
|
|
ValidatorPubKey:
|
|
type: string
|
|
description: bech32 encoded public key
|
|
example: cosmosvalpub:zgnkwr7eyyv643dllwfpdwensmgdtz89yu73zq
|
|
Coins:
|
|
type: object
|
|
properties:
|
|
denom:
|
|
type: string
|
|
example: steak
|
|
amount:
|
|
type: number
|
|
example: 50
|
|
Hash:
|
|
type: string
|
|
example: EE5F3404034C524501629B56E0DDC38FAD651F04
|
|
Tx:
|
|
type: object
|
|
properties:
|
|
type:
|
|
type: string
|
|
enum:
|
|
- stake/delegate
|
|
data:
|
|
type: object
|
|
TxChain:
|
|
type: object
|
|
properties:
|
|
type:
|
|
type: string
|
|
default: chain/tx
|
|
data:
|
|
type: object
|
|
properties:
|
|
chain_id:
|
|
type: string
|
|
example: gaia-2
|
|
expires_at:
|
|
type: number
|
|
example: 0
|
|
tx:
|
|
type: object
|
|
properties:
|
|
type:
|
|
type: string
|
|
default: nonce
|
|
data:
|
|
type: object
|
|
properties:
|
|
sequence:
|
|
type: number
|
|
example: 0
|
|
signers:
|
|
type: array
|
|
items:
|
|
type: object
|
|
properties:
|
|
chain:
|
|
type: string
|
|
example: ''
|
|
app:
|
|
type: string
|
|
default: sigs
|
|
addr:
|
|
$ref: "#/definitions/Address"
|
|
tx:
|
|
$ref: "#/definitions/Tx"
|
|
TxBuild:
|
|
type: object
|
|
properties:
|
|
type:
|
|
type: string
|
|
default: sigs/one
|
|
data:
|
|
type: object
|
|
properties:
|
|
tx:
|
|
$ref: "#/definitions/Tx"
|
|
signature:
|
|
type: object
|
|
properties:
|
|
Sig:
|
|
type: string
|
|
default: ''
|
|
Pubkey:
|
|
type: string
|
|
default: ''
|
|
TxSigned:
|
|
type: object
|
|
properties:
|
|
type:
|
|
type: string
|
|
default: sigs/one
|
|
data:
|
|
type: object
|
|
properties:
|
|
tx:
|
|
$ref: "#/definitions/Tx"
|
|
signature:
|
|
type: object
|
|
properties:
|
|
Sig:
|
|
type: string
|
|
example: 81B11E717789600CC192B26F452A983DF13B985EE75ABD9DD9E68D7BA007A958
|
|
Pubkey:
|
|
$ref: "#/definitions/PubKey"
|
|
Account:
|
|
type: object
|
|
properties:
|
|
name:
|
|
type: string
|
|
example: Main Account
|
|
address:
|
|
$ref: "#/definitions/Address"
|
|
pub_key:
|
|
$ref: "#/definitions/PubKey"
|
|
Balance:
|
|
type: object
|
|
properties:
|
|
height:
|
|
type: number
|
|
example: 123456
|
|
coins:
|
|
type: array
|
|
items:
|
|
$ref: "#/definitions/Coins"
|
|
credit:
|
|
type: array
|
|
items:
|
|
type: object
|
|
BlockID:
|
|
type: object
|
|
properties:
|
|
hash:
|
|
$ref: "#/definitions/Hash"
|
|
parts:
|
|
type: object
|
|
properties:
|
|
total:
|
|
type: number
|
|
example: 0
|
|
hash:
|
|
$ref: "#/definitions/Hash"
|
|
Block:
|
|
type: object
|
|
properties:
|
|
header:
|
|
type: object
|
|
properties:
|
|
chain_id:
|
|
type: string
|
|
example: gaia-2
|
|
height:
|
|
type: number
|
|
example: 1
|
|
time:
|
|
type: string
|
|
example: '2017-12-30T05:53:09.287+01:00'
|
|
num_txs:
|
|
type: number
|
|
example: 0
|
|
last_block_id:
|
|
$ref: "#/definitions/BlockID"
|
|
total_txs:
|
|
type: number
|
|
example: 35
|
|
last_commit_hash:
|
|
$ref: "#/definitions/Hash"
|
|
data_hash:
|
|
$ref: "#/definitions/Hash"
|
|
validators_hash:
|
|
$ref: "#/definitions/Hash"
|
|
consensus_hash:
|
|
$ref: "#/definitions/Hash"
|
|
app_hash:
|
|
$ref: "#/definitions/Hash"
|
|
last_results_hash:
|
|
$ref: "#/definitions/Hash"
|
|
evidence_hash:
|
|
$ref: "#/definitions/Hash"
|
|
txs:
|
|
type: array
|
|
items:
|
|
$ref: "#/definitions/Tx"
|
|
evidence:
|
|
type: array
|
|
items:
|
|
type: object
|
|
last_commit:
|
|
type: object
|
|
properties:
|
|
blockID:
|
|
$ref: "#/definitions/BlockID"
|
|
precommits:
|
|
type: array
|
|
items:
|
|
type: object
|
|
Validator:
|
|
type: object
|
|
properties:
|
|
address:
|
|
$ref: '#/definitions/ValidatorAddress'
|
|
pub_key:
|
|
$ref: "#/definitions/ValidatorPubKey"
|
|
power:
|
|
type: number
|
|
example: 1000
|
|
accum:
|
|
type: number
|
|
example: 1000
|
|
# Added by API Auto Mocking Plugin
|
|
host: virtserver.swaggerhub.com
|
|
basePath: /faboweb1/Cosmos-LCD-2/1.0.0
|
|
schemes:
|
|
- https
|