Doma Documentation
  • About Doma Protocol
    • Protocol Overview
  • API Reference
    • Doma Smart Contracts API
    • Doma Multi-Chain Subgraph
    • Network Information
    • Deployed Smart Contracts
    • Supported TLDs
  • Domain Infrastructure 101
  • For Registrars
Powered by GitBook
On this page
  1. API Reference

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
}
PreviousDoma Smart Contracts APINextNetwork Information

Last updated 2 months ago