Get User's Buy Orders
In this tutorial, you will learn how to get the user's buy orders by calling the Moxie Protocol Subgraph API.
Moxie protocol users have Moxie token currently vesting in their vesting contract. A huge portion of them use these to bid on auctions and buy/sell fan tokens on the Moxie protocol.
Therefore, it is important that you include the user's vesting addresses in the query to get all user's buy orders on the Moxie bonding curve. To get user's vesting contract addresses, click here.
Pre-requisites
Install dependenciesgraphql
and graphql-request
to your project :- npm
- yarn
- pnpm
- bun
npm install graphql graphql-request
yarn add graphql graphql-request
pnpm add graphql graphql-request
bun install graphql graphql graphql-request
Step 1: Add The API Query To Your Code
To get the user's buy orders, you can use the following query:
- Query
- Variable
- Response
query MyQuery($userAddresses: [ID!]) {
users(where: {id_in: $userAddresses}) {
orders(where: {orderType: BUY}) {
price
protocolToken
protocolTokenAmount
protocolFeeTransfer {
txHash
amount
}
subjectToken {
name
symbol
}
subjectAmount
subjectFeeTransfer {
txHash
amount
}
}
}
}
{
"userAddresses": [
"0x04e6f111ebf6fd25576d480480962435dc3aa8d8"
]
}
{
"data": {
"users": [
{
"orders": [
{
"price": "0.2304086884847426004769468719955685",
"protocolToken": "0xf86136afb0fb72cdbd27d7aea9e283725d6815a1",
"protocolTokenAmount": "3000000000000000",
"protocolFeeTransfer": {
"txHash": "0x37fa4243f84e41043c490dbed264e61dd4c9992709e0822a80ea2b2e0e809124",
"amount": "30000000000000"
},
"subjectToken": {
"name": "base",
"symbol": "cid:base"
},
"subjectAmount": "13020342330530893",
"subjectFeeTransfer": {
"txHash": "0x37fa4243f84e41043c490dbed264e61dd4c9992709e0822a80ea2b2e0e809124",
"amount": "90000000000000"
}
}
]
}
]
}
}
graphql-request
library:- TypeScript
- JavaScript
import { gql, GraphQLClient } from "graphql-request";
const graphQLClient = new GraphQLClient(
"https://api.studio.thegraph.com/query/23537/moxie_protocol_stats_mainnet/version/latest"
);
const query = gql`
query MyQuery($userAddresses: [ID!]) {
users(where: {id_in: $userAddresses}) {
orders(where: {orderType: BUY}) {
price
protocolToken
protocolTokenAmount
protocolFeeTransfer {
txHash
amount
}
subjectToken {
name
symbol
}
subjectAmount
subjectFeeTransfer {
txHash
amount
}
}
}
}
`;
const variable = {
"userAddresses": [
"0x04e6f111ebf6fd25576d480480962435dc3aa8d8"
]
}
try {
const data = await graphQLClient.request(query, variable);
console.log(data);
} catch (e) {
throw new Error(e);
}
const { gql, GraphQLClient } = require("graphql-request");
const graphQLClient = new GraphQLClient(
"https://api.studio.thegraph.com/query/23537/moxie_protocol_stats_mainnet/version/latest"
);
const query = gql`
query MyQuery($userAddresses: [ID!]) {
users(where: {id_in: $userAddresses}) {
orders(where: {orderType: BUY}) {
price
protocolToken
protocolTokenAmount
protocolFeeTransfer {
txHash
amount
}
subjectToken {
name
symbol
}
subjectAmount
subjectFeeTransfer {
txHash
amount
}
}
}
}
`;
const variable = {
"userAddresses": [
"0x04e6f111ebf6fd25576d480480962435dc3aa8d8"
]
}
try {
const data = await graphQLClient.request(query, variable);
console.log(data);
} catch (e) {
throw new Error(e);
}
Step 2: Execute Your Code
Once you have your code ready, you can execute it by running the following command:
- TypeScript
- JavaScript
ts-node index.ts
node index.js
If it runs successfully, you should see the data returned in the terminal:
{
"data": {
"users": [
{
"orders": [
{
"price": "0.2304086884847426004769468719955685",
"protocolToken": "0xf86136afb0fb72cdbd27d7aea9e283725d6815a1",
"protocolTokenAmount": "3000000000000000",
"protocolFeeTransfer": {
"txHash": "0x37fa4243f84e41043c490dbed264e61dd4c9992709e0822a80ea2b2e0e809124",
"amount": "30000000000000"
},
"subjectToken": {
"name": "base",
"symbol": "cid:base"
},
"subjectAmount": "13020342330530893",
"subjectFeeTransfer": {
"txHash": "0x37fa4243f84e41043c490dbed264e61dd4c9992709e0822a80ea2b2e0e809124",
"amount": "90000000000000"
}
}
]
}
]
}
}
Congrats! 🥳🎉 You've just fetched all the user's buy orders!
Developer Support
If you have any questions or need help with other use cases, feel free to join the /airstack Warpcast channel and ask your questions there.
Our team is always ready to help you with any questions you may have.