Doma Multi-Chain Subgraph
Doma Subgraph could be used to view Doma Protocol data across different chains. Additionally, it provides mutations for Doma Protocol operations, like uploading registrant contacts and pre-generating metadata for NFTs.
type Query {
"""
Return list of tokenized names.
Supports filtering and pagiation.
"""
names(skip: Int, take: Int, tld: String, claimedBy: TypedAddress): [Name]
"""
Retreive information about single name only.
"""
name(name: ID!): Name
"""
Retreive information about name tokens.
"""
tokens(name: ID!): [Token]
"""
Retreive information about a single name token.
"""
tokens(tokenId: ID!): Token
"""
Returns activity for a given name, with filtering and pagination.
"""
nameActivities(name: ID!, skip: Int, take: Int, type: DomainActivityType): [DomainActivity]
"""
Returns activity for a given token, with filtering and pagination.
"""
tokenActivities(tokenId: ID!, skip: Int, take: Int, type: TokenActivityType): [TokenActivity]
}
type Mutation {
"""
Pre-generate metadata for a given token before minting it.
Helps with indexing support.
Returns token ids for provided generation requests.
"""
generateMetadata(tokens: [TokenMetadataGenerationRequest]!): [String]
"""
Used to intiate email verification process.
This is part of Contacts Upload flow.
"""
initiateEmailVerification(email: String): Boolean
"""
Completes email verification.
Returns verification proof to a caller.
This is part of Contacts Upload flow.
"""
completeEmailVerification(email: String, code: String!): String
"""
Upload registrant contacts, together with verified email.
Accepts contact information encrypted by a registrar public key.
"""
uploadRegistrantContacts(
contact: RegistrantContact!,
emailVerificationProof: String!
): ProofOfContactsVoucher
}
type Name {
name: ID!
"Expiration Date in ISO format"
expiresAt: String!
eoi: Boolean!
registrar: Registrar
nameservers: [Nameserver]
dsKeys: [DSKey]
supportedCapabilities: [Int]
transferLock: Boolean!
claimedBy: TypedAddress!
tokens: [Token]
activities: [DomainActivity]
}
type Registrar {
ianaId: Int!
supportedCapabilities: [Int]
publicKeys: [String]
}
type Token {
tokenId: ID!
networkId: Int!
ownerAddress: TypedAddress!
type: TokenType!
capabilities: [TokenCapability]
"Start Date in ISO format"
startsAt: String
"Expiration Date in ISO format"
expiresAt: String
activities: [TokenActivity]
}
type DomainActivity {
type: DomainActivityType!
"Creation Date in ISO format"
createdAt: String!
"Activity Specific Data. Full typing TBD"
data: String!
}
type TokenActivity {
type: TokenActivityType!
"Creation Date in ISO format"
createdAt: String!
"Activity Specific Data. Full typing TBD"
data: String!
}
type Nameserver {
ldhName: String!
}
type DSKey {
keyTag: Int!,
algorithm: Int!,
digest: String!,
digestType: Int!
}
type TypedAddress {
address: String!
addressType: AddressType!
}
type TokenCapability {
capability: Int!
"Base64-encoded capability-specific data"
data: String
}
type ProofOfContactsVoucher {
registrantHandle: Int!
nonce: Int!
publicKey: String!
"Always returns PII Storage as a proofSource, i.e. 2"
proofSource: Int!
voucherExpiresAt: Int!
}
input TokenMetadataGenerationRequest {
name: String!
networkId: Int!
type: TokenType!
capabilities: [TokenCapability]
"Start Date in ISO format"
startsAt: String
"Expiration Date in ISO format"
expiresAt: String
}
input RegistrantContact {
name: String!
organization: String
email: String!
phone: String!
fax: String
street: String!
city: String!
state: String!
postalCode: String!
countryCode: String!
}
enum DomainActivityType {
TOKENIZED
CLAIMED
RENEWED
DETOKENIZED
DELETED
COMPLIANCE_DETOKENIZED
COMPLIANCE_LOCKED
COMPLIANCE_UNLOCKED
TOKEN_CONVERTED
TOKEN_SPLIT
TOKEN_MERGED
}
enum TokenActivityType {
MINTED
TRANSFERRED
}
enum AddressType {
EVM
SOLANA
}
enum TokenType {
OWNERSHIP
SYNTHETIC
}
Last updated