Entities
One benefit of GraphQL is that it is self-documenting. The best way to view the current tables, field names and possible queries one could make is through a GraphQL client UI. We have a hosted Indexer GraphiQL Console. The tables and their fields are also documented below.
Ethereum Data
Indexer stores the raw data for Transactions and Event Logs that it finds "interesting", namely transactions that interact with the Zora Protocol, and transactions that result in a transfer of an NFT Contract it is indexing.
// Ethereum transaction data
Transaction {
// Fields
blockHash
blockNumber
blockTimestamp
failureReason
from
gas
gasPrice
hash
input
network
nonce
status
to
transactionIndex
value
// Relationships
eventLogs
<event table name>Events // i.e. auctionApprovalUpdatedEvents)
mediaMints // see MediaMint table for context
}Aggregated Tables
Indexer keeps track of higher level, aggregated tables that represent that most up to date state of an object. At any block number, the aggregate view will mirror the view of the object on the blockchain. Token, Media, and Auction are the three aggregate tables. Read more about them below.
Token
Media
Auction
Event Tables
Protocol event tables are generally named by the format:
<contract name><exact name for the event>Event.
Currently we watch Zora's AuctionHouse events, which have the prefix Auction; Zora Media and Market events, which have prefixes Media and Market; and generic 721 events which have the prefix Token. The field names should match the specific contract event field names (exception: a struct in an event will be flattened into all the struct field names), plus there are several other useful fields that all Event tables share.
Below 👇 is an example of one Event table.
Other Tables
TokenContract is how Indexer keeps track of the contracts it wants to monitor.
TokenMetadata stores a metadata json blob and info associating it with a specific token. There may be many TokenMetadata entries with the same URI and thus same metadata.
Last updated
Was this helpful?