Domain Resolver
Assigned resolver, stored records, resolver permissions, and events. Terminal window Terminal window
query DomainResolver($name: InterpretedName!) {
domain(by: { name: $name }) {
resolver {
records { edges { node { node keys coinTypes } } }
permissions { resources { edges { node { resource users { edges { node { user { address } roles } } } } } } }
events { totalCount edges { node { topics data timestamp } } }
}
}
} {
"name": "demomigration.eth"
} {
"data": {
"domain": {
"resolver": {
"records": {
"edges": [
{
"node": {
"node": "0x48312b5175fe09ba3258adfaa7b41377451f11616726770e844c85018f51e80a",
"keys": [
"com.twitter",
"description"
],
"coinTypes": []
}
},
{
"node": {
"node": "0x557fa88f560ad2602e7a03b84201109bd3a4fcac5d33effa63d367781156f86e",
"keys": [
"description"
],
"coinTypes": []
}
},
{
"node": {
"node": "0x7c373628c8f997165f201947222fcfbe102f9d1ae1f693e188f891aad9fdf87c",
"keys": [
"com.twitter"
],
"coinTypes": []
}
},
{
"node": {
"node": "0x85b36edc4fa474edd2da2cda5445dc5bcc88e897dbfc50349ca0282d133be8b7",
"keys": [
"description"
],
"coinTypes": []
}
},
{
"node": {
"node": "0xc78c2904ed79c457f13c7f209f9eeeba66d0d843bfcfb630cd4ad2301ac7b77c",
"keys": [
"description"
],
"coinTypes": []
}
},
{
"node": {
"node": "0xcc479ce25282f2ba33d415e9b4cb473bea70ee5fd4091200c4a96b714bb961ea",
"keys": [
"com.twitter",
"description"
],
"coinTypes": []
}
},
{
"node": {
"node": "0xf6910e4b50bcf1db17bafcf8d93cffe9e46f69b3bd68ed6c371523755485667d",
"keys": [
"com.twitter",
"description"
],
"coinTypes": [
60
]
}
}
]
},
"events": {
"totalCount": 12,
"edges": [
{
"node": {
"topics": [
"0x448bc014f1536726cf8d54ff3d6481ed3cbc683c2591ca204274009afa09b1a1",
"0x7c373628c8f997165f201947222fcfbe102f9d1ae1f693e188f891aad9fdf87c",
"0x7b8e740dad11ad11abceebf798f458a149d945f7c4448784733725f3fa21225e"
],
"data": "0x00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000b636f6d2e747769747465720000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007796f67696e746800000000000000000000000000000000000000000000000000",
"timestamp": "1778524611"
}
},
{
"node": {
"topics": [
"0x448bc014f1536726cf8d54ff3d6481ed3cbc683c2591ca204274009afa09b1a1",
"0xcc479ce25282f2ba33d415e9b4cb473bea70ee5fd4091200c4a96b714bb961ea",
"0x7b8e740dad11ad11abceebf798f458a149d945f7c4448784733725f3fa21225e"
],
"data": "0x00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000b636f6d2e747769747465720000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007796f67696e746800000000000000000000000000000000000000000000000000",
"timestamp": "1778524668"
}
},
{
"node": {
"topics": [
"0x448bc014f1536726cf8d54ff3d6481ed3cbc683c2591ca204274009afa09b1a1",
"0xcc479ce25282f2ba33d415e9b4cb473bea70ee5fd4091200c4a96b714bb961ea",
"0x1596dc38e2ac5a6ddc5e019af4adcc1e017a04f510d57e69d6879d5d2996bb8e"
],
"data": "0x00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000b6465736372697074696f6e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045465737400000000000000000000000000000000000000000000000000000000",
"timestamp": "1778525667"
}
},
{
"node": {
"topics": [
"0x448bc014f1536726cf8d54ff3d6481ed3cbc683c2591ca204274009afa09b1a1",
"0x48312b5175fe09ba3258adfaa7b41377451f11616726770e844c85018f51e80a",
"0x7b8e740dad11ad11abceebf798f458a149d945f7c4448784733725f3fa21225e"
],
"data": "0x00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000b636f6d2e747769747465720000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007796f67696e746800000000000000000000000000000000000000000000000000",
"timestamp": "1778525993"
}
},
{
"node": {
"topics": [
"0x448bc014f1536726cf8d54ff3d6481ed3cbc683c2591ca204274009afa09b1a1",
"0x48312b5175fe09ba3258adfaa7b41377451f11616726770e844c85018f51e80a",
"0x1596dc38e2ac5a6ddc5e019af4adcc1e017a04f510d57e69d6879d5d2996bb8e"
],
"data": "0x00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000b6465736372697074696f6e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002476d000000000000000000000000000000000000000000000000000000000000",
"timestamp": "1778526019"
}
},
{
"node": {
"topics": [
"0x448bc014f1536726cf8d54ff3d6481ed3cbc683c2591ca204274009afa09b1a1",
"0xf6910e4b50bcf1db17bafcf8d93cffe9e46f69b3bd68ed6c371523755485667d",
"0x1596dc38e2ac5a6ddc5e019af4adcc1e017a04f510d57e69d6879d5d2996bb8e"
],
"data": "0x00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000b6465736372697074696f6e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c454e5320456e67696e6565720000000000000000000000000000000000000000",
"timestamp": "1778527438"
}
},
{
"node": {
"topics": [
"0x448bc014f1536726cf8d54ff3d6481ed3cbc683c2591ca204274009afa09b1a1",
"0xf6910e4b50bcf1db17bafcf8d93cffe9e46f69b3bd68ed6c371523755485667d",
"0x7b8e740dad11ad11abceebf798f458a149d945f7c4448784733725f3fa21225e"
],
"data": "0x00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000b636f6d2e747769747465720000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007796f67696e746800000000000000000000000000000000000000000000000000",
"timestamp": "1778527438"
}
},
{
"node": {
"topics": [
"0x65412581168e88a1e60c6459d7f44ae83ad0832e670826c05a4e2476b57af752",
"0xf6910e4b50bcf1db17bafcf8d93cffe9e46f69b3bd68ed6c371523755485667d"
],
"data": "0x000000000000000000000000000000000000000000000000000000000000003c00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000014f618330f51fa54ce5951d627ee150c0fdadeba43000000000000000000000000",
"timestamp": "1778527462"
}
},
{
"node": {
"topics": [
"0x52d7d861f09ab3d26239d492e8968629f95e9e318cf0b73bfddc441522a15fd2",
"0xf6910e4b50bcf1db17bafcf8d93cffe9e46f69b3bd68ed6c371523755485667d"
],
"data": "0x000000000000000000000000f618330f51fa54ce5951d627ee150c0fdadeba43",
"timestamp": "1778527462"
}
},
{
"node": {
"topics": [
"0x448bc014f1536726cf8d54ff3d6481ed3cbc683c2591ca204274009afa09b1a1",
"0x557fa88f560ad2602e7a03b84201109bd3a4fcac5d33effa63d367781156f86e",
"0x1596dc38e2ac5a6ddc5e019af4adcc1e017a04f510d57e69d6879d5d2996bb8e"
],
"data": "0x00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000b6465736372697074696f6e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007596f67696e746800000000000000000000000000000000000000000000000000",
"timestamp": "1778773686"
}
},
{
"node": {
"topics": [
"0x448bc014f1536726cf8d54ff3d6481ed3cbc683c2591ca204274009afa09b1a1",
"0x85b36edc4fa474edd2da2cda5445dc5bcc88e897dbfc50349ca0282d133be8b7",
"0x1596dc38e2ac5a6ddc5e019af4adcc1e017a04f510d57e69d6879d5d2996bb8e"
],
"data": "0x00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000b6465736372697074696f6e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007596f67696e746800000000000000000000000000000000000000000000000000",
"timestamp": "1778773686"
}
},
{
"node": {
"topics": [
"0x448bc014f1536726cf8d54ff3d6481ed3cbc683c2591ca204274009afa09b1a1",
"0xc78c2904ed79c457f13c7f209f9eeeba66d0d843bfcfb630cd4ad2301ac7b77c",
"0x1596dc38e2ac5a6ddc5e019af4adcc1e017a04f510d57e69d6879d5d2996bb8e"
],
"data": "0x00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000b6465736372697074696f6e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045465737400000000000000000000000000000000000000000000000000000000",
"timestamp": "1778774449"
}
}
]
},
"permissions": {
"resources": {
"edges": [
{
"node": {
"resource": "0",
"users": {
"edges": [
{
"node": {
"roles": "7719472615821079694904732333912527190217998977709370935963838933860875309329",
"user": {
"address": "0xf618330f51fa54ce5951d627ee150c0fdadeba43"
}
}
}
]
}
}
}
]
}
}
}
}
}
} # POST JSON to your ENSNode Omnigraph endpoint (same path enssdk uses).
curl -sS -X POST "https://api.v2-sepolia.ensnode.io/api/omnigraph" \
-H "Content-Type: application/json" \
-d @- <<'EOF'
{
"query": "query DomainResolver($name: InterpretedName!) { domain(by: { name: $name }) { resolver { records { edges { node { node keys coinTypes } } } permissions { resources { edges { node { resource users { edges { node { user { address } roles } } } } } } } events { totalCount edges { node { topics data timestamp } } } } } }",
"variables": {
"name": "demomigration.eth"
}
}
EOF import { createEnsNodeClient } from "enssdk/core";
import { asInterpretedName } from "enssdk";
import { graphql, omnigraph } from "enssdk/omnigraph";
const client = createEnsNodeClient({
url: process.env.ENSNODE_URL || "https://api.v2-sepolia.ensnode.io"
}).extend(omnigraph);
const DomainResolverQuery = graphql(`
query DomainResolver($name: InterpretedName!) {
domain(by: { name: $name }) {
resolver {
records { edges { node { node keys coinTypes } } }
permissions { resources { edges { node { resource users { edges { node { user { address } roles } } } } } } }
events { totalCount edges { node { topics data timestamp } } }
}
}
}
`);
const result = await client.omnigraph.query({
query: DomainResolverQuery,
variables: {
name: asInterpretedName("demomigration.eth"),
},
});
if (result.errors) throw new Error(JSON.stringify(result.errors));
console.log(JSON.stringify(result.data, null, 2)); import { OmnigraphProvider, useOmnigraphQuery, graphql } from "enskit/react/omnigraph";
import { createEnsNodeClient } from "enssdk/core";
import { asInterpretedName } from "enssdk";
import { omnigraph } from "enssdk/omnigraph";
const client = createEnsNodeClient({
url: import.meta.env.VITE_ENSNODE_URL || "https://api.v2-sepolia.ensnode.io"
}).extend(omnigraph);
const DomainResolverQuery = graphql(`
query DomainResolver($name: InterpretedName!) {
domain(by: { name: $name }) {
resolver {
records { edges { node { node keys coinTypes } } }
permissions { resources { edges { node { resource users { edges { node { user { address } roles } } } } } } }
events { totalCount edges { node { topics data timestamp } } }
}
}
}
`);
function DomainResolverResult() {
const [result] = useOmnigraphQuery({
query: DomainResolverQuery,
variables: {
name: asInterpretedName("demomigration.eth"),
},
});
const { data, fetching, error } = result;
if (!data && fetching) return <p>Loading…</p>;
if (error) return <p>Error: {error.message}</p>;
if (!data) return <p>No data returned.</p>;
const formatted = JSON.stringify(
data,
(_, value) => (typeof value === "bigint" ? value.toString() : value),
2,
);
return <code>{formatted}</code>;
}
export default function App() {
return (
<OmnigraphProvider client={client}>
<DomainResolverResult />
</OmnigraphProvider>
);
}
# 1. Create project
mkdir -p my-ens-script/src && cd my-ens-script
npm init -y && touch src/index.ts
npm pkg set type=module scripts.start="tsx src/index.ts"
# 2. Install dependencies
npm install enssdk@1.13.1 && npm install -D tsx typescript @types/node
# 3. Paste the TypeScript snippet above into src/index.ts
# 4. Run
ENSNODE_URL=https://api.v2-sepolia.ensnode.io npm start
# 1. Create project
mkdir -p my-ens-script/src && cd my-ens-script
pnpm init && touch src/index.ts
pnpm pkg set type=module scripts.start="tsx src/index.ts"
# 2. Install dependencies
pnpm add enssdk@1.13.1 && pnpm add -D tsx typescript @types/node
# 3. Paste the TypeScript snippet above into src/index.ts
# 4. Run
ENSNODE_URL=https://api.v2-sepolia.ensnode.io pnpm start
# 1. Create project
npm create vite@latest my-ens-app -- --template react-ts --no-interactive --no-immediate
cd my-ens-app
# 2. Install dependencies
npm install
npm install enskit@1.13.1 enssdk@1.13.1
# 3. Copy the TSX snippet above into src/App.tsx
# 4. Run
VITE_ENSNODE_URL=https://api.v2-sepolia.ensnode.io npm run dev
# 1. Create project
pnpm create vite@latest my-ens-app --template react-ts --no-interactive --no-immediate
cd my-ens-app
# 2. Install dependencies
pnpm install
pnpm add enskit@1.13.1 enssdk@1.13.1
# 3. Copy the TSX snippet above into src/App.tsx
# 4. Run
VITE_ENSNODE_URL=https://api.v2-sepolia.ensnode.io pnpm run dev
Run in ENSAdmin
Open an interactive playground to execute this query on our sepolia-v2
ENSNode instance.
GraphQL Query
query DomainResolver($name: InterpretedName!) { domain(by: { name: $name }) { resolver { records { edges { node { node keys coinTypes } } } permissions { resources { edges { node { resource users { edges { node { user { address } roles } } } } } } } events { totalCount edges { node { topics data timestamp } } } } }}Payload and transport examples
{ "name": "demomigration.eth"}
Response is an illustrative snapshot; live data depends on your ENSNode instance. The curl tab shows a POST to
https://api.v2-sepolia.ensnode.io/api/omnigraph
Open an interactive playground to execute this query on our sepolia-v2
ENSNode instance.
TypeScript
import { createEnsNodeClient } from "enssdk/core";import { asInterpretedName } from "enssdk";import { graphql, omnigraph } from "enssdk/omnigraph";
const client = createEnsNodeClient({ url: process.env.ENSNODE_URL || "https://api.v2-sepolia.ensnode.io"}).extend(omnigraph);
const DomainResolverQuery = graphql(` query DomainResolver($name: InterpretedName!) { domain(by: { name: $name }) { resolver { records { edges { node { node keys coinTypes } } } permissions { resources { edges { node { resource users { edges { node { user { address } roles } } } } } } } events { totalCount edges { node { topics data timestamp } } } } } }`);
const result = await client.omnigraph.query({ query: DomainResolverQuery, variables: { name: asInterpretedName("demomigration.eth"), },});
if (result.errors) throw new Error(JSON.stringify(result.errors));console.log(JSON.stringify(result.data, null, 2));enssdk setup
# 1. Create projectmkdir -p my-ens-script/src && cd my-ens-scriptnpm init -y && touch src/index.tsnpm pkg set type=module scripts.start="tsx src/index.ts"# 2. Install dependenciesnpm install enssdk@1.13.1 && npm install -D tsx typescript @types/node# 3. Paste the TypeScript snippet above into src/index.ts# 4. RunENSNODE_URL=https://api.v2-sepolia.ensnode.io npm startSee the enssdk docs for gql.tada plugin and tsconfig setup.
Open an interactive playground to execute this query on our sepolia-v2
ENSNode instance.
TSX (React)
import { OmnigraphProvider, useOmnigraphQuery, graphql } from "enskit/react/omnigraph";import { createEnsNodeClient } from "enssdk/core";import { asInterpretedName } from "enssdk";import { omnigraph } from "enssdk/omnigraph";
const client = createEnsNodeClient({ url: import.meta.env.VITE_ENSNODE_URL || "https://api.v2-sepolia.ensnode.io"}).extend(omnigraph);
const DomainResolverQuery = graphql(` query DomainResolver($name: InterpretedName!) { domain(by: { name: $name }) { resolver { records { edges { node { node keys coinTypes } } } permissions { resources { edges { node { resource users { edges { node { user { address } roles } } } } } } } events { totalCount edges { node { topics data timestamp } } } } } }`);
function DomainResolverResult() { const [result] = useOmnigraphQuery({ query: DomainResolverQuery, variables: { name: asInterpretedName("demomigration.eth"), }, }); const { data, fetching, error } = result; if (!data && fetching) return <p>Loading…</p>; if (error) return <p>Error: {error.message}</p>; if (!data) return <p>No data returned.</p>; const formatted = JSON.stringify( data, (_, value) => (typeof value === "bigint" ? value.toString() : value), 2, ); return <code>{formatted}</code>;}
export default function App() { return ( <OmnigraphProvider client={client}> <DomainResolverResult /> </OmnigraphProvider> );}enskit setup
# 1. Create projectnpm create vite@latest my-ens-app -- --template react-ts --no-interactive --no-immediatecd my-ens-app# 2. Install dependenciesnpm installnpm install enskit@1.13.1 enssdk@1.13.1# 3. Copy the TSX snippet above into src/App.tsx# 4. RunVITE_ENSNODE_URL=https://api.v2-sepolia.ensnode.io npm run devSee the enskit docs for gql.tada plugin and provider setup.
Back to Examples