How to retrieve a Transmission Protocol using Ternoa Indexer
Ternoa indexer is a record of the Ternoa Chain data. You can query data for some specific entities (NFT, Collection, Marketplace(...)) using graphql. In this example, we use the graphql-request library.
Step 1: transmissionEntity query preparation
You first need to prepare a stringified query to get the protocol data from a specific NFT id. Here are detailed the parameters available for the transmissionEntity
:
`nftId`: The NFT id - String
`from`: The NFT sender after protocol execution - String
`to`: The NFT recipient after protocol execution - String
`isActive`: Boolean flag: true if the protocol is currently active, false otherwise. - Boolean
`isThresholdReached`: Boolean flag: true if the threshold of the expected number of consent is reached, false otherwise. - Boolean
`protocol`: The protocol kind : AtBlock, AtBlockWithReset, OnConsent or OnConsentAtBlock - String
`endBlock`: The protocol transmission block id - Number
`consentList`: The protocol expected consent list of address - An Array of String
`currentConsent`: The current consented list of addresses - An Array of String
`threshold`: The minimum threshold of consent to execute protocol - Number
`cancellation`: The cancellation kind: Anytime, None, or untilBlock - String
`cancellationBlock`: The untilBlock block id when cancellation is set to untilBlock - number
`timestampCreated`: The protocol creation timestamp. Date
`timestampRemoved`: The protocol removing timestamp. Date
`timestampUpdated`: The protocol update timestamp. Date
`timestampTransmitted`: DaThe protocol transmission timestamp. Date
Do not hesitate to adapt the information you require in your query and replace PROTOCOL_NFT_ID with the NFT id you want to get the information from (e.g. the NFT id from the NFT previously used in "How to set a Transmission Protocol for an NFT"):
{
transmissionEntity(id: "${id}") {
from
to
isActive
isThresholdReached
protocol
endBlock
consentList
currentConsent
threshold
cancellation
cancellationBlock
}
}
Step 2: Sending the request to the Indexer
Once the query is ready, you can request our Indexer instances by providing both the indexer endpoint and the query.
Replace PROTOCOL_NFT_ID in the following code snippet with the NFT ID previously used in "How to set a Transmission Protocol for an NFT"):
import { request, gql } from "graphql-request";
const PROTOCOL_NFT_ID = #update with existing protocol NFT id;
const query = (id: number) => gql`
{
transmissionEntity(id: "${id}") {
from
to
isActive
isThresholdReached
protocol
endBlock
consentList
currentConsent
threshold
cancellation
cancellationBlock
}
}
`;
const getProtocolData = async () => {
try {
const response = await request<{ transmissionEntity: protocolType }>(
"https://indexer-alphanet.ternoa.dev",
query(PROTOCOL_NFT_ID)
);
console.log(response);
} catch (error) {
console.error(error);
}
};
type protocolType = {
from: string
to: string
isActive: boolean
isThresholdReached: boolean
protocol: string
endBlock: number
consentList: [string]
currentConsent: [string]
threshold: number
cancellation: string
cancellationBlock: number
};
The getProtocolData
function is an asynchronous function that sends a GraphQL request using the request
function from the "graphql-request" library. The response from the server is an object with a property transmissionEntity that has the data of the requested Transmission NFT entity.
Support
If you face any trouble, feel free to reach out to our community engineers in our Discord.