37Schema & GraphQL Queries
indexergraphqlschemaqueries
Schema & GraphQL Queries
🏠 Home > Indexer/Ponder Setup > Schema and Queries
This page documents the GraphQL API exposed by the Ponder indexer, with example queries for every major data type.
API Endpoints
| Endpoint | Description |
|---|---|
GET /graphql |
GraphQL playground (dev only) |
POST /graphql |
GraphQL API |
GET /health |
Health check |
Default local URL: http://localhost:42069
Ponder Query Conventions
Ponder adds an s suffix to all table names in queries:
# Table: mintedAssetEvents → Query: mintedAssetEventss
query {
mintedAssetEventss {
items {
id
}
}
}Pagination
All list queries support cursor-based pagination:
query {
mintedAssetEventss(limit: 20, after: "cursor_string") {
items {
id
account
tokenId
}
pageInfo {
hasNextPage
endCursor
}
}
}Filtering
Filter with where clause using column equality or comparisons:
query {
mintedAssetEventss(where: { account: "0x1234..." }) {
items {
id
tokenId
name
}
}
}Sorting
query {
tradeExecutedEventss(
orderBy: "block_timestamp"
orderDirection: "desc"
limit: 50
) {
items {
id
price
amount
}
}
}Asset Queries
Get All Minted Assets
query GetAssets($limit: Int = 50) {
mintedAssetEventss(
limit: $limit
orderBy: "block_timestamp"
orderDirection: "desc"
) {
items {
id
account
hash
tokenId
name
assetClass
className
block_timestamp
transaction_hash
}
pageInfo {
hasNextPage
endCursor
}
}
}Get Assets by Node
query GetNodeAssets($nodeAddress: String!) {
mintedAssetEventss(where: { account: $nodeAddress }) {
items {
id
hash
tokenId
name
assetClass
className
block_timestamp
}
}
}Get Assets by Class
query GetAssetsByClass($className: String!) {
mintedAssetEventss(
where: { className: $className }
orderBy: "block_timestamp"
) {
items {
id
account
tokenId
name
block_timestamp
}
}
}Order Queries
Get All Unified Orders
query GetOrders($limit: Int = 50, $after: String) {
unifiedOrderCreatedEventss(
limit: $limit
after: $after
orderBy: "block_timestamp"
orderDirection: "desc"
) {
items {
id
unifiedOrderId
clobOrderId
buyer
seller
token
tokenId
quantity
price
block_timestamp
transaction_hash
}
pageInfo {
hasNextPage
endCursor
}
}
}Get Orders for Buyer
query GetBuyerOrders($buyer: String!) {
unifiedOrderCreatedEventss(
where: { buyer: $buyer }
orderBy: "block_timestamp"
orderDirection: "desc"
) {
items {
unifiedOrderId
quantity
price
block_timestamp
}
}
}Get Settled Orders
query GetSettledOrders {
orderSettledEventss(
orderBy: "block_timestamp"
orderDirection: "desc"
limit: 100
) {
items {
unifiedOrderId
seller
sellerAmount
driver
driverAmount
block_timestamp
}
}
}Journey Queries
Get Journeys for Driver
query GetDriverJourneys($driver: String!) {
auSysJourneyStatusUpdatedEventss(
where: { driver: $driver }
orderBy: "block_timestamp"
orderDirection: "desc"
) {
items {
journeyId
newStatus
sender
receiver
bounty
ETA
startName
endName
startLat
startLng
endLat
endLng
block_timestamp
}
}
}Get Active Journeys (IN_TRANSIT)
query GetActiveJourneys {
auSysJourneyStatusUpdatedEventss(where: { newStatus: 1 }) {
items {
journeyId
driver
sender
receiver
startName
endName
bounty
ETA
}
}
}Get Journeys for Order
query GetOrderJourneys($orderId: String!) {
journeyCreatedEventss(where: { orderId: $orderId }) {
items {
journeyId
sender
receiver
driver
bounty
ETA
startName
endName
}
}
}CLOB Queries
Get Open Orders for Market
query GetOpenOrders($marketId: String!) {
routerOrderPlacedEventss(where: { marketId: $marketId }) {
items {
orderId
maker
price
amount
isBuy
orderType
block_timestamp
}
}
}Get Trade History
query GetTrades($limit: Int = 100) {
tradeExecutedEventss(
limit: $limit
orderBy: "block_timestamp"
orderDirection: "desc"
) {
items {
tradeId
taker
maker
marketId
price
amount
quoteAmount
takerFee
makerFee
takerIsBuy
block_timestamp
transaction_hash
}
}
}Get Pool Activity
query GetPoolActivity($poolId: String!) {
liquidityAddedEventss(where: { poolId: $poolId }) {
items {
provider
baseAmount
quoteAmount
lpTokensMinted
block_timestamp
}
}
liquidityRemovedEventss(where: { poolId: $poolId }) {
items {
provider
baseAmount
quoteAmount
lpTokensBurned
block_timestamp
}
}
}Node Queries
Get All Nodes
query GetNodes {
nodeRegisteredEventss(orderBy: "block_timestamp") {
items {
nodeHash
owner
nodeType
block_timestamp
}
}
}Get Node Assets
query GetNodeSupportedAssets($nodeHash: String!) {
supportedAssetAddedEventss(where: { nodeHash: $nodeHash }) {
items {
token
tokenId
price
capacity
block_timestamp
}
}
}RWY Queries
Get All Opportunities
query GetOpportunities($limit: Int = 100, $after: String) {
opportunityCreatedEventss(
limit: $limit
after: $after
orderBy: "block_timestamp"
orderDirection: "desc"
) {
items {
id
opportunityId
operator
inputToken
inputTokenId
targetAmount
promisedYieldBps
block_timestamp
}
pageInfo {
hasNextPage
endCursor
}
}
}Get Stakes for Opportunity
query GetOpportunityStakes($opportunityId: String!) {
commodityStakedEventss(where: { opportunityId: $opportunityId }) {
items {
staker
amount
totalStaked
block_timestamp
}
}
}Get User's Stakes
query GetUserStakes($staker: String!) {
commodityStakedEventss(where: { staker: $staker }) {
items {
opportunityId
amount
totalStaked
block_timestamp
}
}
}Staking Queries (AuStake legacy)
query GetStakedEvents($operationId: String!) {
stakedEventss(where: { stakedOperationId: $operationId }, limit: 100) {
items {
id
user
amount
stakedOperationId
token
time
block_timestamp
transaction_hash
}
}
}
query GetOperations($limit: Int = 100, $after: String) {
operationCreatedEventss(
limit: $limit
after: $after
orderBy: "block_timestamp"
orderDirection: "desc"
) {
items {
id
opCreatedOperationId
name
token
block_timestamp
transaction_hash
}
pageInfo {
hasNextPage
endCursor
}
}
}P2P Queries
Get Open P2P Offers
query GetOpenP2POffers {
p2POfferCreatedEventss(orderBy: "block_timestamp", orderDirection: "desc") {
items {
orderId
creator
isSellerInitiated
token
tokenId
tokenQuantity
price
targetCounterparty
expiresAt
block_timestamp
}
}
}Repository Integration
The frontend queries Ponder via graphql-request. Query constants are defined in constants.ts and consumed by repositories:
// infrastructure/repositories/orders-repository.ts
import { request } from 'graphql-request';
import { UNIFIED_ORDERS_QUERY } from '@/constants';
class OrdersRepository implements IOrderRepository {
async getBuyerOrders(buyer: string): Promise<Order[]> {
const data = await request(
process.env.NEXT_PUBLIC_INDEXER_URL,
GET_BUYER_ORDERS_QUERY,
{ buyer: buyer.toLowerCase() },
);
return data.unifiedOrderCreatedEventss.items.map(transformToOrder);
}
}