forked from cerc-io/laconicd
259 lines
6.0 KiB
GraphQL
259 lines
6.0 KiB
GraphQL
|
# Reference to another record.
|
||
|
scalar Link
|
||
|
|
||
|
# Bonds contain funds that are used to pay rent on record registration and renewal.
|
||
|
type Bond {
|
||
|
id: String! # Primary key, auto-generated by the server.
|
||
|
owner: String! # Bond owner cosmos-sdk address.
|
||
|
balance: [Coin!] # Current balance for each coin type.
|
||
|
}
|
||
|
|
||
|
# OwnerBonds contains the bonds related the owner
|
||
|
type OwnerBonds {
|
||
|
owner: String!
|
||
|
bonds: [Bond!]
|
||
|
}
|
||
|
|
||
|
# Mutations require payment in coins (e.g. 100wire).
|
||
|
# Used by the wallet to get the account balance for display and mutations.
|
||
|
type Coin {
|
||
|
type: String! # e.g. 'WIRE'
|
||
|
quantity: String! # e.g. 1000000
|
||
|
}
|
||
|
# Represents an account on the blockchain.
|
||
|
# Mutations have to be signed by a particular account.
|
||
|
type Account {
|
||
|
address: String! # Blockchain address.
|
||
|
pubKey: String # Public key.
|
||
|
number: String! # Account number.
|
||
|
sequence: String! # Sequence number used to prevent replays.
|
||
|
balance: [Coin!] # Current balance for each coin type.
|
||
|
}
|
||
|
|
||
|
# Value describes a DAG-JSON compatible value.
|
||
|
union Value =
|
||
|
BooleanValue
|
||
|
| IntValue
|
||
|
| FloatValue
|
||
|
| StringValue
|
||
|
| BytesValue
|
||
|
| LinkValue
|
||
|
| ArrayValue
|
||
|
| MapValue
|
||
|
|
||
|
type BooleanValue {
|
||
|
value: Boolean!
|
||
|
}
|
||
|
|
||
|
type IntValue {
|
||
|
value: Int!
|
||
|
}
|
||
|
|
||
|
type FloatValue {
|
||
|
value: Float!
|
||
|
}
|
||
|
|
||
|
type StringValue {
|
||
|
value: String!
|
||
|
}
|
||
|
|
||
|
type BytesValue {
|
||
|
value: String!
|
||
|
}
|
||
|
|
||
|
type ArrayValue {
|
||
|
value: [Value]!
|
||
|
}
|
||
|
|
||
|
type LinkValue {
|
||
|
value: Link!
|
||
|
}
|
||
|
|
||
|
type MapValue {
|
||
|
value: [Attribute!]!
|
||
|
}
|
||
|
|
||
|
# Key/value pair.
|
||
|
type Attribute {
|
||
|
key: String!
|
||
|
value: Value
|
||
|
}
|
||
|
|
||
|
# Value of a given type used as input to queries.
|
||
|
# Note: GQL doesn't allow union input types.
|
||
|
input ValueInput {
|
||
|
int: Int
|
||
|
float: Float
|
||
|
string: String
|
||
|
boolean: Boolean
|
||
|
link: Link
|
||
|
array: [ValueInput]
|
||
|
map: [KeyValueInput!]
|
||
|
}
|
||
|
|
||
|
# Key/value pair for inputs.
|
||
|
input KeyValueInput {
|
||
|
key: String!
|
||
|
value: ValueInput
|
||
|
}
|
||
|
|
||
|
# Status information about a node (https://docs.tendermint.com/master/rpc/#/Info/status).
|
||
|
type NodeInfo {
|
||
|
id: String! # Tendermint Node ID.
|
||
|
network: String! # Name of the network/blockchain.
|
||
|
moniker: String! # Name of the node.
|
||
|
}
|
||
|
|
||
|
# Node sync status.
|
||
|
type SyncInfo {
|
||
|
latest_block_hash: String!
|
||
|
latest_block_height: String!
|
||
|
latest_block_time: String!
|
||
|
catching_up: Boolean!
|
||
|
}
|
||
|
|
||
|
# Validator set info (https://docs.tendermint.com/master/rpc/#/Info/validators).
|
||
|
type ValidatorInfo {
|
||
|
address: String!
|
||
|
voting_power: String!
|
||
|
proposer_priority: String
|
||
|
}
|
||
|
|
||
|
# Network/peer info (https://docs.tendermint.com/master/rpc/#/Info/net_info).
|
||
|
type PeerInfo {
|
||
|
node: NodeInfo!
|
||
|
is_outbound: Boolean!
|
||
|
remote_ip: String!
|
||
|
}
|
||
|
|
||
|
# Vulcanize laconic status.
|
||
|
type Status {
|
||
|
version: String!
|
||
|
node: NodeInfo!
|
||
|
sync: SyncInfo!
|
||
|
validator: ValidatorInfo
|
||
|
validators: [ValidatorInfo]!
|
||
|
num_peers: String!
|
||
|
peers: [PeerInfo]
|
||
|
disk_usage: String!
|
||
|
}
|
||
|
|
||
|
# An auction bid.
|
||
|
type AuctionBid {
|
||
|
bidderAddress: String!
|
||
|
status: String!
|
||
|
commitHash: String!
|
||
|
commitTime: String!
|
||
|
commitFee: Coin!
|
||
|
revealTime: String!
|
||
|
revealFee: Coin!
|
||
|
bidAmount: Coin!
|
||
|
}
|
||
|
|
||
|
# A sealed-bid, 2nd price auction.
|
||
|
type Auction {
|
||
|
id: String! # Auction ID.
|
||
|
status: String! # Auction status (commit, reveal, expired).
|
||
|
ownerAddress: String! # Auction owner time.
|
||
|
createTime: String! # Create time.
|
||
|
commitsEndTime: String! # Commit phase end time.
|
||
|
revealsEndTime: String! # Reveal phase end time.
|
||
|
commitFee: Coin! # Fee required to bid/participate in the auction.
|
||
|
revealFee: Coin! # Reveal fee (paid back to bidders only if they unseal/reveal the bid).
|
||
|
minimumBid: Coin! # Minimum bid amount.
|
||
|
winnerAddress: String! # Winner address.
|
||
|
winnerBid: Coin! # The winning bid amount.
|
||
|
winnerPrice: Coin! # The price that the winner actually pays (2nd highest bid).
|
||
|
bids: [AuctionBid] # Bids make in the auction.
|
||
|
}
|
||
|
|
||
|
# Record defines the basic properties of an entity in the graph database.
|
||
|
type Record {
|
||
|
id: String! # Computed attribute: Multibase encoded content hash (https://github.com/multiformats/multibase).
|
||
|
names: [String!] # Names pointing to this CID (reverse lookup).
|
||
|
bondId: String! # Associated bond ID.
|
||
|
createTime: String! # Record create time.
|
||
|
expiryTime: String! # Record expiry time.
|
||
|
owners: [String!] # Addresses of record owners.
|
||
|
attributes: [Attribute!] # Record attributes.
|
||
|
references: [Record] # Record references.
|
||
|
}
|
||
|
|
||
|
# Name authority record.
|
||
|
type AuthorityRecord {
|
||
|
ownerAddress: String! # Owner address.
|
||
|
ownerPublicKey: String! # Owner public key.
|
||
|
height: String! # Height at which record was created.
|
||
|
status: String! # Status (active, auction, expired).
|
||
|
bondId: String! # Associated bond ID.
|
||
|
expiryTime: String! # Authority expiry time.
|
||
|
auction: Auction # Authority auction.
|
||
|
}
|
||
|
|
||
|
# Name record entry, created at a particular height.
|
||
|
type NameRecordEntry {
|
||
|
id: String! # Target record ID.
|
||
|
height: String! # Height at which record was created.
|
||
|
}
|
||
|
|
||
|
# Name record stores the latest and historical name -> record ID mappings.
|
||
|
type NameRecord {
|
||
|
latest: NameRecordEntry! # Latest mame record entry.
|
||
|
history: [NameRecordEntry] # Historical name record entries.
|
||
|
}
|
||
|
|
||
|
type Query {
|
||
|
#
|
||
|
# Status API.
|
||
|
#
|
||
|
getStatus: Status!
|
||
|
|
||
|
# Get blockchain accounts.
|
||
|
getAccounts(addresses: [String!]): [Account]
|
||
|
|
||
|
# Get bonds by IDs.
|
||
|
getBondsByIds(ids: [String!]): [Bond]
|
||
|
|
||
|
# Query bonds.
|
||
|
queryBonds(attributes: [KeyValueInput!]): [Bond]
|
||
|
|
||
|
# Query bonds by owner.
|
||
|
queryBondsByOwner(ownerAddresses: [String!]): [OwnerBonds]
|
||
|
|
||
|
#
|
||
|
# GraphDB API.
|
||
|
#
|
||
|
|
||
|
# Get records by IDs.
|
||
|
getRecordsByIds(ids: [String!]): [Record]
|
||
|
|
||
|
# Query records.
|
||
|
queryRecords(
|
||
|
# Multiple attribute conditions are in a logical AND.
|
||
|
attributes: [KeyValueInput!]
|
||
|
|
||
|
# Whether to query all records, not just named ones (false by default).
|
||
|
all: Boolean
|
||
|
): [Record]
|
||
|
|
||
|
#
|
||
|
# Naming API.
|
||
|
#
|
||
|
|
||
|
# Lookup authority information.
|
||
|
lookupAuthorities(names: [String!]): [AuthorityRecord]!
|
||
|
|
||
|
# Lookup name to record mapping information.
|
||
|
lookupNames(names: [String!]): [NameRecord]!
|
||
|
|
||
|
# Resolve names to records.
|
||
|
resolveNames(names: [String!]): [Record]!
|
||
|
|
||
|
#
|
||
|
# Auctions API.
|
||
|
#
|
||
|
|
||
|
# Get auctions by IDs.
|
||
|
getAuctionsByIds(ids: [String!]): [Auction]
|
||
|
}
|