# 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] }