# Lockdrop Watcher API The Lockdrop Watcher monitors the Zenith lockdrop contract on Ethereum, tracking participant deposits and lock commitments during Stage 0. **GraphQL Endpoint**: `https://lockdrop-watcher.zenith-test.tlon.systems/graphql` ## Query Deposit Information ```graphql query GetDeposit($address: String!) { deposit(address: $address) { address points lockDuration timestamp blockNumber transactionHash } } ``` ## Query All Deposits ```graphql query GetAllDeposits { deposits(orderBy: timestamp, orderDirection: desc) { address points lockDuration timestamp } } ``` ## Query Locked Points ```graphql query GetLockedPoints($pointId: Int!) { lockedPoint(id: $pointId) { pointId owner lockDuration lockedAt unlocksAt withdrawn } } ``` ## Using the GraphQL API ### With curl ```bash # Query Lockdrop Watcher curl -X POST https://lockdrop-watcher.zenith-test.tlon.systems/graphql \ -H "Content-Type: application/json" \ -d '{ "query": "query { deposits { address points lockDuration } }" }' ``` ### With JavaScript/TypeScript ```javascript const query = ` query GetDeposit($address: String!) { deposit(address: $address) { points lockDuration timestamp } } `; const variables = { address: "0x..." }; const response = await fetch('https://lockdrop-watcher.zenith-test.tlon.systems/graphql', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ query, variables }) }); const data = await response.json(); ``` ### With GraphQL Client Libraries ```javascript import { GraphQLClient } from 'graphql-request'; const client = new GraphQLClient( 'https://lockdrop-watcher.zenith-test.tlon.systems/graphql' ); const query = ` query GetDeposit($address: String!) { deposit(address: $address) { points lockDuration timestamp } } `; const data = await client.request(query, { address: '0x...' }); ``` ## Rate Limiting and Best Practices - **Rate Limits**: Public watcher endpoints have rate limiting in place. For production applications, consider running your own watcher instances. - **Pagination**: Use pagination parameters for queries that return large result sets. - **Caching**: Cache frequently accessed data to reduce API load. - **Error Handling**: Implement proper error handling and retry logic for network failures. !!! note "Watcher Documentation" For more information about the watcher architecture and deployment, see the [Watchers documentation](../documentation/watchers.md).