From b6c52d2abed9fe27d413fddc85b99ce30b70121d Mon Sep 17 00:00:00 2001 From: shrugs Date: Thu, 21 May 2026 16:44:34 -0500 Subject: [PATCH 1/5] feat(docs): snapshot v1.14.0 Omnigraph examples Cut the per-version Omnigraph example snapshot for v1.14.0 (examples, schema, responses) under docs/.../versions/v1.14.0. Responses fetched from the staged v2 Sepolia blue deployment, since prod still serves the 1.13.1 schema. ACTIVE_OMNIGRAPH_VERSION stays v1.13.1 until v1.14.0 is promoted to prod. Also: - fix the SepoliaV2 domain-resolver example: SEPOLIA_V2_NAME_WITH_OWNED_RESOLVER now points to demomigration.eth (records/permissions/events) instead of sfmonicdebmig.eth, which had no owned resolver (rendered assigned: null). - add an OMNIGRAPH_ENDPOINT override to the response-fetch script so responses can be filled from a staged endpoint before promotion. Co-Authored-By: Claude Opus 4.7 (1M context) --- .../omnigraph-domain-resolver-example.md | 5 + .../fetch-omnigraph-example-responses.mts | 4 +- .../versions/v1.14.0/examples.json | 101 + .../versions/v1.14.0/responses.json | 3552 +++++++++++++++++ .../versions/v1.14.0/schema.graphql | 1999 ++++++++++ .../versions/v1.14.0/snapshot.json | 8 + .../src/omnigraph-api/example-queries.ts | 2 +- 7 files changed, 5669 insertions(+), 2 deletions(-) create mode 100644 .changeset/omnigraph-domain-resolver-example.md create mode 100644 docs/ensnode.io/src/data/omnigraph-examples/versions/v1.14.0/examples.json create mode 100644 docs/ensnode.io/src/data/omnigraph-examples/versions/v1.14.0/responses.json create mode 100644 docs/ensnode.io/src/data/omnigraph-examples/versions/v1.14.0/schema.graphql create mode 100644 docs/ensnode.io/src/data/omnigraph-examples/versions/v1.14.0/snapshot.json diff --git a/.changeset/omnigraph-domain-resolver-example.md b/.changeset/omnigraph-domain-resolver-example.md new file mode 100644 index 0000000000..382867b1af --- /dev/null +++ b/.changeset/omnigraph-domain-resolver-example.md @@ -0,0 +1,5 @@ +--- +"@ensnode/ensnode-sdk": patch +--- + +fix Omnigraph `domain-resolver` example: `SEPOLIA_V2_NAME_WITH_OWNED_RESOLVER` now points to `demomigration.eth`, which has an owned resolver with records/permissions/events. The previous name (`sfmonicdebmig.eth`) had no owned resolver, so the example rendered `resolver.assigned: null`. diff --git a/docs/ensnode.io/scripts/fetch-omnigraph-example-responses.mts b/docs/ensnode.io/scripts/fetch-omnigraph-example-responses.mts index 8b4755e16d..8fbb8422ab 100644 --- a/docs/ensnode.io/scripts/fetch-omnigraph-example-responses.mts +++ b/docs/ensnode.io/scripts/fetch-omnigraph-example-responses.mts @@ -60,7 +60,9 @@ if (argIds.length > 0) { const exampleIds = argIds.length > 0 ? argIds : allExampleIds; -const base = ENSNODE_URL.replace(/\/+$/, ""); +// Endpoint defaults to the production v2 Sepolia URL; override to fill responses from a +// staged deployment (e.g. blue/green) before that version is promoted to the prod URL. +const base = (process.env.OMNIGRAPH_ENDPOINT ?? ENSNODE_URL).replace(/\/+$/, ""); const url = `${base}/api/omnigraph`; logStep( diff --git a/docs/ensnode.io/src/data/omnigraph-examples/versions/v1.14.0/examples.json b/docs/ensnode.io/src/data/omnigraph-examples/versions/v1.14.0/examples.json new file mode 100644 index 0000000000..cc618b6ff5 --- /dev/null +++ b/docs/ensnode.io/src/data/omnigraph-examples/versions/v1.14.0/examples.json @@ -0,0 +1,101 @@ +[ + { + "id": "hello-world", + "query": "#\n# Welcome to this interactive playground for\n# ENSNode's GraphQL API!\n#\n# You can get started by typing your query here or by using\n# the Explorer on the left to select the data you want to query.\n#\n# There are also example queries in the tabs above ☝️\nquery HelloWorld {\n domain(by: { name: \"eth\" }) { canonical { name { interpreted } } owner { address } }\n}", + "variables": {} + }, + { + "id": "find-domains", + "query": "query FindDomains(\n $name: DomainsNameFilter!\n $order: DomainsOrderInput\n) {\n domains(\n where: { name: $name }\n order: $order\n first: 20\n ) {\n edges {\n node {\n __typename\n id\n label { interpreted hash }\n canonical { name { interpreted } }\n\n registration { expiry event { timestamp } }\n }\n }\n }\n}", + "variables": { + "name": { + "starts_with": "test-na" + }, + "order": { + "by": "NAME", + "dir": "DESC" + } + } + }, + { + "id": "domain-by-name", + "query": "query DomainByName($name: InterpretedName!) {\n domain(by: {name: $name}) {\n __typename\n id\n label { interpreted hash }\n canonical { name { interpreted } node path { id } }\n owner { address }\n subregistry { contract { chainId address } }\n\n ... on ENSv1Domain {\n rootRegistryOwner { address }\n }\n }\n}", + "variables": { + "name": "test-name.eth" + } + }, + { + "id": "domain-subdomains", + "query": "query DomainSubdomains($name: InterpretedName!) {\n domain(by: {name: $name}) {\n canonical { name { interpreted } }\n subdomains(first: 10) {\n edges {\n node {\n canonical { name { interpreted } }\n }\n }\n }\n }\n}", + "variables": { + "name": "eth" + } + }, + { + "id": "domain-events", + "query": "query DomainEvents($name: InterpretedName!) {\n domain(by: {name: $name}) {\n events {\n totalCount\n edges {\n node {\n from\n to\n topics\n data\n timestamp\n transactionHash\n }\n }\n }\n }\n}", + "variables": { + "name": "sfmonicdebmig.eth" + } + }, + { + "id": "domains-by-address", + "query": "query AccountDomains(\n $address: Address!\n) {\n account(by: { address: $address }) {\n domains {\n edges {\n node {\n label { interpreted }\n canonical { name { interpreted } }\n }\n }\n }\n }\n}", + "variables": { + "address": "0x205d2686da3bf33f64c17f21462c51b5ead462cf" + } + }, + { + "id": "account-events", + "query": "query AccountEvents(\n $address: Address!\n) {\n account(by: { address: $address }) {\n events { totalCount edges { node { topics data timestamp } } }\n }\n}", + "variables": { + "address": "0x205d2686da3bf33f64c17f21462c51b5ead462cf" + } + }, + { + "id": "registry-domains", + "query": "query RegistryDomains(\n $registry: AccountIdInput!\n) {\n registry(by: { contract: $registry }) {\n domains {\n edges {\n node {\n label { interpreted }\n canonical { name { interpreted } }\n }\n }\n }\n }\n}", + "variables": { + "registry": { + "chainId": 99911155111, + "address": "0x31a2bb5d933557cce1b3129993193896d074db92" + } + } + }, + { + "id": "permissions-by-contract", + "query": "query PermissionsByContract(\n $contract: AccountIdInput!\n) {\n permissions(by: { contract: $contract }) {\n resources {\n edges {\n node {\n resource\n users {\n edges {\n node {\n id\n user { address }\n roles\n }\n }\n }\n }\n }\n }\n events { totalCount edges { node { topics data timestamp } } }\n }\n}", + "variables": { + "contract": { + "chainId": 99911155111, + "address": "0x26e5e80e8f36607ef401443fb34eea363c86e8f7" + } + } + }, + { + "id": "permissions-by-user", + "query": "query PermissionsByUser($address: Address!) {\n account(by: { address: $address }) {\n permissions {\n edges {\n node {\n resource\n roles\n }\n }\n }\n }\n}", + "variables": { + "address": "0x205d2686da3bf33f64c17f21462c51b5ead462cf" + } + }, + { + "id": "account-resolver-permissions", + "query": "query AccountResolverPermissions($address: Address!) {\n account(by: { address: $address }) {\n resolverPermissions {\n edges {\n node {\n resolver {\n contract {\n address\n }\n }\n }\n }\n }\n }\n}", + "variables": { + "address": "0x205d2686da3bf33f64c17f21462c51b5ead462cf" + } + }, + { + "id": "domain-resolver", + "query": "query DomainResolver($name: InterpretedName!) {\n domain(by: { name: $name }) {\n resolver {\n assigned {\n records { edges { node { node keys coinTypes } } }\n permissions { resources { edges { node { resource users { edges { node { user { address } roles } } } } } } }\n events { totalCount edges { node { topics data timestamp } } }\n }\n }\n }\n}", + "variables": { + "name": "demomigration.eth" + } + }, + { + "id": "namegraph", + "query": "query Namegraph {\n root {\n id\n domains {\n edges {\n node {\n canonical { name { interpreted } }\n\n subdomains {\n edges {\n node {\n canonical { name { interpreted } }\n\n subdomains {\n edges {\n node {\n canonical { name { interpreted } }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n}", + "variables": {} + } +] diff --git a/docs/ensnode.io/src/data/omnigraph-examples/versions/v1.14.0/responses.json b/docs/ensnode.io/src/data/omnigraph-examples/versions/v1.14.0/responses.json new file mode 100644 index 0000000000..958cbe13b3 --- /dev/null +++ b/docs/ensnode.io/src/data/omnigraph-examples/versions/v1.14.0/responses.json @@ -0,0 +1,3552 @@ +{ + "account-events": { + "data": { + "account": { + "events": { + "totalCount": 34, + "edges": [ + { + "node": { + "topics": [ + "0x0d35bf721a39b614de00ca5038e1deb0cb0c69a278645e83405a7226cf80ba3c", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000205d2686da3bf33f64c17f21462c51b5ead462cf" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111", + "timestamp": "1777903151" + } + }, + { + "node": { + "topics": [ + "0x0d35bf721a39b614de00ca5038e1deb0cb0c69a278645e83405a7226cf80ba3c", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000205d2686da3bf33f64c17f21462c51b5ead462cf" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111", + "timestamp": "1777903159" + } + }, + { + "node": { + "topics": [ + "0x0d35bf721a39b614de00ca5038e1deb0cb0c69a278645e83405a7226cf80ba3c", + "0x6e0a14a9e926ffb9b4329a70e2d7a20ba06ed73c076dfef4e3b5a53600000000", + "0x000000000000000000000000205d2686da3bf33f64c17f21462c51b5ead462cf" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000001110000000000000000000000000000001100000", + "timestamp": "1777903241" + } + }, + { + "node": { + "topics": [ + "0xebd3982eafd13b820e3edb2a4abd57a82ce3b8802e0cd45637a5de51383f9fac", + "0x6e0a14a9e926ffb9b4329a70e2d7a20ba06ed73c076dfef4e3b5a53600000000" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000120000000000000000000000000205d2686da3bf33f64c17f21462c51b5ead462cf000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000eae9395e07389740e192e1ca1ab2b40d78062c0000000000000000000000000000000000000000000000000000000001e13380000000000000000000000000f2942507cb33422a800ff9aa4cb05522a5e1d9e6000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004c3df4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000066f6c646e65770000000000000000000000000000000000000000000000000000", + "timestamp": "1777903241" + } + }, + { + "node": { + "topics": [ + "0x0d35bf721a39b614de00ca5038e1deb0cb0c69a278645e83405a7226cf80ba3c", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000205d2686da3bf33f64c17f21462c51b5ead462cf" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111", + "timestamp": "1777903289" + } + }, + { + "node": { + "topics": [ + "0x448bc014f1536726cf8d54ff3d6481ed3cbc683c2591ca204274009afa09b1a1", + "0x5a5ad90209af8252cd3de958dcd48b83a841a2bf08082158d3293cadc2eb25d3", + "0x8ff70d326c02df6f81873c6010ab75efb2fd146f5e8e39686459cb387c2a6df5" + ], + "data": "0x000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000004777772770000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000047465737400000000000000000000000000000000000000000000000000000000", + "timestamp": "1777903405" + } + }, + { + "node": { + "topics": [ + "0x448bc014f1536726cf8d54ff3d6481ed3cbc683c2591ca204274009afa09b1a1", + "0x5a5ad90209af8252cd3de958dcd48b83a841a2bf08082158d3293cadc2eb25d3", + "0x2361458367e696363fbcc70777d07ebbd2394e89fd0adcaf147faccd1d294d60" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000046e616d650000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000047465737400000000000000000000000000000000000000000000000000000000", + "timestamp": "1777903785" + } + }, + { + "node": { + "topics": [ + "0x0d35bf721a39b614de00ca5038e1deb0cb0c69a278645e83405a7226cf80ba3c", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000205d2686da3bf33f64c17f21462c51b5ead462cf" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111", + "timestamp": "1777904282" + } + }, + { + "node": { + "topics": [ + "0x0d35bf721a39b614de00ca5038e1deb0cb0c69a278645e83405a7226cf80ba3c", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000205d2686da3bf33f64c17f21462c51b5ead462cf" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111", + "timestamp": "1777904315" + } + }, + { + "node": { + "topics": [ + "0x0d35bf721a39b614de00ca5038e1deb0cb0c69a278645e83405a7226cf80ba3c", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000205d2686da3bf33f64c17f21462c51b5ead462cf" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111", + "timestamp": "1777904506" + } + }, + { + "node": { + "topics": [ + "0x0d35bf721a39b614de00ca5038e1deb0cb0c69a278645e83405a7226cf80ba3c", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000205d2686da3bf33f64c17f21462c51b5ead462cf" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111", + "timestamp": "1777904529" + } + }, + { + "node": { + "topics": [ + "0x0d35bf721a39b614de00ca5038e1deb0cb0c69a278645e83405a7226cf80ba3c", + "0x4ff0d1ec44e7361ac103d6278fc8874ce5805ad09171a2e40bd7aa7600000000", + "0x000000000000000000000000205d2686da3bf33f64c17f21462c51b5ead462cf" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000001110000000000000000000000000000001100000", + "timestamp": "1777904615" + } + }, + { + "node": { + "topics": [ + "0xebd3982eafd13b820e3edb2a4abd57a82ce3b8802e0cd45637a5de51383f9fac", + "0x4ff0d1ec44e7361ac103d6278fc8874ce5805ad09171a2e40bd7aa7600000000" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000120000000000000000000000000205d2686da3bf33f64c17f21462c51b5ead462cf00000000000000000000000000000000000000000000000000000000000000000000000000000000000000006a09d0166f8d5a18a015f2641d9978d83180b3f60000000000000000000000000000000000000000000000000000000001e187e0000000000000000000000000f2942507cb33422a800ff9aa4cb05522a5e1d9e6000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004c4b52000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000053574657374000000000000000000000000000000000000000000000000000000", + "timestamp": "1777904615" + } + }, + { + "node": { + "topics": [ + "0x0d35bf721a39b614de00ca5038e1deb0cb0c69a278645e83405a7226cf80ba3c", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000205d2686da3bf33f64c17f21462c51b5ead462cf" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111", + "timestamp": "1777904781" + } + }, + { + "node": { + "topics": [ + "0x0d35bf721a39b614de00ca5038e1deb0cb0c69a278645e83405a7226cf80ba3c", + "0x7dc965611c3e6e4e3eb83ae75164dbe53f2d971316a7452bbd40853700000000", + "0x000000000000000000000000205d2686da3bf33f64c17f21462c51b5ead462cf" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000001110000000000000000000000000000001100000", + "timestamp": "1777904853" + } + }, + { + "node": { + "topics": [ + "0xebd3982eafd13b820e3edb2a4abd57a82ce3b8802e0cd45637a5de51383f9fac", + "0x7dc965611c3e6e4e3eb83ae75164dbe53f2d971316a7452bbd40853700000000" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000120000000000000000000000000205d2686da3bf33f64c17f21462c51b5ead462cf0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000891475534fb2833865975a8187589347cfb8b7290000000000000000000000000000000000000000000000000000000001e187e0000000000000000000000000f2942507cb33422a800ff9aa4cb05522a5e1d9e6000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004c4b52000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000073636367465737400000000000000000000000000000000000000000000000000", + "timestamp": "1777904853" + } + }, + { + "node": { + "topics": [ + "0x0d35bf721a39b614de00ca5038e1deb0cb0c69a278645e83405a7226cf80ba3c", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000205d2686da3bf33f64c17f21462c51b5ead462cf" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111", + "timestamp": "1777904985" + } + }, + { + "node": { + "topics": [ + "0x0d35bf721a39b614de00ca5038e1deb0cb0c69a278645e83405a7226cf80ba3c", + "0x5f9c7bd9c6b0a29bf7d62ba5b3ba8ef0b4db6bc47cb1f50b69092fee00000000", + "0x000000000000000000000000205d2686da3bf33f64c17f21462c51b5ead462cf" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000001110000000000000000000000000000001100000", + "timestamp": "1777905087" + } + }, + { + "node": { + "topics": [ + "0xebd3982eafd13b820e3edb2a4abd57a82ce3b8802e0cd45637a5de51383f9fac", + "0x5f9c7bd9c6b0a29bf7d62ba5b3ba8ef0b4db6bc47cb1f50b69092fee00000000" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000120000000000000000000000000205d2686da3bf33f64c17f21462c51b5ead462cf0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b8d53072bbc78500b71c5b99c600ccdc6a3494bf0000000000000000000000000000000000000000000000000000000001e187e0000000000000000000000000f2942507cb33422a800ff9aa4cb05522a5e1d9e6000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004c4b52000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000073939397465737400000000000000000000000000000000000000000000000000", + "timestamp": "1777905087" + } + }, + { + "node": { + "topics": [ + "0x0d35bf721a39b614de00ca5038e1deb0cb0c69a278645e83405a7226cf80ba3c", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000205d2686da3bf33f64c17f21462c51b5ead462cf" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111", + "timestamp": "1777905602" + } + }, + { + "node": { + "topics": [ + "0x0d35bf721a39b614de00ca5038e1deb0cb0c69a278645e83405a7226cf80ba3c", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000205d2686da3bf33f64c17f21462c51b5ead462cf" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111", + "timestamp": "1777909592" + } + }, + { + "node": { + "topics": [ + "0x0d35bf721a39b614de00ca5038e1deb0cb0c69a278645e83405a7226cf80ba3c", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000205d2686da3bf33f64c17f21462c51b5ead462cf" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111", + "timestamp": "1777909603" + } + }, + { + "node": { + "topics": [ + "0x0d35bf721a39b614de00ca5038e1deb0cb0c69a278645e83405a7226cf80ba3c", + "0xc4ea3bee0eacbf41c56543e5da7c2639572a9634ca708145798da09300000000", + "0x000000000000000000000000205d2686da3bf33f64c17f21462c51b5ead462cf" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000001110000000000000000000000000000001100000", + "timestamp": "1777909678" + } + }, + { + "node": { + "topics": [ + "0xebd3982eafd13b820e3edb2a4abd57a82ce3b8802e0cd45637a5de51383f9fac", + "0xc4ea3bee0eacbf41c56543e5da7c2639572a9634ca708145798da09300000000" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000120000000000000000000000000205d2686da3bf33f64c17f21462c51b5ead462cf00000000000000000000000000000000000000000000000000000000000000000000000000000000000000008ea85c0ce9c7cfec7632a5ab892e74ef6b2ee3300000000000000000000000000000000000000000000000000000000009675300000000000000000000000000f2942507cb33422a800ff9aa4cb05522a5e1d9e6000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000017d6b3b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013696e64657865726973666b6e776f726b696e6700000000000000000000000000", + "timestamp": "1777909678" + } + }, + { + "node": { + "topics": [ + "0xce0457fe73731f824cc272376169235128c118b49d344817417c6d108d155e82", + "0x93cdeb708b7545dc668eb9280176169d1c33cfd8ed6f04690a0bcc88a93fc4ae", + "0x8cfae7abf74b0a8e28a63f0089b1a68133c4f412e05d81726b163695c6fc3580" + ], + "data": "0x0000000000000000000000007255589860cba4e9ef7299865d070fa8dbfd9c93", + "timestamp": "1778528141" + } + }, + { + "node": { + "topics": [ + "0xb3d987963d01b2f68493b4bdb130988f157ea43070d4ad840fee0466ed9370d9", + "0x8cfae7abf74b0a8e28a63f0089b1a68133c4f412e05d81726b163695c6fc3580", + "0x0000000000000000000000007255589860cba4e9ef7299865d070fa8dbfd9c93" + ], + "data": "0x000000000000000000000000000000000000000000000000000000006a27198d", + "timestamp": "1778528141" + } + }, + { + "node": { + "topics": [ + "0xd4735d920b0f87494915f556dd9b54c8f309026070caea5c737245152564d266", + "0xc5be7b748a54c9267c0c776d6f30b6c4b67cd158f283f1723e8a182c089b6af8" + ], + "data": "0x000000000000000000000000205d2686da3bf33f64c17f21462c51b5ead462cf", + "timestamp": "1778528141" + } + }, + { + "node": { + "topics": [ + "0x335721b01866dc23fbee8b6b2c7b1e14d6f05c28cd35a2c934239f94095602a0", + "0xc5be7b748a54c9267c0c776d6f30b6c4b67cd158f283f1723e8a182c089b6af8" + ], + "data": "0x000000000000000000000000e99638b40e4fff0129d56f03b55b6bbc4bbe49b5", + "timestamp": "1778528141" + } + }, + { + "node": { + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x0000000000000000000000007255589860cba4e9ef7299865d070fa8dbfd9c93", + "0x000000000000000000000000205d2686da3bf33f64c17f21462c51b5ead462cf", + "0x8cfae7abf74b0a8e28a63f0089b1a68133c4f412e05d81726b163695c6fc3580" + ], + "data": "0x", + "timestamp": "1778528141" + } + }, + { + "node": { + "topics": [ + "0x0d35bf721a39b614de00ca5038e1deb0cb0c69a278645e83405a7226cf80ba3c", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000205d2686da3bf33f64c17f21462c51b5ead462cf" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111", + "timestamp": "1778528303" + } + }, + { + "node": { + "topics": [ + "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef", + "0x000000000000000000000000205d2686da3bf33f64c17f21462c51b5ead462cf", + "0x0000000000000000000000005587003f8eeee1bc236d48ab39059cbfd99207d7", + "0x8cfae7abf74b0a8e28a63f0089b1a68133c4f412e05d81726b163695c6fc3580" + ], + "data": "0x", + "timestamp": "1778528309" + } + }, + { + "node": { + "topics": [ + "0xce0457fe73731f824cc272376169235128c118b49d344817417c6d108d155e82", + "0x93cdeb708b7545dc668eb9280176169d1c33cfd8ed6f04690a0bcc88a93fc4ae", + "0x8cfae7abf74b0a8e28a63f0089b1a68133c4f412e05d81726b163695c6fc3580" + ], + "data": "0x0000000000000000000000005587003f8eeee1bc236d48ab39059cbfd99207d7", + "timestamp": "1778528309" + } + }, + { + "node": { + "topics": [ + "0x335721b01866dc23fbee8b6b2c7b1e14d6f05c28cd35a2c934239f94095602a0", + "0xc5be7b748a54c9267c0c776d6f30b6c4b67cd158f283f1723e8a182c089b6af8" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000000", + "timestamp": "1778528309" + } + }, + { + "node": { + "topics": [ + "0x0d35bf721a39b614de00ca5038e1deb0cb0c69a278645e83405a7226cf80ba3c", + "0x8cfae7abf74b0a8e28a63f0089b1a68133c4f412e05d81726b16369500000000", + "0x000000000000000000000000205d2686da3bf33f64c17f21462c51b5ead462cf" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000001110000000000000000000000000000001100000", + "timestamp": "1778528309" + } + } + ] + } + } + } + }, + "account-resolver-permissions": { + "data": { + "account": { + "resolverPermissions": { + "edges": [ + { + "node": { + "resolver": { + "contract": { + "address": "0x5f35454af804f1131d6c1261c55b77308be5a11c" + } + } + } + } + ] + } + } + } + }, + "domain-by-name": { + "data": { + "domain": { + "__typename": "ENSv2Domain", + "id": "99911155111-0x31a2bb5d933557cce1b3129993193896d074db92-18650549467948381174706470291653511222307197070371999253038345217664991887360", + "label": { + "interpreted": "test-name", + "hash": "0x293bd640008c5863fbe17a08ae5df5b2484357f5dc95e0fdd089f85e7edbfe5a" + }, + "owner": null, + "subregistry": null, + "canonical": { + "name": { + "interpreted": "test-name.eth" + }, + "node": "0x527f8d39fa87ac23b6431913e880aa29425dc0450651a22d9a3b881a29661a0b", + "path": [ + { + "id": "99911155111-0xfd43dc00ab0d0e247a2827d15dddfc5bd9646a29-35894389512221139346028120028875095598761990588366713962827482865183915769856" + }, + { + "id": "99911155111-0x31a2bb5d933557cce1b3129993193896d074db92-18650549467948381174706470291653511222307197070371999253038345217664991887360" + } + ] + } + } + } + }, + "domain-events": { + "data": { + "domain": { + "events": { + "totalCount": 3, + "edges": [ + { + "node": { + "from": "0xffffffffff52d316b7bd028358089bc8066b8f80", + "to": "0x63736415c705949705ce65ae24db033eaf76c4dc", + "topics": [ + "0x734822851860327a80c624af1471efac6bb0ac641852fc6c7bfeeee3202ae6a8", + "0x7d329898b2e1764e620391e6ee7a37fa65015d506502d80d8a6faaa600000000", + "0x7d329898b2e1764e620391e6ee7a37fa65015d506502d80d8a6faaa6014e8749", + "0x00000000000000000000000063736415c705949705ce65ae24db033eaf76c4dc" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000006bd63f83000000000000000000000000000000000000000000000000000000000000000d73666d6f6e69636465626d696700000000000000000000000000000000000000", + "timestamp": "1777667143", + "transactionHash": "0xea711d3e06bab0782613d1354a68b7a6005279a66d239f2fc273f36ab68e74ae" + } + }, + { + "node": { + "from": "0x2f8e8b1126e75fde0b7f731e7cb5847eba2d2574", + "to": "0x57f1887a8bf19b14fc0df6fd9b2acc9af147ea85", + "topics": [ + "0x2fe093918572373e9f1f0368f414dffd0043a74ae8c9fd7b0e390b26a0d20b6e", + "0x7d329898b2e1764e620391e6ee7a37fa65015d506502d80d8a6faaa600000000", + "0x7d329898b2e1764e620391e6ee7a37fa65015d506502d80d8a6faaa6014e8749", + "0x0000000000000000000000005587003f8eeee1bc236d48ab39059cbfd99207d7" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000600000000000000000000000002f8e8b1126e75fde0b7f731e7cb5847eba2d2574000000000000000000000000000000000000000000000000000000006bd63f83000000000000000000000000000000000000000000000000000000000000000d73666d6f6e69636465626d696700000000000000000000000000000000000000", + "timestamp": "1777667978", + "transactionHash": "0x2e1e3b9dbd5c0c354894ccc7aa00107b2fa504fa3fda44b7a36c71098ca897f6" + } + }, + { + "node": { + "from": "0x2f8e8b1126e75fde0b7f731e7cb5847eba2d2574", + "to": "0x57f1887a8bf19b14fc0df6fd9b2acc9af147ea85", + "topics": [ + "0xc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62", + "0x0000000000000000000000005587003f8eeee1bc236d48ab39059cbfd99207d7", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000002f8e8b1126e75fde0b7f731e7cb5847eba2d2574" + ], + "data": "0x7d329898b2e1764e620391e6ee7a37fa65015d506502d80d8a6faaa6000000000000000000000000000000000000000000000000000000000000000000000001", + "timestamp": "1777667978", + "transactionHash": "0x2e1e3b9dbd5c0c354894ccc7aa00107b2fa504fa3fda44b7a36c71098ca897f6" + } + } + ] + } + } + } + }, + "domain-resolver": { + "data": { + "domain": { + "resolver": { + "assigned": { + "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] + } + } + ] + }, + "permissions": { + "resources": { + "edges": [ + { + "node": { + "resource": "0", + "users": { + "edges": [ + { + "node": { + "roles": "7719472615821079694904732333912527190217998977709370935963838933860875309329", + "user": { + "address": "0xf618330f51fa54ce5951d627ee150c0fdadeba43" + } + } + } + ] + } + } + } + ] + } + }, + "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" + } + } + ] + } + } + } + } + } + }, + "domain-subdomains": { + "data": { + "domain": { + "canonical": { + "name": { + "interpreted": "eth" + } + }, + "subdomains": { + "edges": [ + { + "node": { + "canonical": { + "name": { + "interpreted": "$2442.eth" + } + } + } + }, + { + "node": { + "canonical": { + "name": { + "interpreted": "$bless.eth" + } + } + } + }, + { + "node": { + "canonical": { + "name": { + "interpreted": "$degenhobo.eth" + } + } + } + }, + { + "node": { + "canonical": { + "name": { + "interpreted": "$hila.eth" + } + } + } + }, + { + "node": { + "canonical": { + "name": { + "interpreted": "$pauly.eth" + } + } + } + }, + { + "node": { + "canonical": { + "name": { + "interpreted": "$phunks.eth" + } + } + } + }, + { + "node": { + "canonical": { + "name": { + "interpreted": "$vince.eth" + } + } + } + }, + { + "node": { + "canonical": { + "name": { + "interpreted": "00000000000.eth" + } + } + } + }, + { + "node": { + "canonical": { + "name": { + "interpreted": "0000000001.eth" + } + } + } + }, + { + "node": { + "canonical": { + "name": { + "interpreted": "00000000.eth" + } + } + } + } + ] + } + } + } + }, + "domains-by-address": { + "data": { + "account": { + "domains": { + "edges": [ + { + "node": { + "label": { + "interpreted": "5test" + }, + "canonical": { + "name": { + "interpreted": "5test.eth" + } + } + } + }, + { + "node": { + "label": { + "interpreted": "666test" + }, + "canonical": { + "name": { + "interpreted": "666test.eth" + } + } + } + }, + { + "node": { + "label": { + "interpreted": "999test" + }, + "canonical": { + "name": { + "interpreted": "999test.eth" + } + } + } + }, + { + "node": { + "label": { + "interpreted": "indexerisfknworking" + }, + "canonical": { + "name": { + "interpreted": "indexerisfknworking.eth" + } + } + } + }, + { + "node": { + "label": { + "interpreted": "oldnew" + }, + "canonical": { + "name": { + "interpreted": "oldnew.eth" + } + } + } + }, + { + "node": { + "label": { + "interpreted": "test3wallet" + }, + "canonical": { + "name": { + "interpreted": "test3wallet.eth" + } + } + } + } + ] + } + } + } + }, + "find-domains": { + "data": { + "domains": { + "edges": [ + { + "node": { + "__typename": "ENSv2Domain", + "id": "99911155111-0x31a2bb5d933557cce1b3129993193896d074db92-14580361689616036777059995592070852680799975896349261373821065539059361775616", + "label": { + "interpreted": "test-namers", + "hash": "0x203c3138956e0cab1c57684ba6b9cf550db4e624055a6b0e30caee16609eac9d" + }, + "canonical": { + "name": { + "interpreted": "test-namers.eth" + } + }, + "registration": { + "expiry": "1793279532", + "event": { + "timestamp": "1777667178" + } + } + } + }, + { + "node": { + "__typename": "ENSv2Domain", + "id": "99911155111-0x31a2bb5d933557cce1b3129993193896d074db92-18650549467948381174706470291653511222307197070371999253038345217664991887360", + "label": { + "interpreted": "test-name", + "hash": "0x293bd640008c5863fbe17a08ae5df5b2484357f5dc95e0fdd089f85e7edbfe5a" + }, + "canonical": { + "name": { + "interpreted": "test-name.eth" + } + }, + "registration": { + "expiry": "1785702972", + "event": { + "timestamp": "1777667203" + } + } + } + }, + { + "node": { + "__typename": "ENSv1Domain", + "id": "99911155111-0x00000000000c2e074ec69a0dfb2997ba6c7d2e1e-0x527f8d39fa87ac23b6431913e880aa29425dc0450651a22d9a3b881a29661a0b", + "label": { + "interpreted": "test-name", + "hash": "0x293bd640008c5863fbe17a08ae5df5b2484357f5dc95e0fdd089f85e7edbfe5a" + }, + "canonical": { + "name": { + "interpreted": "test-name.eth" + } + }, + "registration": { + "expiry": "1785702972", + "event": { + "timestamp": "1754166972" + } + } + } + } + ] + } + } + }, + "namegraph": { + "data": { + "root": { + "id": "99911155111-0xfd43dc00ab0d0e247a2827d15dddfc5bd9646a29", + "domains": { + "edges": [ + { + "node": { + "canonical": { + "name": { + "interpreted": "aaa" + } + }, + "subdomains": { + "edges": [] + } + } + }, + { + "node": { + "canonical": { + "name": { + "interpreted": "aarp" + } + }, + "subdomains": { + "edges": [] + } + } + }, + { + "node": { + "canonical": { + "name": { + "interpreted": "abb" + } + }, + "subdomains": { + "edges": [] + } + } + }, + { + "node": { + "canonical": { + "name": { + "interpreted": "abbott" + } + }, + "subdomains": { + "edges": [] + } + } + }, + { + "node": { + "canonical": { + "name": { + "interpreted": "abbvie" + } + }, + "subdomains": { + "edges": [] + } + } + }, + { + "node": { + "canonical": { + "name": { + "interpreted": "abc" + } + }, + "subdomains": { + "edges": [] + } + } + }, + { + "node": { + "canonical": { + "name": { + "interpreted": "able" + } + }, + "subdomains": { + "edges": [] + } + } + }, + { + "node": { + "canonical": { + "name": { + "interpreted": "abogado" + } + }, + "subdomains": { + "edges": [] + } + } + }, + { + "node": { + "canonical": { + "name": { + "interpreted": "abudhabi" + } + }, + "subdomains": { + "edges": [] + } + } + }, + { + "node": { + "canonical": { + "name": { + "interpreted": "ac" + } + }, + "subdomains": { + "edges": [] + } + } + }, + { + "node": { + "canonical": { + "name": { + "interpreted": "academy" + } + }, + "subdomains": { + "edges": [] + } + } + }, + { + "node": { + "canonical": { + "name": { + "interpreted": "accenture" + } + }, + "subdomains": { + "edges": [] + } + } + }, + { + "node": { + "canonical": { + "name": { + "interpreted": "accountant" + } + }, + "subdomains": { + "edges": [] + } + } + }, + { + "node": { + "canonical": { + "name": { + "interpreted": "accountants" + } + }, + "subdomains": { + "edges": [] + } + } + }, + { + "node": { + "canonical": { + "name": { + "interpreted": "aco" + } + }, + "subdomains": { + "edges": [] + } + } + }, + { + "node": { + "canonical": { + "name": { + "interpreted": "actor" + } + }, + "subdomains": { + "edges": [] + } + } + }, + { + "node": { + "canonical": { + "name": { + "interpreted": "ad" + } + }, + "subdomains": { + "edges": [] + } + } + }, + { + "node": { + "canonical": { + "name": { + "interpreted": "ads" + } + }, + "subdomains": { + "edges": [] + } + } + }, + { + "node": { + "canonical": { + "name": { + "interpreted": "adult" + } + }, + "subdomains": { + "edges": [] + } + } + }, + { + "node": { + "canonical": { + "name": { + "interpreted": "ae" + } + }, + "subdomains": { + "edges": [] + } + } + }, + { + "node": { + "canonical": { + "name": { + "interpreted": "aeg" + } + }, + "subdomains": { + "edges": [] + } + } + }, + { + "node": { + "canonical": { + "name": { + "interpreted": "aero" + } + }, + "subdomains": { + "edges": [] + } + } + }, + { + "node": { + "canonical": { + "name": { + "interpreted": "aetna" + } + }, + "subdomains": { + "edges": [] + } + } + }, + { + "node": { + "canonical": { + "name": { + "interpreted": "af" + } + }, + "subdomains": { + "edges": [] + } + } + }, + { + "node": { + "canonical": { + "name": { + "interpreted": "afl" + } + }, + "subdomains": { + "edges": [] + } + } + }, + { + "node": { + "canonical": { + "name": { + "interpreted": "africa" + } + }, + "subdomains": { + "edges": [] + } + } + }, + { + "node": { + "canonical": { + "name": { + "interpreted": "ag" + } + }, + "subdomains": { + "edges": [] + } + } + }, + { + "node": { + "canonical": { + "name": { + "interpreted": "agakhan" + } + }, + "subdomains": { + "edges": [] + } + } + }, + { + "node": { + "canonical": { + "name": { + "interpreted": "agency" + } + }, + "subdomains": { + "edges": [] + } + } + }, + { + "node": { + "canonical": { + "name": { + "interpreted": "ai" + } + }, + "subdomains": { + "edges": [] + } + } + }, + { + "node": { + "canonical": { + "name": { + "interpreted": "aig" + } + }, + "subdomains": { + "edges": [] + } + } + }, + { + "node": { + "canonical": { + "name": { + "interpreted": "airbus" + } + }, + "subdomains": { + "edges": [] + } + } + }, + { + "node": { + "canonical": { + "name": { + "interpreted": "airforce" + } + }, + "subdomains": { + "edges": [] + } + } + }, + { + "node": { + "canonical": { + "name": { + "interpreted": "airtel" + } + }, + "subdomains": { + "edges": [] + } + } + }, + { + "node": { + "canonical": { + "name": { + "interpreted": "akdn" + } + }, + "subdomains": { + "edges": [] + } + } + }, + { + "node": { + "canonical": { + "name": { + "interpreted": "al" + } + }, + "subdomains": { + "edges": [] + } + } + }, + { + "node": { + "canonical": { + "name": { + "interpreted": "alibaba" + } + }, + "subdomains": { + "edges": [] + } + } + }, + { + "node": { + "canonical": { + "name": { + "interpreted": "alipay" + } + }, + "subdomains": { + "edges": [] + } + } + }, + { + "node": { + "canonical": { + "name": { + "interpreted": "allfinanz" + } + }, + "subdomains": { + "edges": [] + } + } + }, + { + "node": { + "canonical": { + "name": { + "interpreted": "allstate" + } + }, + "subdomains": { + "edges": [] + } + } + }, + { + "node": { + "canonical": { + "name": { + "interpreted": "ally" + } + }, + "subdomains": { + "edges": [] + } + } + }, + { + "node": { + "canonical": { + "name": { + "interpreted": "alsace" + } + }, + "subdomains": { + "edges": [] + } + } + }, + { + "node": { + "canonical": { + "name": { + "interpreted": "alstom" + } + }, + "subdomains": { + "edges": [] + } + } + }, + { + "node": { + "canonical": { + "name": { + "interpreted": "am" + } + }, + "subdomains": { + "edges": [] + } + } + }, + { + "node": { + "canonical": { + "name": { + "interpreted": "amazon" + } + }, + "subdomains": { + "edges": [] + } + } + }, + { + "node": { + "canonical": { + "name": { + "interpreted": "americanexpress" + } + }, + "subdomains": { + "edges": [] + } + } + }, + { + "node": { + "canonical": { + "name": { + "interpreted": "americanfamily" + } + }, + "subdomains": { + "edges": [] + } + } + }, + { + "node": { + "canonical": { + "name": { + "interpreted": "amex" + } + }, + "subdomains": { + "edges": [] + } + } + }, + { + "node": { + "canonical": { + "name": { + "interpreted": "amfam" + } + }, + "subdomains": { + "edges": [] + } + } + }, + { + "node": { + "canonical": { + "name": { + "interpreted": "amica" + } + }, + "subdomains": { + "edges": [] + } + } + }, + { + "node": { + "canonical": { + "name": { + "interpreted": "amsterdam" + } + }, + "subdomains": { + "edges": [] + } + } + }, + { + "node": { + "canonical": { + "name": { + "interpreted": "analytics" + } + }, + "subdomains": { + "edges": [] + } + } + }, + { + "node": { + "canonical": { + "name": { + "interpreted": "android" + } + }, + "subdomains": { + "edges": [] + } + } + }, + { + "node": { + "canonical": { + "name": { + "interpreted": "anquan" + } + }, + "subdomains": { + "edges": [] + } + } + }, + { + "node": { + "canonical": { + "name": { + "interpreted": "anz" + } + }, + "subdomains": { + "edges": [] + } + } + }, + { + "node": { + "canonical": { + "name": { + "interpreted": "ao" + } + }, + "subdomains": { + "edges": [] + } + } + }, + { + "node": { + "canonical": { + "name": { + "interpreted": "aol" + } + }, + "subdomains": { + "edges": [] + } + } + }, + { + "node": { + "canonical": { + "name": { + "interpreted": "apartments" + } + }, + "subdomains": { + "edges": [] + } + } + }, + { + "node": { + "canonical": { + "name": { + "interpreted": "app" + } + }, + "subdomains": { + "edges": [] + } + } + }, + { + "node": { + "canonical": { + "name": { + "interpreted": "apple" + } + }, + "subdomains": { + "edges": [] + } + } + }, + { + "node": { + "canonical": { + "name": { + "interpreted": "aq" + } + }, + "subdomains": { + "edges": [] + } + } + }, + { + "node": { + "canonical": { + "name": { + "interpreted": "aquarelle" + } + }, + "subdomains": { + "edges": [] + } + } + }, + { + "node": { + "canonical": { + "name": { + "interpreted": "ar" + } + }, + "subdomains": { + "edges": [] + } + } + }, + { + "node": { + "canonical": { + "name": { + "interpreted": "arab" + } + }, + "subdomains": { + "edges": [] + } + } + }, + { + "node": { + "canonical": { + "name": { + "interpreted": "aramco" + } + }, + "subdomains": { + "edges": [] + } + } + }, + { + "node": { + "canonical": { + "name": { + "interpreted": "archi" + } + }, + "subdomains": { + "edges": [] + } + } + }, + { + "node": { + "canonical": { + "name": { + "interpreted": "army" + } + }, + "subdomains": { + "edges": [] + } + } + }, + { + "node": { + "canonical": { + "name": { + "interpreted": "arpa" + } + }, + "subdomains": { + "edges": [] + } + } + }, + { + "node": { + "canonical": { + "name": { + "interpreted": "art" + } + }, + "subdomains": { + "edges": [] + } + } + }, + { + "node": { + "canonical": { + "name": { + "interpreted": "arte" + } + }, + "subdomains": { + "edges": [] + } + } + }, + { + "node": { + "canonical": { + "name": { + "interpreted": "as" + } + }, + "subdomains": { + "edges": [] + } + } + }, + { + "node": { + "canonical": { + "name": { + "interpreted": "asda" + } + }, + "subdomains": { + "edges": [] + } + } + }, + { + "node": { + "canonical": { + "name": { + "interpreted": "asia" + } + }, + "subdomains": { + "edges": [] + } + } + }, + { + "node": { + "canonical": { + "name": { + "interpreted": "associates" + } + }, + "subdomains": { + "edges": [] + } + } + }, + { + "node": { + "canonical": { + "name": { + "interpreted": "at" + } + }, + "subdomains": { + "edges": [] + } + } + }, + { + "node": { + "canonical": { + "name": { + "interpreted": "athleta" + } + }, + "subdomains": { + "edges": [] + } + } + }, + { + "node": { + "canonical": { + "name": { + "interpreted": "attorney" + } + }, + "subdomains": { + "edges": [] + } + } + }, + { + "node": { + "canonical": { + "name": { + "interpreted": "au" + } + }, + "subdomains": { + "edges": [] + } + } + }, + { + "node": { + "canonical": { + "name": { + "interpreted": "auction" + } + }, + "subdomains": { + "edges": [] + } + } + }, + { + "node": { + "canonical": { + "name": { + "interpreted": "audi" + } + }, + "subdomains": { + "edges": [] + } + } + }, + { + "node": { + "canonical": { + "name": { + "interpreted": "audible" + } + }, + "subdomains": { + "edges": [] + } + } + }, + { + "node": { + "canonical": { + "name": { + "interpreted": "audio" + } + }, + "subdomains": { + "edges": [] + } + } + }, + { + "node": { + "canonical": { + "name": { + "interpreted": "auspost" + } + }, + "subdomains": { + "edges": [] + } + } + }, + { + "node": { + "canonical": { + "name": { + "interpreted": "author" + } + }, + "subdomains": { + "edges": [] + } + } + }, + { + "node": { + "canonical": { + "name": { + "interpreted": "auto" + } + }, + "subdomains": { + "edges": [] + } + } + }, + { + "node": { + "canonical": { + "name": { + "interpreted": "autos" + } + }, + "subdomains": { + "edges": [] + } + } + }, + { + "node": { + "canonical": { + "name": { + "interpreted": "aw" + } + }, + "subdomains": { + "edges": [] + } + } + }, + { + "node": { + "canonical": { + "name": { + "interpreted": "aws" + } + }, + "subdomains": { + "edges": [] + } + } + }, + { + "node": { + "canonical": { + "name": { + "interpreted": "ax" + } + }, + "subdomains": { + "edges": [] + } + } + }, + { + "node": { + "canonical": { + "name": { + "interpreted": "axa" + } + }, + "subdomains": { + "edges": [] + } + } + }, + { + "node": { + "canonical": { + "name": { + "interpreted": "az" + } + }, + "subdomains": { + "edges": [] + } + } + }, + { + "node": { + "canonical": { + "name": { + "interpreted": "azure" + } + }, + "subdomains": { + "edges": [] + } + } + }, + { + "node": { + "canonical": { + "name": { + "interpreted": "ba" + } + }, + "subdomains": { + "edges": [] + } + } + }, + { + "node": { + "canonical": { + "name": { + "interpreted": "baby" + } + }, + "subdomains": { + "edges": [] + } + } + }, + { + "node": { + "canonical": { + "name": { + "interpreted": "baidu" + } + }, + "subdomains": { + "edges": [] + } + } + }, + { + "node": { + "canonical": { + "name": { + "interpreted": "banamex" + } + }, + "subdomains": { + "edges": [] + } + } + }, + { + "node": { + "canonical": { + "name": { + "interpreted": "band" + } + }, + "subdomains": { + "edges": [] + } + } + }, + { + "node": { + "canonical": { + "name": { + "interpreted": "bank" + } + }, + "subdomains": { + "edges": [] + } + } + }, + { + "node": { + "canonical": { + "name": { + "interpreted": "bar" + } + }, + "subdomains": { + "edges": [] + } + } + }, + { + "node": { + "canonical": { + "name": { + "interpreted": "barcelona" + } + }, + "subdomains": { + "edges": [] + } + } + } + ] + } + } + } + }, + "permissions-by-contract": { + "data": { + "permissions": { + "events": { + "totalCount": 1, + "edges": [ + { + "node": { + "topics": [ + "0x0d35bf721a39b614de00ca5038e1deb0cb0c69a278645e83405a7226cf80ba3c", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000ffffffffff52d316b7bd028358089bc8066b8f80" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111", + "timestamp": "1777666931" + } + } + ] + }, + "resources": { + "edges": [ + { + "node": { + "resource": "0", + "users": { + "edges": [ + { + "node": { + "id": "99911155111-0x26e5e80e8f36607ef401443fb34eea363c86e8f7-0-0xffffffffff52d316b7bd028358089bc8066b8f80", + "roles": "7719472615821079694904732333912527190217998977709370935963838933860875309329", + "user": { + "address": "0xffffffffff52d316b7bd028358089bc8066b8f80" + } + } + } + ] + } + } + } + ] + } + } + } + }, + "permissions-by-user": { + "data": { + "account": { + "permissions": { + "edges": [ + { + "node": { + "resource": "0", + "roles": "7719472615821079694904732333912527190217998977709370935963838933860875309329" + } + }, + { + "node": { + "resource": "36158207168415100260214102608348213577766657549044985901579930652532998668288", + "roles": "97409655027181761882228017414928043058140282880" + } + }, + { + "node": { + "resource": "43246203543549314115802810355044689536917792524799488001708226217367113302016", + "roles": "97409655027181761882228017414928043058140282880" + } + }, + { + "node": { + "resource": "49772224430518816311047281626325127025073684260557621488740515161950090428416", + "roles": "97409655027181761882228017414928043058140282880" + } + }, + { + "node": { + "resource": "56894942027399033099161118898458574805733373504465726899553475007361084030976", + "roles": "97409655027181761882228017414928043058140282880" + } + }, + { + "node": { + "resource": "63767109507451885371964516220238430314957607793518180461160132644539853701120", + "roles": "97409655027181761882228017414928043058140282880" + } + }, + { + "node": { + "resource": "89067174156525557596752560761174666328155117264317152284715254762292895547392", + "roles": "97409655027181761882228017414928043058140282880" + } + }, + { + "node": { + "resource": "0", + "roles": "7719472615821079694904732333912527190217998977709370935963838933860875309329" + } + }, + { + "node": { + "resource": "0", + "roles": "7719472615821079694904732333912527190217998977709370935963838933860875309329" + } + }, + { + "node": { + "resource": "0", + "roles": "7719472615821079694904732333912527190217998977709370935963838933860875309329" + } + }, + { + "node": { + "resource": "0", + "roles": "7719472615821079694904732333912527190217998977709370935963838933860875309329" + } + }, + { + "node": { + "resource": "0", + "roles": "7719472615821079694904732333912527190217998977709370935963838933860875309329" + } + }, + { + "node": { + "resource": "0", + "roles": "7719472615821079694904732333912527190217998977709370935963838933860875309329" + } + }, + { + "node": { + "resource": "0", + "roles": "7719472615821079694904732333912527190217998977709370935963838933860875309329" + } + }, + { + "node": { + "resource": "0", + "roles": "7719472615821079694904732333912527190217998977709370935963838933860875309329" + } + }, + { + "node": { + "resource": "0", + "roles": "7719472615821079694904732333912527190217998977709370935963838933860875309329" + } + }, + { + "node": { + "resource": "0", + "roles": "7719472615821079694904732333912527190217998977709370935963838933860875309329" + } + }, + { + "node": { + "resource": "0", + "roles": "7719472615821079694904732333912527190217998977709370935963838933860875309329" + } + }, + { + "node": { + "resource": "0", + "roles": "7719472615821079694904732333912527190217998977709370935963838933860875309329" + } + } + ] + } + } + } + }, + "registry-domains": { + "data": { + "registry": { + "domains": { + "edges": [ + { + "node": { + "label": { + "interpreted": "$2442" + }, + "canonical": { + "name": { + "interpreted": "$2442.eth" + } + } + } + }, + { + "node": { + "label": { + "interpreted": "$bless" + }, + "canonical": { + "name": { + "interpreted": "$bless.eth" + } + } + } + }, + { + "node": { + "label": { + "interpreted": "$degenhobo" + }, + "canonical": { + "name": { + "interpreted": "$degenhobo.eth" + } + } + } + }, + { + "node": { + "label": { + "interpreted": "$hila" + }, + "canonical": { + "name": { + "interpreted": "$hila.eth" + } + } + } + }, + { + "node": { + "label": { + "interpreted": "$pauly" + }, + "canonical": { + "name": { + "interpreted": "$pauly.eth" + } + } + } + }, + { + "node": { + "label": { + "interpreted": "$phunks" + }, + "canonical": { + "name": { + "interpreted": "$phunks.eth" + } + } + } + }, + { + "node": { + "label": { + "interpreted": "$vince" + }, + "canonical": { + "name": { + "interpreted": "$vince.eth" + } + } + } + }, + { + "node": { + "label": { + "interpreted": "00000000000" + }, + "canonical": { + "name": { + "interpreted": "00000000000.eth" + } + } + } + }, + { + "node": { + "label": { + "interpreted": "0000000001" + }, + "canonical": { + "name": { + "interpreted": "0000000001.eth" + } + } + } + }, + { + "node": { + "label": { + "interpreted": "00000000" + }, + "canonical": { + "name": { + "interpreted": "00000000.eth" + } + } + } + }, + { + "node": { + "label": { + "interpreted": "00000002" + }, + "canonical": { + "name": { + "interpreted": "00000002.eth" + } + } + } + }, + { + "node": { + "label": { + "interpreted": "00000008" + }, + "canonical": { + "name": { + "interpreted": "00000008.eth" + } + } + } + }, + { + "node": { + "label": { + "interpreted": "0000000" + }, + "canonical": { + "name": { + "interpreted": "0000000.eth" + } + } + } + }, + { + "node": { + "label": { + "interpreted": "000000" + }, + "canonical": { + "name": { + "interpreted": "000000.eth" + } + } + } + }, + { + "node": { + "label": { + "interpreted": "00001" + }, + "canonical": { + "name": { + "interpreted": "00001.eth" + } + } + } + }, + { + "node": { + "label": { + "interpreted": "00002" + }, + "canonical": { + "name": { + "interpreted": "00002.eth" + } + } + } + }, + { + "node": { + "label": { + "interpreted": "00003" + }, + "canonical": { + "name": { + "interpreted": "00003.eth" + } + } + } + }, + { + "node": { + "label": { + "interpreted": "00004" + }, + "canonical": { + "name": { + "interpreted": "00004.eth" + } + } + } + }, + { + "node": { + "label": { + "interpreted": "0000" + }, + "canonical": { + "name": { + "interpreted": "0000.eth" + } + } + } + }, + { + "node": { + "label": { + "interpreted": "-0003" + }, + "canonical": { + "name": { + "interpreted": "-0003.eth" + } + } + } + }, + { + "node": { + "label": { + "interpreted": "-0004" + }, + "canonical": { + "name": { + "interpreted": "-0004.eth" + } + } + } + }, + { + "node": { + "label": { + "interpreted": "-0008" + }, + "canonical": { + "name": { + "interpreted": "-0008.eth" + } + } + } + }, + { + "node": { + "label": { + "interpreted": "000" + }, + "canonical": { + "name": { + "interpreted": "000.eth" + } + } + } + }, + { + "node": { + "label": { + "interpreted": "001" + }, + "canonical": { + "name": { + "interpreted": "001.eth" + } + } + } + }, + { + "node": { + "label": { + "interpreted": "-0034" + }, + "canonical": { + "name": { + "interpreted": "-0034.eth" + } + } + } + }, + { + "node": { + "label": { + "interpreted": "0123456789" + }, + "canonical": { + "name": { + "interpreted": "0123456789.eth" + } + } + } + }, + { + "node": { + "label": { + "interpreted": "0-1-2-3" + }, + "canonical": { + "name": { + "interpreted": "0-1-2-3.eth" + } + } + } + }, + { + "node": { + "label": { + "interpreted": "01249" + }, + "canonical": { + "name": { + "interpreted": "01249.eth" + } + } + } + }, + { + "node": { + "label": { + "interpreted": "01283018238012938123" + }, + "canonical": { + "name": { + "interpreted": "01283018238012938123.eth" + } + } + } + }, + { + "node": { + "label": { + "interpreted": "012983102938012812" + }, + "canonical": { + "name": { + "interpreted": "012983102938012812.eth" + } + } + } + }, + { + "node": { + "label": { + "interpreted": "01425" + }, + "canonical": { + "name": { + "interpreted": "01425.eth" + } + } + } + }, + { + "node": { + "label": { + "interpreted": "01935" + }, + "canonical": { + "name": { + "interpreted": "01935.eth" + } + } + } + }, + { + "node": { + "label": { + "interpreted": "01chayan" + }, + "canonical": { + "name": { + "interpreted": "01chayan.eth" + } + } + } + }, + { + "node": { + "label": { + "interpreted": "02017" + }, + "canonical": { + "name": { + "interpreted": "02017.eth" + } + } + } + }, + { + "node": { + "label": { + "interpreted": "02278" + }, + "canonical": { + "name": { + "interpreted": "02278.eth" + } + } + } + }, + { + "node": { + "label": { + "interpreted": "02686" + }, + "canonical": { + "name": { + "interpreted": "02686.eth" + } + } + } + }, + { + "node": { + "label": { + "interpreted": "02734" + }, + "canonical": { + "name": { + "interpreted": "02734.eth" + } + } + } + }, + { + "node": { + "label": { + "interpreted": "02905" + }, + "canonical": { + "name": { + "interpreted": "02905.eth" + } + } + } + }, + { + "node": { + "label": { + "interpreted": "03141" + }, + "canonical": { + "name": { + "interpreted": "03141.eth" + } + } + } + }, + { + "node": { + "label": { + "interpreted": "03466" + }, + "canonical": { + "name": { + "interpreted": "03466.eth" + } + } + } + }, + { + "node": { + "label": { + "interpreted": "04552" + }, + "canonical": { + "name": { + "interpreted": "04552.eth" + } + } + } + }, + { + "node": { + "label": { + "interpreted": "04761" + }, + "canonical": { + "name": { + "interpreted": "04761.eth" + } + } + } + }, + { + "node": { + "label": { + "interpreted": "04799" + }, + "canonical": { + "name": { + "interpreted": "04799.eth" + } + } + } + }, + { + "node": { + "label": { + "interpreted": "05873" + }, + "canonical": { + "name": { + "interpreted": "05873.eth" + } + } + } + }, + { + "node": { + "label": { + "interpreted": "06557" + }, + "canonical": { + "name": { + "interpreted": "06557.eth" + } + } + } + }, + { + "node": { + "label": { + "interpreted": "07171" + }, + "canonical": { + "name": { + "interpreted": "07171.eth" + } + } + } + }, + { + "node": { + "label": { + "interpreted": "07194" + }, + "canonical": { + "name": { + "interpreted": "07194.eth" + } + } + } + }, + { + "node": { + "label": { + "interpreted": "07333" + }, + "canonical": { + "name": { + "interpreted": "07333.eth" + } + } + } + }, + { + "node": { + "label": { + "interpreted": "08586" + }, + "canonical": { + "name": { + "interpreted": "08586.eth" + } + } + } + }, + { + "node": { + "label": { + "interpreted": "09jul" + }, + "canonical": { + "name": { + "interpreted": "09jul.eth" + } + } + } + }, + { + "node": { + "label": { + "interpreted": "[0ab910abde95e9e1b434c50f9a04428d68bc48b201e3f33906e087eff9c6d37c]" + }, + "canonical": { + "name": { + "interpreted": "[0ab910abde95e9e1b434c50f9a04428d68bc48b201e3f33906e087eff9c6d37c].eth" + } + } + } + }, + { + "node": { + "label": { + "interpreted": "0cf5e" + }, + "canonical": { + "name": { + "interpreted": "0cf5e.eth" + } + } + } + }, + { + "node": { + "label": { + "interpreted": "0mcp" + }, + "canonical": { + "name": { + "interpreted": "0mcp.eth" + } + } + } + }, + { + "node": { + "label": { + "interpreted": "0rxafj" + }, + "canonical": { + "name": { + "interpreted": "0rxafj.eth" + } + } + } + }, + { + "node": { + "label": { + "interpreted": "0trust" + }, + "canonical": { + "name": { + "interpreted": "0trust.eth" + } + } + } + }, + { + "node": { + "label": { + "interpreted": "0vortex" + }, + "canonical": { + "name": { + "interpreted": "0vortex.eth" + } + } + } + }, + { + "node": { + "label": { + "interpreted": "0x0002" + }, + "canonical": { + "name": { + "interpreted": "0x0002.eth" + } + } + } + }, + { + "node": { + "label": { + "interpreted": "0x010y3" + }, + "canonical": { + "name": { + "interpreted": "0x010y3.eth" + } + } + } + }, + { + "node": { + "label": { + "interpreted": "0x0" + }, + "canonical": { + "name": { + "interpreted": "0x0.eth" + } + } + } + }, + { + "node": { + "label": { + "interpreted": "0x420" + }, + "canonical": { + "name": { + "interpreted": "0x420.eth" + } + } + } + }, + { + "node": { + "label": { + "interpreted": "0x55559e7da7aec04b3156e16a60cf57a348843dfb" + }, + "canonical": { + "name": { + "interpreted": "0x55559e7da7aec04b3156e16a60cf57a348843dfb.eth" + } + } + } + }, + { + "node": { + "label": { + "interpreted": "0x5dc5b884e1cf9e0e31e8f645ae98a18e8e22b18b" + }, + "canonical": { + "name": { + "interpreted": "0x5dc5b884e1cf9e0e31e8f645ae98a18e8e22b18b.eth" + } + } + } + }, + { + "node": { + "label": { + "interpreted": "0x666" + }, + "canonical": { + "name": { + "interpreted": "0x666.eth" + } + } + } + }, + { + "node": { + "label": { + "interpreted": "0x7c26" + }, + "canonical": { + "name": { + "interpreted": "0x7c26.eth" + } + } + } + }, + { + "node": { + "label": { + "interpreted": "0x8bit" + }, + "canonical": { + "name": { + "interpreted": "0x8bit.eth" + } + } + } + }, + { + "node": { + "label": { + "interpreted": "0xaacaa" + }, + "canonical": { + "name": { + "interpreted": "0xaacaa.eth" + } + } + } + }, + { + "node": { + "label": { + "interpreted": "0xaegis" + }, + "canonical": { + "name": { + "interpreted": "0xaegis.eth" + } + } + } + }, + { + "node": { + "label": { + "interpreted": "0xakhil" + }, + "canonical": { + "name": { + "interpreted": "0xakhil.eth" + } + } + } + }, + { + "node": { + "label": { + "interpreted": "0xalice" + }, + "canonical": { + "name": { + "interpreted": "0xalice.eth" + } + } + } + }, + { + "node": { + "label": { + "interpreted": "0xarkaw" + }, + "canonical": { + "name": { + "interpreted": "0xarkaw.eth" + } + } + } + }, + { + "node": { + "label": { + "interpreted": "0xasd" + }, + "canonical": { + "name": { + "interpreted": "0xasd.eth" + } + } + } + }, + { + "node": { + "label": { + "interpreted": "0xbnb" + }, + "canonical": { + "name": { + "interpreted": "0xbnb.eth" + } + } + } + }, + { + "node": { + "label": { + "interpreted": "0xbr1" + }, + "canonical": { + "name": { + "interpreted": "0xbr1.eth" + } + } + } + }, + { + "node": { + "label": { + "interpreted": "0xbtc" + }, + "canonical": { + "name": { + "interpreted": "0xbtc.eth" + } + } + } + }, + { + "node": { + "label": { + "interpreted": "0xbuns" + }, + "canonical": { + "name": { + "interpreted": "0xbuns.eth" + } + } + } + }, + { + "node": { + "label": { + "interpreted": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2" + }, + "canonical": { + "name": { + "interpreted": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2.eth" + } + } + } + }, + { + "node": { + "label": { + "interpreted": "0xc0d3rs" + }, + "canonical": { + "name": { + "interpreted": "0xc0d3rs.eth" + } + } + } + }, + { + "node": { + "label": { + "interpreted": "0xcallme" + }, + "canonical": { + "name": { + "interpreted": "0xcallme.eth" + } + } + } + }, + { + "node": { + "label": { + "interpreted": "0xcryptomarine" + }, + "canonical": { + "name": { + "interpreted": "0xcryptomarine.eth" + } + } + } + }, + { + "node": { + "label": { + "interpreted": "0xdao" + }, + "canonical": { + "name": { + "interpreted": "0xdao.eth" + } + } + } + }, + { + "node": { + "label": { + "interpreted": "0xden" + }, + "canonical": { + "name": { + "interpreted": "0xden.eth" + } + } + } + }, + { + "node": { + "label": { + "interpreted": "0xestate" + }, + "canonical": { + "name": { + "interpreted": "0xestate.eth" + } + } + } + }, + { + "node": { + "label": { + "interpreted": "0xfanatic" + }, + "canonical": { + "name": { + "interpreted": "0xfanatic.eth" + } + } + } + }, + { + "node": { + "label": { + "interpreted": "0xfliz" + }, + "canonical": { + "name": { + "interpreted": "0xfliz.eth" + } + } + } + }, + { + "node": { + "label": { + "interpreted": "0xfoundation" + }, + "canonical": { + "name": { + "interpreted": "0xfoundation.eth" + } + } + } + }, + { + "node": { + "label": { + "interpreted": "0xgod" + }, + "canonical": { + "name": { + "interpreted": "0xgod.eth" + } + } + } + }, + { + "node": { + "label": { + "interpreted": "0xitsmetbag999" + }, + "canonical": { + "name": { + "interpreted": "0xitsmetbag999.eth" + } + } + } + }, + { + "node": { + "label": { + "interpreted": "0xjayesh" + }, + "canonical": { + "name": { + "interpreted": "0xjayesh.eth" + } + } + } + }, + { + "node": { + "label": { + "interpreted": "0xkaran" + }, + "canonical": { + "name": { + "interpreted": "0xkaran.eth" + } + } + } + }, + { + "node": { + "label": { + "interpreted": "0xlink" + }, + "canonical": { + "name": { + "interpreted": "0xlink.eth" + } + } + } + }, + { + "node": { + "label": { + "interpreted": "0xlove" + }, + "canonical": { + "name": { + "interpreted": "0xlove.eth" + } + } + } + }, + { + "node": { + "label": { + "interpreted": "0xnft" + }, + "canonical": { + "name": { + "interpreted": "0xnft.eth" + } + } + } + }, + { + "node": { + "label": { + "interpreted": "0xosprey" + }, + "canonical": { + "name": { + "interpreted": "0xosprey.eth" + } + } + } + }, + { + "node": { + "label": { + "interpreted": "0xprabal" + }, + "canonical": { + "name": { + "interpreted": "0xprabal.eth" + } + } + } + }, + { + "node": { + "label": { + "interpreted": "0xrael" + }, + "canonical": { + "name": { + "interpreted": "0xrael.eth" + } + } + } + }, + { + "node": { + "label": { + "interpreted": "0xrudra" + }, + "canonical": { + "name": { + "interpreted": "0xrudra.eth" + } + } + } + }, + { + "node": { + "label": { + "interpreted": "0xsdfsdfsdd" + }, + "canonical": { + "name": { + "interpreted": "0xsdfsdfsdd.eth" + } + } + } + }, + { + "node": { + "label": { + "interpreted": "0xsparsh" + }, + "canonical": { + "name": { + "interpreted": "0xsparsh.eth" + } + } + } + }, + { + "node": { + "label": { + "interpreted": "0xtarc" + }, + "canonical": { + "name": { + "interpreted": "0xtarc.eth" + } + } + } + }, + { + "node": { + "label": { + "interpreted": "0xtestnet" + }, + "canonical": { + "name": { + "interpreted": "0xtestnet.eth" + } + } + } + } + ] + } + } + } + } +} diff --git a/docs/ensnode.io/src/data/omnigraph-examples/versions/v1.14.0/schema.graphql b/docs/ensnode.io/src/data/omnigraph-examples/versions/v1.14.0/schema.graphql new file mode 100644 index 0000000000..0c9e37a06b --- /dev/null +++ b/docs/ensnode.io/src/data/omnigraph-examples/versions/v1.14.0/schema.graphql @@ -0,0 +1,1999 @@ +""" +Represents an individual Account, keyed by its Address. +""" +type Account { + """ + An EVM Address that uniquely identifies this Account on-chain. + """ + address: Address! + + """ + The Domains that are owned by the Account. + """ + domains( + after: String + before: String + first: Int + last: Int + order: DomainsOrderInput + where: AccountDomainsWhereInput + ): AccountDomainsConnection + + """ + All Events for which this Account is the HCA-aware `sender` (i.e. `Event.sender`). + """ + events( + after: String + before: String + first: Int + last: Int + where: AccountEventsWhereInput + ): AccountEventsConnection + + """ + A unique reference to this Account. + """ + id: Address! + + """ + The Permissions granted to this Account, optionally filtered to Permissions in a specific contract. + """ + permissions( + after: String + before: String + first: Int + last: Int + where: AccountPermissionsWhereInput + ): AccountPermissionsConnection + + """ + The Permissions on Registries granted to this Account. + """ + registryPermissions( + after: String + before: String + first: Int + last: Int + ): AccountRegistryPermissionsConnection + + """ + The Permissions on Resolvers granted to this Account. + """ + resolverPermissions( + after: String + before: String + first: Int + last: Int + ): AccountResolverPermissionsConnection +} + +""" +Address an Account by ID or Address. +""" +input AccountByInput @oneOf { + address: Address + id: Address +} + +type AccountDomainsConnection { + edges: [AccountDomainsConnectionEdge!]! + pageInfo: PageInfo! + totalCount: Int! +} + +type AccountDomainsConnectionEdge { + cursor: String! + node: Domain! +} + +""" +Filter for Account.domains query. +""" +input AccountDomainsWhereInput { + """ + If set, filters the set of Domains by canonicality (i.e. reachability by ENS Forward Resolution): `true` for Canonical only, `false` for non-Canonical only. If omitted, returns all Domains owned by the Account regardless of canonicality. + """ + canonical: Boolean + + """ + If set, filters the set of Domains by name. + """ + name: DomainsNameFilter + + """ + If set, filters the set of Domains to only those of the specified ENS protocol version. + """ + version: ENSProtocolVersion +} + +type AccountEventsConnection { + edges: [AccountEventsConnectionEdge!]! + pageInfo: PageInfo! + totalCount: Int! +} + +type AccountEventsConnectionEdge { + cursor: String! + node: Event! +} + +""" +Filter conditions for Account.events (where `sender` is implied by the Account). +""" +input AccountEventsWhereInput { + """ + Filter to events whose `tx.from` matches the provided filter. Not HCA-aware — the Account's HCA-aware filter is applied via `sender = Account.id`. + """ + from: EventsFromFilter + + """ + Filter to events whose selector (event signature) matches the provided filter. + """ + selector: EventsSelectorFilter + + """ + Filter to events whose UnixTimestamp falls within the provided range. + """ + timestamp: EventsTimestampFilter +} + +""" +A CAIP-10 Account ID including chainId and address. +""" +type AccountId { + address: Address! + chainId: ChainId! +} + +""" +A CAIP-10 Account ID including chainId and address. +""" +input AccountIdInput { + address: Address! + chainId: ChainId! +} + +type AccountPermissionsConnection { + edges: [AccountPermissionsConnectionEdge!]! + pageInfo: PageInfo! + totalCount: Int! +} + +type AccountPermissionsConnectionEdge { + cursor: String! + node: PermissionsUser! +} + +""" +Filter for Account.permissions. +""" +input AccountPermissionsWhereInput { + """ + If set, filters this Account's Permissions to those granted in this contract. + """ + contract: AccountIdInput +} + +type AccountRegistryPermissionsConnection { + edges: [AccountRegistryPermissionsConnectionEdge!]! + pageInfo: PageInfo! + totalCount: Int! +} + +type AccountRegistryPermissionsConnectionEdge { + cursor: String! + node: RegistryPermissionsUser! +} + +type AccountResolverPermissionsConnection { + edges: [AccountResolverPermissionsConnectionEdge!]! + pageInfo: PageInfo! + totalCount: Int! +} + +type AccountResolverPermissionsConnectionEdge { + cursor: String! + node: ResolverPermissionsUser! +} + +""" +Address represents an EVM Address in all lowercase. +""" +scalar Address + +""" +A BaseRegistrarRegistration represents a Registration within an ENSv1 BaseRegistrar contract, including those deployed by Basenames and Lineanames. +""" +type BaseRegistrarRegistration implements Registration { + """ + The `baseCost` for registering this Domain, in wei. + """ + baseCost: BigInt + + """ + The Domain for which this Registration exists. + """ + domain: Domain! + + """ + The Event for which this Registration was created. + """ + event: Event! + + """ + Indicates whether this Registration is expired. If the Registration is for an ENSv1Domain, a Registration is only considered `expired` after the Grace Period has elapsed. + """ + expired: Boolean! + + """ + A UnixTimestamp indicating the Registration's expiry, if exists. + """ + expiry: BigInt + + """ + A unique reference to this Registration. + """ + id: RegistrationId! + + """ + Whether this Registration is in the Grace Period (90 days) and can be renewed by the current owner. + """ + isInGracePeriod: Boolean! + + """ + The `premium` for registering this Domain, in wei. + """ + premium: BigInt + + """ + The extra `referrer` data provided with a Registration, if exists. + """ + referrer: Hex + + """ + The Registrant of a Registration, if exists. For ENSv2 Registrations, the protocol-emitted registrant address (the HCA account address if used). + """ + registrant: Account + + """ + The Registrar contract under which this Registration is managed. + """ + registrar: AccountId! + + """ + Renewals that have occurred within this Registration's lifespan to extend its expiration. + """ + renewals(after: String, before: String, first: Int, last: Int): RegistrationRenewalsConnection + + """ + A UnixTimestamp indicating when this Registration was created. + """ + start: BigInt! + + """ + The Unregistrant of a Registration, if exists. For ENSv2 Registrations, the protocol-emitted unregistrant address (the HCA account address if used). + """ + unregistrant: Account + + """ + Additional metadata if this BaseRegistrarRegistration is wrapped by the NameWrapper (i.e. in the case of wrapped .eth names). + """ + wrapped: WrappedBaseRegistrarRegistration +} + +""" +BeautifiedLabel represents an enssdk#BeautifiedLabel: an InterpretedLabel beautified per ENSIP-15 (https://docs.ens.domains/ensip/15) for display. It is display-only and MUST NOT be used as a lookup key. +""" +scalar BeautifiedLabel + +""" +BeautifiedName represents an enssdk#BeautifiedName: an InterpretedName whose normalized labels have been beautified per ENSIP-15 (https://docs.ens.domains/ensip/15) for display. It is display-only and MUST NOT be used as a navigation target or lookup key. +""" +scalar BeautifiedName + +""" +BigInt represents non-fractional signed whole numeric values. +""" +scalar BigInt + +""" +A Canonical Name, exposed in each representation we support. +""" +type CanonicalName { + """ + The Canonical Name as a BeautifiedName: the InterpretedName with its normalized labels beautified per ENSIP-15 (https://docs.ens.domains/ensip/15) for display. Encoded LabelHash labels are preserved verbatim. Display-only; use `interpreted` for navigation targets and lookup keys. + """ + beautified: BeautifiedName! + + """ + The Canonical Name as an InterpretedName: each label is either a normalized literal Label or an Encoded LabelHash. + """ + interpreted: InterpretedName! +} + +""" +ChainId represents an enssdk#ChainId. +""" +scalar ChainId + +""" +CoinType represents an enssdk#CoinType. +""" +scalar CoinType + +""" +Represents a Domain, i.e. an individual Label within the ENS namegraph. It may or may not be Canonical. It may be an ENSv1Domain or an ENSv2Domain. +""" +interface Domain { + """ + Metadata (name, path, and node) related to the Domain's canonicality, if known. Null when the Domain is not in the canonical nametree. + """ + canonical: DomainCanonical + + """ + All Events associated with this Domain. + """ + events( + after: String + before: String + first: Int + last: Int + where: EventsWhereInput + ): DomainEventsConnection + + """ + A unique and stable reference to this Domain. + """ + id: DomainId! + + """ + The Label associated with this Domain in the ENS Namegraph. + """ + label: Label! + + """ + If this is an ENSv1Domain, this is the effective owner of the Domain. If this is an ENSv2Domain, this is the on-chain owner address (the HCA account address if used). + """ + owner: Account + + """ + The Domain that this Domain's parent Registry declares as its Canonical Domain, if any. Follows a single unidirectional pointer (`Registry.canonicalDomainId`) and does NOT enforce bidirectional canonical-edge agreement: a non-canonical Domain may have a non-null `parent`, and a canonical Domain's `parent` may itself be non-canonical. Null when the parent Registry does not declare a Canonical Domain. + """ + parent: Domain + + """ + The latest Registration for this Domain, if exists. + """ + registration: Registration + + """ + All Registrations for a Domain, including the latest Registration. + """ + registrations(after: String, before: String, first: Int, last: Int): DomainRegistrationsConnection + + """ + The Registry under which this Domain exists. + """ + registry: Registry! + + """ + Resolver relationship metadata for this Domain. + """ + resolver: DomainResolver! + + """ + All Domains that are direct descendents of this Domain in the namegraph. + """ + subdomains( + after: String + before: String + first: Int + last: Int + order: DomainsOrderInput + where: SubdomainsWhereInput + ): DomainSubdomainsConnection + + """ + The Registry this Domain declares as its Subregistry, if exists. + """ + subregistry: Registry +} + +""" +Canonicality metadata for a Domain, including its name, depth, path, and node (namehash). +""" +type DomainCanonical { + """ + The depth of this Domain, i.e. the number of labels in this Domain's Canonical Name (e.g. 2 for `vitalik.eth`). + """ + depth: Int! + + """ + The Canonical Name for this Domain. + """ + name: CanonicalName! + + """ + The namehash of this Domain's Canonical Name. Note that this is NOT a stable reference to this Domain; use `Domain.id`. + """ + node: Node! + + """ + The Canonical Path from this Domain to the ENS Root, root→leaf inclusive of this Domain. + """ + path: [Domain!]! +} + +type DomainEventsConnection { + edges: [DomainEventsConnectionEdge!]! + pageInfo: PageInfo! + totalCount: Int! +} + +type DomainEventsConnectionEdge { + cursor: String! + node: Event! +} + +""" +DomainId represents an enssdk#DomainId. +""" +scalar DomainId + +""" +Reference a specific Domain. +""" +input DomainIdInput @oneOf { + id: DomainId + name: InterpretedName +} + +""" +Filter Permissions by user address. Exactly one of `eq` or `in` must be provided. +""" +input DomainPermissionsUserFilter @oneOf { + """ + Exact user address match. + """ + eq: Address + + """ + User address matches any value in the set. Max 10 items. An empty set matches nothing. + """ + in: [Address!] +} + +""" +Filter Permissions over this Domain by user. +""" +input DomainPermissionsWhereInput { + """ + Filter Permissions to those whose user matches the provided filter. + """ + user: DomainPermissionsUserFilter +} + +type DomainRegistrationsConnection { + edges: [DomainRegistrationsConnectionEdge!]! + pageInfo: PageInfo! + totalCount: Int! +} + +type DomainRegistrationsConnectionEdge { + cursor: String! + node: Registration! +} + +""" +Metadata describing this Domain's relationship to its Resolver(s). +""" +type DomainResolver { + """ + The Resolver that this Domain has assigned, if any. NOTE that this is the Domain's _assigned_ Resolver, _not_ its _effective_ Resolver, which can only be determined by following ENS Forward Resolution and ENSIP-10. Do NOT use this Domain-Resolver relationship in isolation to resolve records, that operation is NOT ENS Forward Resolution. + """ + assigned: Resolver +} + +type DomainSubdomainsConnection { + edges: [DomainSubdomainsConnectionEdge!]! + pageInfo: PageInfo! + totalCount: Int! +} + +type DomainSubdomainsConnectionEdge { + cursor: String! + node: Domain! +} + +""" +Filter Domains by name. Exactly one of `starts_with`, `eq`, or `in` must be provided. +""" +input DomainsNameFilter @oneOf { + """ + Exact InterpretedName match. Sugar for `in: [eq]`. Combine with `version` to disambiguate across ENS protocol versions. + """ + eq: InterpretedName + + """ + Exact InterpretedName match against any name in the set. Max 100 items. + """ + in: [InterpretedName!] + + """ + Prefix-match on Interpreted Name for typeahead. ex: 'vit', 'vitalik.et'. Case-insensitive (InterpretedName labels are normalized). + """ + starts_with: String +} + +""" +Fields by which domains can be ordered +""" +enum DomainsOrderBy { + DEPTH + NAME + REGISTRATION_EXPIRY + REGISTRATION_TIMESTAMP +} + +""" +Ordering options for domains query. If no order is provided, the default is ASC. +""" +input DomainsOrderInput { + by: DomainsOrderBy! + dir: OrderDirection = ASC +} + +""" +Filter for the top-level domains query. +""" +input DomainsWhereInput { + """ + Filter the set of Domains by name. + """ + name: DomainsNameFilter! + + """ + If set, filters the set of Domains to only those of the specified ENS protocol version. + """ + version: ENSProtocolVersion +} + +""" +An ENS protocol version. +""" +enum ENSProtocolVersion { + ENSv1 + ENSv2 +} + +""" +An ENSv1Domain represents an ENSv1 Domain. +""" +type ENSv1Domain implements Domain { + """ + Metadata (name, path, and node) related to the Domain's canonicality, if known. Null when the Domain is not in the canonical nametree. + """ + canonical: DomainCanonical + + """ + All Events associated with this Domain. + """ + events( + after: String + before: String + first: Int + last: Int + where: EventsWhereInput + ): DomainEventsConnection + + """ + A unique and stable reference to this Domain. + """ + id: DomainId! + + """ + The Label associated with this Domain in the ENS Namegraph. + """ + label: Label! + + """ + The namehash of this ENSv1 Domain. + """ + node: Node! + + """ + If this is an ENSv1Domain, this is the effective owner of the Domain. If this is an ENSv2Domain, this is the on-chain owner address (the HCA account address if used). + """ + owner: Account + + """ + The Domain that this Domain's parent Registry declares as its Canonical Domain, if any. Follows a single unidirectional pointer (`Registry.canonicalDomainId`) and does NOT enforce bidirectional canonical-edge agreement: a non-canonical Domain may have a non-null `parent`, and a canonical Domain's `parent` may itself be non-canonical. Null when the parent Registry does not declare a Canonical Domain. + """ + parent: Domain + + """ + The latest Registration for this Domain, if exists. + """ + registration: Registration + + """ + All Registrations for a Domain, including the latest Registration. + """ + registrations(after: String, before: String, first: Int, last: Int): DomainRegistrationsConnection + + """ + The Registry under which this Domain exists. + """ + registry: Registry! + + """ + Resolver relationship metadata for this Domain. + """ + resolver: DomainResolver! + + """ + The rootRegistryOwner of this Domain, i.e. the owner() of this Domain within the ENSv1 Registry. + """ + rootRegistryOwner: Account + + """ + All Domains that are direct descendents of this Domain in the namegraph. + """ + subdomains( + after: String + before: String + first: Int + last: Int + order: DomainsOrderInput + where: SubdomainsWhereInput + ): DomainSubdomainsConnection + + """ + The Registry this Domain declares as its Subregistry, if exists. + """ + subregistry: Registry +} + +""" +An ENSv1Registry is a concrete ENSv1 Registry contract (the mainnet ENS Registry, the Basenames shadow Registry, or the Lineanames shadow Registry). +""" +type ENSv1Registry implements Registry { + """ + Whether the Registry is Canonical. + """ + canonical: Boolean! + + """ + Contract metadata for this Registry. If this is an ENSv1VirtualRegistry, this will reference the concrete Registry contract under which the parent Domain exists. + """ + contract: AccountId! + + """ + The Domains managed by this Registry. + """ + domains( + after: String + before: String + first: Int + last: Int + order: DomainsOrderInput + where: RegistryDomainsWhereInput + ): RegistryDomainsConnection + + """ + A unique reference to this Registry. + """ + id: RegistryId! + + """ + The Domains for which this Registry is a Subregistry. + """ + parents(after: String, before: String, first: Int, last: Int): RegistryParentsConnection + + """ + The Permissions managed by this Registry. + """ + permissions: Permissions +} + +""" +An ENSv1VirtualRegistry is the virtual Registry managed by an ENSv1 Domain that has children. It is keyed by `(chainId, address, node)` where `(chainId, address)` identify the concrete Registry that houses the parent Domain, and `node` is the parent Domain's namehash. +""" +type ENSv1VirtualRegistry implements Registry { + """ + Whether the Registry is Canonical. + """ + canonical: Boolean! + + """ + Contract metadata for this Registry. If this is an ENSv1VirtualRegistry, this will reference the concrete Registry contract under which the parent Domain exists. + """ + contract: AccountId! + + """ + The Domains managed by this Registry. + """ + domains( + after: String + before: String + first: Int + last: Int + order: DomainsOrderInput + where: RegistryDomainsWhereInput + ): RegistryDomainsConnection + + """ + A unique reference to this Registry. + """ + id: RegistryId! + + """ + The namehash of the parent ENSv1 Domain that owns this virtual Registry. + """ + node: Node! + + """ + The Domains for which this Registry is a Subregistry. + """ + parents(after: String, before: String, first: Int, last: Int): RegistryParentsConnection + + """ + The Permissions managed by this Registry. + """ + permissions: Permissions +} + +""" +An ENSv2Domain represents an ENSv2 Domain. +""" +type ENSv2Domain implements Domain { + """ + Metadata (name, path, and node) related to the Domain's canonicality, if known. Null when the Domain is not in the canonical nametree. + """ + canonical: DomainCanonical + + """ + All Events associated with this Domain. + """ + events( + after: String + before: String + first: Int + last: Int + where: EventsWhereInput + ): DomainEventsConnection + + """ + A unique and stable reference to this Domain. + """ + id: DomainId! + + """ + The Label associated with this Domain in the ENS Namegraph. + """ + label: Label! + + """ + If this is an ENSv1Domain, this is the effective owner of the Domain. If this is an ENSv2Domain, this is the on-chain owner address (the HCA account address if used). + """ + owner: Account + + """ + The Domain that this Domain's parent Registry declares as its Canonical Domain, if any. Follows a single unidirectional pointer (`Registry.canonicalDomainId`) and does NOT enforce bidirectional canonical-edge agreement: a non-canonical Domain may have a non-null `parent`, and a canonical Domain's `parent` may itself be non-canonical. Null when the parent Registry does not declare a Canonical Domain. + """ + parent: Domain + + """ + Permissions for this Domain within its Registry, representing the roles granted to users for this Domain's token. + """ + permissions( + after: String + before: String + first: Int + last: Int + where: DomainPermissionsWhereInput + ): ENSv2DomainPermissionsConnection + + """ + The latest Registration for this Domain, if exists. + """ + registration: Registration + + """ + All Registrations for a Domain, including the latest Registration. + """ + registrations(after: String, before: String, first: Int, last: Int): DomainRegistrationsConnection + + """ + The Registry under which this Domain exists. + """ + registry: Registry! + + """ + Resolver relationship metadata for this Domain. + """ + resolver: DomainResolver! + + """ + All Domains that are direct descendents of this Domain in the namegraph. + """ + subdomains( + after: String + before: String + first: Int + last: Int + order: DomainsOrderInput + where: SubdomainsWhereInput + ): DomainSubdomainsConnection + + """ + The Registry this Domain declares as its Subregistry, if exists. + """ + subregistry: Registry + + """ + The ENSv2Domain's current Token Id. + """ + tokenId: BigInt! +} + +type ENSv2DomainPermissionsConnection { + edges: [ENSv2DomainPermissionsConnectionEdge!]! + pageInfo: PageInfo! + totalCount: Int! +} + +type ENSv2DomainPermissionsConnectionEdge { + cursor: String! + node: PermissionsUser! +} + +""" +An ENSv2Registry represents an ENSv2 Registry contract. +""" +type ENSv2Registry implements Registry { + """ + Whether the Registry is Canonical. + """ + canonical: Boolean! + + """ + Contract metadata for this Registry. If this is an ENSv1VirtualRegistry, this will reference the concrete Registry contract under which the parent Domain exists. + """ + contract: AccountId! + + """ + The Domains managed by this Registry. + """ + domains( + after: String + before: String + first: Int + last: Int + order: DomainsOrderInput + where: RegistryDomainsWhereInput + ): RegistryDomainsConnection + + """ + A unique reference to this Registry. + """ + id: RegistryId! + + """ + The Domains for which this Registry is a Subregistry. + """ + parents(after: String, before: String, first: Int, last: Int): RegistryParentsConnection + + """ + The Permissions managed by this Registry. + """ + permissions: Permissions +} + +""" +ENSv2RegistryRegistration represents a Registration within an ENSv2 Registry. +""" +type ENSv2RegistryRegistration implements Registration { + """ + The Domain for which this Registration exists. + """ + domain: Domain! + + """ + The Event for which this Registration was created. + """ + event: Event! + + """ + Indicates whether this Registration is expired. If the Registration is for an ENSv1Domain, a Registration is only considered `expired` after the Grace Period has elapsed. + """ + expired: Boolean! + + """ + A UnixTimestamp indicating the Registration's expiry, if exists. + """ + expiry: BigInt + + """ + A unique reference to this Registration. + """ + id: RegistrationId! + + """ + The extra `referrer` data provided with a Registration, if exists. + """ + referrer: Hex + + """ + The Registrant of a Registration, if exists. For ENSv2 Registrations, the protocol-emitted registrant address (the HCA account address if used). + """ + registrant: Account + + """ + The Registrar contract under which this Registration is managed. + """ + registrar: AccountId! + + """ + Renewals that have occurred within this Registration's lifespan to extend its expiration. + """ + renewals(after: String, before: String, first: Int, last: Int): RegistrationRenewalsConnection + + """ + A UnixTimestamp indicating when this Registration was created. + """ + start: BigInt! + + """ + The Unregistrant of a Registration, if exists. For ENSv2 Registrations, the protocol-emitted unregistrant address (the HCA account address if used). + """ + unregistrant: Account +} + +""" +ENSv2RegistryReservation represents a Reservation within an ENSv2 Registry. +""" +type ENSv2RegistryReservation implements Registration { + """ + The Domain for which this Registration exists. + """ + domain: Domain! + + """ + The Event for which this Registration was created. + """ + event: Event! + + """ + Indicates whether this Registration is expired. If the Registration is for an ENSv1Domain, a Registration is only considered `expired` after the Grace Period has elapsed. + """ + expired: Boolean! + + """ + A UnixTimestamp indicating the Registration's expiry, if exists. + """ + expiry: BigInt + + """ + A unique reference to this Registration. + """ + id: RegistrationId! + + """ + The extra `referrer` data provided with a Registration, if exists. + """ + referrer: Hex + + """ + The Registrant of a Registration, if exists. For ENSv2 Registrations, the protocol-emitted registrant address (the HCA account address if used). + """ + registrant: Account + + """ + The Registrar contract under which this Registration is managed. + """ + registrar: AccountId! + + """ + Renewals that have occurred within this Registration's lifespan to extend its expiration. + """ + renewals(after: String, before: String, first: Int, last: Int): RegistrationRenewalsConnection + + """ + A UnixTimestamp indicating when this Registration was created. + """ + start: BigInt! + + """ + The Unregistrant of a Registration, if exists. For ENSv2 Registrations, the protocol-emitted unregistrant address (the HCA account address if used). + """ + unregistrant: Account +} + +""" +An Event represents a discrete Log Event that was emitted on an EVM chain, including associated metadata. +""" +type Event { + """ + Identifies the contract by which this Event was emitted. + """ + address: Address! + + """ + Identifies the Block within which this Event was emitted. + """ + blockHash: Hex! + + """ + The block number within which this Event was emitted. + """ + blockNumber: BigInt! + + """ + The ChainId upon which this Event was emitted. + """ + chainId: ChainId! + + """ + The non-indexed data of this Event's log. + """ + data: Hex! + + """ + Identifies the sender of the Transaction within which this Event was emitted (`tx.from`). Never HCA-aware — always the EOA/relayer that submitted the transaction. Use `Event.sender` for the HCA-aware actor. + """ + from: Address! + + """ + A unique reference to this Event. + """ + id: ID! + + """ + The index of this Event's log within the Block. + """ + logIndex: Int! + + """ + The HCA account address if used, otherwise Transaction.from. + """ + sender: Address! + + """ + The UnixTimestamp indicating the moment in which this Event was emitted. + """ + timestamp: BigInt! + + """ + Identifies the recipient of the Transaction within which this Event was emitted. Null if the transaction deployed a contract. + """ + to: Address + + """ + The indexed topics of this Event's log. + """ + topics: [Hex!]! + + """ + Identifies the Transaction within which this Event was emitted. + """ + transactionHash: Hex! + + """ + The index of the Transaction within the Block. + """ + transactionIndex: Int! +} + +""" +Filter Events by `tx.from`. Not HCA-aware — use `sender` to filter by the HCA-aware actor. Exactly one of `eq` or `in` must be provided. +""" +input EventsFromFilter @oneOf { + """ + Exact `tx.from` match. + """ + eq: Address + + """ + `tx.from` matches any address in the set. Max 10 items. An empty set matches nothing. + """ + in: [Address!] +} + +""" +Filter Events by selector (event signature). Exactly one of `eq` or `in` must be provided. +""" +input EventsSelectorFilter @oneOf { + """ + Exact selector match. + """ + eq: Hex + + """ + Selector matches any value in the set. Max 10 items. An empty set matches nothing. + """ + in: [Hex!] +} + +""" +Filter Events by HCA-aware `sender` (the HCA account address if used, otherwise Transaction.from). Exactly one of `eq` or `in` must be provided. +""" +input EventsSenderFilter @oneOf { + """ + Exact `sender` match. + """ + eq: Address + + """ + `sender` matches any address in the set. Max 10 items. An empty set matches nothing. + """ + in: [Address!] +} + +""" +Filter Events by timestamp range. At least one bound must be provided. `gt`/`gte` are mutually exclusive; `lt`/`lte` are mutually exclusive. +""" +input EventsTimestampFilter { + """ + Filter to events strictly after this UnixTimestamp. + """ + gt: BigInt + + """ + Filter to events at or after this UnixTimestamp. + """ + gte: BigInt + + """ + Filter to events strictly before this UnixTimestamp. + """ + lt: BigInt + + """ + Filter to events at or before this UnixTimestamp. + """ + lte: BigInt +} + +""" +Filter conditions for an events connection. +""" +input EventsWhereInput { + """ + Filter to events whose `tx.from` matches the provided filter. Not HCA-aware — use `sender` to filter by the HCA-aware actor. + """ + from: EventsFromFilter + + """ + Filter to events whose selector (event signature) matches the provided filter. + """ + selector: EventsSelectorFilter + + """ + Filter to events whose HCA-aware `sender` matches the provided filter (the HCA account address if used, otherwise Transaction.from). + """ + sender: EventsSenderFilter + + """ + Filter to events whose UnixTimestamp falls within the provided range. + """ + timestamp: EventsTimestampFilter +} + +""" +Hex represents viem#Hex. +""" +scalar Hex + +""" +InterpretedLabel represents an enssdk#InterpretedLabel. +""" +scalar InterpretedLabel + +""" +InterpretedName represents an enssdk#InterpretedName. +""" +scalar InterpretedName + +""" +Represents a Label within ENS, providing its hash and interpreted representation. +""" +type Label { + """ + The Label as a BeautifiedLabel: the Interpreted Label beautified per ENSIP-15 (https://docs.ens.domains/ensip/15) for display. An Encoded LabelHash is preserved verbatim. Display-only; use `interpreted` for lookup keys. + (@see https://ensnode.io/docs/reference/terminology#interpreted-label) + """ + beautified: BeautifiedLabel! + + """ + The Label's LabelHash + (@see https://ensnode.io/docs/reference/terminology#labels-labelhashes-labelhash-function) + """ + hash: Hex! + + """ + The Label represented as an Interpreted Label. This is either a normalized Literal Label or an Encoded LabelHash. + (@see https://ensnode.io/docs/reference/terminology#interpreted-label) + """ + interpreted: InterpretedLabel! +} + +""" +Constructs a reference to a specific Node via one of `name` or `node`. +""" +input NameOrNodeInput @oneOf { + name: InterpretedName + node: Node +} + +""" +A NameWrapperRegistration represents a Registration initiated by the ENSv1 NameWrapper. +""" +type NameWrapperRegistration implements Registration { + """ + The Domain for which this Registration exists. + """ + domain: Domain! + + """ + The Event for which this Registration was created. + """ + event: Event! + + """ + Indicates whether this Registration is expired. If the Registration is for an ENSv1Domain, a Registration is only considered `expired` after the Grace Period has elapsed. + """ + expired: Boolean! + + """ + A UnixTimestamp indicating the Registration's expiry, if exists. + """ + expiry: BigInt + + """ + The Fuses for this Registration's Domain in the NameWrapper. + """ + fuses: Int! + + """ + A unique reference to this Registration. + """ + id: RegistrationId! + + """ + The extra `referrer` data provided with a Registration, if exists. + """ + referrer: Hex + + """ + The Registrant of a Registration, if exists. For ENSv2 Registrations, the protocol-emitted registrant address (the HCA account address if used). + """ + registrant: Account + + """ + The Registrar contract under which this Registration is managed. + """ + registrar: AccountId! + + """ + Renewals that have occurred within this Registration's lifespan to extend its expiration. + """ + renewals(after: String, before: String, first: Int, last: Int): RegistrationRenewalsConnection + + """ + A UnixTimestamp indicating when this Registration was created. + """ + start: BigInt! + + """ + The Unregistrant of a Registration, if exists. For ENSv2 Registrations, the protocol-emitted unregistrant address (the HCA account address if used). + """ + unregistrant: Account +} + +""" +Node represents an enssdk#Node. +""" +scalar Node + +""" +Sort direction +""" +enum OrderDirection { + ASC + DESC +} + +type PageInfo { + endCursor: String + hasNextPage: Boolean! + hasPreviousPage: Boolean! + startCursor: String +} + +""" +Permissions +""" +type Permissions { + """ + The contract within which these Permissions are granted. + """ + contract: AccountId! + + """ + All Events associated with these Permissions. + """ + events( + after: String + before: String + first: Int + last: Int + where: EventsWhereInput + ): PermissionsEventsConnection + + """ + A unique reference to this Permission. + """ + id: PermissionsId! + + """ + All PermissionResources managed by this contract. + """ + resources(after: String, before: String, first: Int, last: Int): PermissionsResourcesConnection + + """ + The Root Resource. + """ + root: PermissionsResource! +} + +type PermissionsEventsConnection { + edges: [PermissionsEventsConnectionEdge!]! + pageInfo: PageInfo! + totalCount: Int! +} + +type PermissionsEventsConnectionEdge { + cursor: String! + node: Event! +} + +""" +PermissionsId represents an enssdk#PermissionsId. +""" +scalar PermissionsId + +""" +Address Permissions by ID or AccountId. +""" +input PermissionsIdInput @oneOf { + contract: AccountIdInput + id: PermissionsId +} + +""" +PermissionsResource +""" +type PermissionsResource { + """ + The contract within which these Permissions are granted. + """ + contract: AccountId! + + """ + A unique reference to this PermissionsResource. + """ + id: PermissionsResourceId! + + """ + The Permissions within which this Resource is managed. + """ + permissions: Permissions! + + """ + Identifies the Resource that this PermissionsResource represents. + """ + resource: BigInt! + + """ + The PermissionUsers who have Roles within this Resource. + """ + users(after: String, before: String, first: Int, last: Int): PermissionsResourceUsersConnection +} + +""" +PermissionsResourceId represents an enssdk#PermissionsResourceId. +""" +scalar PermissionsResourceId + +type PermissionsResourceUsersConnection { + edges: [PermissionsResourceUsersConnectionEdge!]! + pageInfo: PageInfo! + totalCount: Int! +} + +type PermissionsResourceUsersConnectionEdge { + cursor: String! + node: PermissionsUser! +} + +type PermissionsResourcesConnection { + edges: [PermissionsResourcesConnectionEdge!]! + pageInfo: PageInfo! + totalCount: Int! +} + +type PermissionsResourcesConnectionEdge { + cursor: String! + node: PermissionsResource! +} + +""" +PermissionsUser +""" +type PermissionsUser { + """ + The contract within which these Permissions are granted. + """ + contract: AccountId! + + """ + All Events associated with this PermissionsUser. + """ + events( + after: String + before: String + first: Int + last: Int + where: EventsWhereInput + ): PermissionsUserEventsConnection + + """ + A unique reference to this PermissionsUser. + """ + id: PermissionsUserId! + + """ + The Resource that this user has Roles within. + """ + resource: BigInt! + + """ + The Roles this User has been granted within this Resource. + """ + roles: BigInt! + + """ + The user/grantee address this Permission is granted to (the HCA account address if used). + """ + user: Account! +} + +type PermissionsUserEventsConnection { + edges: [PermissionsUserEventsConnectionEdge!]! + pageInfo: PageInfo! + totalCount: Int! +} + +type PermissionsUserEventsConnectionEdge { + cursor: String! + node: Event! +} + +""" +PermissionsUserId represents an enssdk#PermissionsUserId. +""" +scalar PermissionsUserId + +type Query { + """ + Identify an Account by ID or Address. + """ + account(by: AccountByInput!): Account + + """ + Identify a Domain by Name or DomainId + """ + domain(by: DomainIdInput!): Domain + + """ + Find Canonical Domains by Name. + """ + domains( + after: String + before: String + first: Int + last: Int + order: DomainsOrderInput + where: DomainsWhereInput! + ): QueryDomainsConnection + + """ + Identify Permissions by ID or AccountId. + """ + permissions(by: PermissionsIdInput!): Permissions + + """ + Identify a Registry by ID or AccountId. If querying by `contract`, only concrete Registries will be returned. + """ + registry(by: RegistryIdInput!): Registry + + """ + Identify a Resolver by ID or AccountId. + """ + resolver(by: ResolverIdInput!): Resolver + + """ + The Root Registry for this namespace. It will be the ENSv2 Root Registry when defined, otherwise the ENSv1 Root Registry. + """ + root: Registry! +} + +type QueryDomainsConnection { + edges: [QueryDomainsConnectionEdge!]! + pageInfo: PageInfo! + totalCount: Int! +} + +type QueryDomainsConnectionEdge { + cursor: String! + node: Domain! +} + +""" +A Registration represents a Domain's registration status within the various registries. +""" +interface Registration { + """ + The Domain for which this Registration exists. + """ + domain: Domain! + + """ + The Event for which this Registration was created. + """ + event: Event! + + """ + Indicates whether this Registration is expired. If the Registration is for an ENSv1Domain, a Registration is only considered `expired` after the Grace Period has elapsed. + """ + expired: Boolean! + + """ + A UnixTimestamp indicating the Registration's expiry, if exists. + """ + expiry: BigInt + + """ + A unique reference to this Registration. + """ + id: RegistrationId! + + """ + The extra `referrer` data provided with a Registration, if exists. + """ + referrer: Hex + + """ + The Registrant of a Registration, if exists. For ENSv2 Registrations, the protocol-emitted registrant address (the HCA account address if used). + """ + registrant: Account + + """ + The Registrar contract under which this Registration is managed. + """ + registrar: AccountId! + + """ + Renewals that have occurred within this Registration's lifespan to extend its expiration. + """ + renewals(after: String, before: String, first: Int, last: Int): RegistrationRenewalsConnection + + """ + A UnixTimestamp indicating when this Registration was created. + """ + start: BigInt! + + """ + The Unregistrant of a Registration, if exists. For ENSv2 Registrations, the protocol-emitted unregistrant address (the HCA account address if used). + """ + unregistrant: Account +} + +""" +RegistrationId represents an enssdk#RegistrationId. +""" +scalar RegistrationId + +type RegistrationRenewalsConnection { + edges: [RegistrationRenewalsConnectionEdge!]! + pageInfo: PageInfo! + totalCount: Int! +} + +type RegistrationRenewalsConnectionEdge { + cursor: String! + node: Renewal! +} + +""" +A Registry represents a Registry contract in the ENS namegraph. It may be an ENSv1Registry (a concrete ENSv1 Registry contract), an ENSv1VirtualRegistry (the virtual Registry managed by an ENSv1 domain that has children), or an ENSv2Registry. +""" +interface Registry { + """ + Whether the Registry is Canonical. + """ + canonical: Boolean! + + """ + Contract metadata for this Registry. If this is an ENSv1VirtualRegistry, this will reference the concrete Registry contract under which the parent Domain exists. + """ + contract: AccountId! + + """ + The Domains managed by this Registry. + """ + domains( + after: String + before: String + first: Int + last: Int + order: DomainsOrderInput + where: RegistryDomainsWhereInput + ): RegistryDomainsConnection + + """ + A unique reference to this Registry. + """ + id: RegistryId! + + """ + The Domains for which this Registry is a Subregistry. + """ + parents(after: String, before: String, first: Int, last: Int): RegistryParentsConnection + + """ + The Permissions managed by this Registry. + """ + permissions: Permissions +} + +type RegistryDomainsConnection { + edges: [RegistryDomainsConnectionEdge!]! + pageInfo: PageInfo! + totalCount: Int! +} + +type RegistryDomainsConnectionEdge { + cursor: String! + node: Domain! +} + +""" +Filter for Registry.domains query. +""" +input RegistryDomainsWhereInput { + """ + If set, filters the set of Domains in this Registry by name. + """ + name: DomainsNameFilter +} + +""" +RegistryId represents an enssdk#RegistryId. +""" +scalar RegistryId + +""" +Address a Registry by ID or AccountId. +""" +input RegistryIdInput @oneOf { + contract: AccountIdInput + id: RegistryId +} + +type RegistryParentsConnection { + edges: [RegistryParentsConnectionEdge!]! + pageInfo: PageInfo! + totalCount: Int! +} + +type RegistryParentsConnectionEdge { + cursor: String! + node: Domain! +} + +type RegistryPermissionsUser { + """ + A unique reference to this RegistryPermissionsUser. + """ + id: PermissionsUserId! + + """ + The Registry in which this Permission is granted. + """ + registry: Registry! + + """ + The Resource for which this Permission is granted. + """ + resource: BigInt! + + """ + The Roles that this Permission grants. + """ + roles: BigInt! + + """ + The user/grantee address this Permission is granted to (the HCA account address if used). + """ + user: Account! +} + +""" +A Renewal represents an extension of a Registration's expiry. +""" +type Renewal { + """ + The `base` cost of a Renewal, in wei, if exists. + """ + base: BigInt + + """ + The duration for which a Registration was extended. + """ + duration: BigInt! + + """ + The Event for which this Renewal was created. + """ + event: Event! + + """ + A unique reference to this Renewal. + """ + id: RenewalId! + + """ + The `premium` cost of a Renewal, in wei, if exists. + """ + premium: BigInt + + """ + The extra `referrer` data provided with a Renewal, if exists. + """ + referrer: Hex +} + +""" +RenewalId represents an enssdk#RenewalId. +""" +scalar RenewalId + +""" +A Resolver represents a Resolver contract on-chain. +""" +type Resolver { + """ + If Resolver is a Bridged Resolver, the Registry to which it Bridges resolution. + """ + bridged: Registry + + """ + Contract metadata for this Resolver. + """ + contract: AccountId! + + """ + All Events associated with this Resolver. + """ + events( + after: String + before: String + first: Int + last: Int + where: EventsWhereInput + ): ResolverEventsConnection + + """ + A unique reference to this Resolver. + """ + id: ResolverId! + + """ + Permissions granted by this Resolver. + """ + permissions: Permissions + + """ + ResolverRecords issued by this Resolver. + """ + records(after: String, before: String, first: Int, last: Int): ResolverRecordsConnection + + """ + Identify a ResolverRecord by `name` or `node`. + """ + records_(by: NameOrNodeInput!): ResolverRecords +} + +type ResolverEventsConnection { + edges: [ResolverEventsConnectionEdge!]! + pageInfo: PageInfo! + totalCount: Int! +} + +type ResolverEventsConnectionEdge { + cursor: String! + node: Event! +} + +""" +ResolverId represents an enssdk#ResolverId. +""" +scalar ResolverId + +""" +Address a Resolver by ID or AccountId. +""" +input ResolverIdInput @oneOf { + contract: AccountIdInput + id: ResolverId +} + +type ResolverPermissionsUser { + """ + A unique reference to this ResolverPermissionsUser. + """ + id: PermissionsUserId! + + """ + The Resolver in which this Permission is granted. + """ + resolver: Resolver! + + """ + The Resource for which this Permission is granted. + """ + resource: BigInt! + + """ + The Roles that this Permission grants. + """ + roles: BigInt! + + """ + The user/grantee address this Permission is granted to (the HCA account address if used). + """ + user: Account! +} + +""" +ResolverRecords represents the _indexed_ records within a Resolver. +""" +type ResolverRecords { + """ + Unique CoinTypes of `addr` records for this `node`. + """ + coinTypes: [CoinType!]! + + """ + A unique reference to these ResolverRecords. + """ + id: ResolverRecordsId! + + """ + Unique keys of `text` records for this `node`. + """ + keys: [String!]! + + """ + The `name` record for this `node`, if any. + """ + name: String + + """ + The Node for which these ResolverRecords are issued. + """ + node: Node! +} + +type ResolverRecordsConnection { + edges: [ResolverRecordsConnectionEdge!]! + pageInfo: PageInfo! + totalCount: Int! +} + +type ResolverRecordsConnectionEdge { + cursor: String! + node: ResolverRecords! +} + +""" +ResolverRecordsId represents an enssdk#ResolverRecordsId. +""" +scalar ResolverRecordsId + +""" +Filter for Domain.subdomains query. +""" +input SubdomainsWhereInput { + """ + If set, filters the set of subdomains by name. + """ + name: DomainsNameFilter +} + +""" +ThreeDNSRegistration represents a Registration within ThreeDNSToken. +""" +type ThreeDNSRegistration implements Registration { + """ + The Domain for which this Registration exists. + """ + domain: Domain! + + """ + The Event for which this Registration was created. + """ + event: Event! + + """ + Indicates whether this Registration is expired. If the Registration is for an ENSv1Domain, a Registration is only considered `expired` after the Grace Period has elapsed. + """ + expired: Boolean! + + """ + A UnixTimestamp indicating the Registration's expiry, if exists. + """ + expiry: BigInt + + """ + A unique reference to this Registration. + """ + id: RegistrationId! + + """ + The extra `referrer` data provided with a Registration, if exists. + """ + referrer: Hex + + """ + The Registrant of a Registration, if exists. For ENSv2 Registrations, the protocol-emitted registrant address (the HCA account address if used). + """ + registrant: Account + + """ + The Registrar contract under which this Registration is managed. + """ + registrar: AccountId! + + """ + Renewals that have occurred within this Registration's lifespan to extend its expiration. + """ + renewals(after: String, before: String, first: Int, last: Int): RegistrationRenewalsConnection + + """ + A UnixTimestamp indicating when this Registration was created. + """ + start: BigInt! + + """ + The Unregistrant of a Registration, if exists. For ENSv2 Registrations, the protocol-emitted unregistrant address (the HCA account address if used). + """ + unregistrant: Account +} + +""" +Additional metadata for BaseRegistrar Registrations wrapped by the NameWrapper (i.e. in the case of a wrapped .eth name) +""" +type WrappedBaseRegistrarRegistration { + """ + The Fuses for this Registration's Domain in the NameWrapper. + """ + fuses: Int! + + """ + The TokenID for this Domain in the NameWrapper. + """ + tokenId: BigInt! +} diff --git a/docs/ensnode.io/src/data/omnigraph-examples/versions/v1.14.0/snapshot.json b/docs/ensnode.io/src/data/omnigraph-examples/versions/v1.14.0/snapshot.json new file mode 100644 index 0000000000..4ae7a273c3 --- /dev/null +++ b/docs/ensnode.io/src/data/omnigraph-examples/versions/v1.14.0/snapshot.json @@ -0,0 +1,8 @@ +{ + "version": "v1.14.0", + "commit": "49400ce8b", + "sdkVersion": "1.14.0", + "schemaTag": "v1.14.0", + "endpoint": "https://api.v2-sepolia.ensnode.io", + "snapshottedAt": "2026-05-21" +} diff --git a/packages/ensnode-sdk/src/omnigraph-api/example-queries.ts b/packages/ensnode-sdk/src/omnigraph-api/example-queries.ts index c34e3f17ef..b81a15b862 100644 --- a/packages/ensnode-sdk/src/omnigraph-api/example-queries.ts +++ b/packages/ensnode-sdk/src/omnigraph-api/example-queries.ts @@ -41,7 +41,7 @@ const SEPOLIA_V2_ADDRESS_WITH_LOT_OF_NAMES = toNormalizedAddress( const DEVNET_NAME_WITH_OWNED_RESOLVER = asInterpretedName("example.eth"); -const SEPOLIA_V2_NAME_WITH_OWNED_RESOLVER = asInterpretedName("sfmonicdebmig.eth"); +const SEPOLIA_V2_NAME_WITH_OWNED_RESOLVER = asInterpretedName("demomigration.eth"); const SEPOLIA_V2_TEST_NAME = asInterpretedName("test-name.eth"); From 962f5e8ec99de88e02c7905c27dedda2a29ba2cb Mon Sep 17 00:00:00 2001 From: shrugs Date: Thu, 21 May 2026 16:48:19 -0500 Subject: [PATCH 2/5] refactor(docs): build omnigraph endpoint URL with the URL API Co-Authored-By: Claude Opus 4.7 (1M context) --- docs/ensnode.io/scripts/fetch-omnigraph-example-responses.mts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docs/ensnode.io/scripts/fetch-omnigraph-example-responses.mts b/docs/ensnode.io/scripts/fetch-omnigraph-example-responses.mts index 8fbb8422ab..6d10d625a4 100644 --- a/docs/ensnode.io/scripts/fetch-omnigraph-example-responses.mts +++ b/docs/ensnode.io/scripts/fetch-omnigraph-example-responses.mts @@ -62,8 +62,7 @@ const exampleIds = argIds.length > 0 ? argIds : allExampleIds; // Endpoint defaults to the production v2 Sepolia URL; override to fill responses from a // staged deployment (e.g. blue/green) before that version is promoted to the prod URL. -const base = (process.env.OMNIGRAPH_ENDPOINT ?? ENSNODE_URL).replace(/\/+$/, ""); -const url = `${base}/api/omnigraph`; +const url = new URL("/api/omnigraph", process.env.OMNIGRAPH_ENDPOINT ?? ENSNODE_URL).toString(); logStep( argIds.length > 0 From b36fc2c683bf4d231014311138a204d917d5e33d Mon Sep 17 00:00:00 2001 From: shrugs Date: Thu, 21 May 2026 16:54:12 -0500 Subject: [PATCH 3/5] =?UTF-8?q?feat(docs):=20add=20ENSv1=E2=86=92ENSv2=20m?= =?UTF-8?q?igration=20Omnigraph=20examples?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add three migration-focused examples to the v1.14.0 snapshot: - account-migrated-names: ENSv1 vs ENSv2 domain counts for an account - batch-migration-check: canonical ENSv2 identity for a batch of names - eth-by-version: the .eth TLD's Domain id in each protocol version These use 1.14-only schema (top-level `domains(where: { version })`), so they render only once v1.14.0 is the active version. Responses fetched from the staged v2 Sepolia blue deployment. Co-Authored-By: Claude Opus 4.7 (1M context) --- .../omnigraph-domain-resolver-example.md | 4 +- .../src/data/omnigraph-examples/meta.ts | 15 ++ .../versions/v1.14.0/examples.json | 19 ++ .../versions/v1.14.0/responses.json | 166 +++++++++++++++--- .../versions/v1.14.0/snapshot.json | 2 +- .../src/omnigraph-api/example-queries.ts | 50 +++++- 6 files changed, 230 insertions(+), 26 deletions(-) diff --git a/.changeset/omnigraph-domain-resolver-example.md b/.changeset/omnigraph-domain-resolver-example.md index 382867b1af..cd6ec24e4c 100644 --- a/.changeset/omnigraph-domain-resolver-example.md +++ b/.changeset/omnigraph-domain-resolver-example.md @@ -2,4 +2,6 @@ "@ensnode/ensnode-sdk": patch --- -fix Omnigraph `domain-resolver` example: `SEPOLIA_V2_NAME_WITH_OWNED_RESOLVER` now points to `demomigration.eth`, which has an owned resolver with records/permissions/events. The previous name (`sfmonicdebmig.eth`) had no owned resolver, so the example rendered `resolver.assigned: null`. +add three ENSv1 → ENSv2 migration Omnigraph examples: `account-migrated-names` (ENSv1 vs ENSv2 domain counts for an account), `batch-migration-check` (canonical ENSv2 identity for a batch of names), and `eth-by-version` (the .eth TLD's Domain id per protocol version). + +also fix the `domain-resolver` example: `SEPOLIA_V2_NAME_WITH_OWNED_RESOLVER` now points to `demomigration.eth`, which has an owned resolver with records/permissions/events. The previous name (`sfmonicdebmig.eth`) had no owned resolver, so the example rendered `resolver.assigned: null`. diff --git a/docs/ensnode.io/src/data/omnigraph-examples/meta.ts b/docs/ensnode.io/src/data/omnigraph-examples/meta.ts index bb580e723a..48b33d43b4 100644 --- a/docs/ensnode.io/src/data/omnigraph-examples/meta.ts +++ b/docs/ensnode.io/src/data/omnigraph-examples/meta.ts @@ -68,4 +68,19 @@ export const OMNIGRAPH_EXAMPLES_META: Record< description: "Walk the root tree: root → domains → nested subdomains (depth-limited).", category: "Exploration", }, + "account-migrated-names": { + name: "Account Migration Counts", + description: "Count an account's ENSv1 vs ENSv2 domains to gauge its migration progress.", + category: "Migration", + }, + "batch-migration-check": { + name: "Batch Migration Check", + description: "Look up a batch of names and their canonical ENSv2 identity in one request.", + category: "Migration", + }, + "eth-by-version": { + name: "ETH TLD By Version", + description: "Resolve the .eth TLD's Domain id in each ENS protocol version.", + category: "Migration", + }, }; diff --git a/docs/ensnode.io/src/data/omnigraph-examples/versions/v1.14.0/examples.json b/docs/ensnode.io/src/data/omnigraph-examples/versions/v1.14.0/examples.json index cc618b6ff5..720cab29cf 100644 --- a/docs/ensnode.io/src/data/omnigraph-examples/versions/v1.14.0/examples.json +++ b/docs/ensnode.io/src/data/omnigraph-examples/versions/v1.14.0/examples.json @@ -97,5 +97,24 @@ "id": "namegraph", "query": "query Namegraph {\n root {\n id\n domains {\n edges {\n node {\n canonical { name { interpreted } }\n\n subdomains {\n edges {\n node {\n canonical { name { interpreted } }\n\n subdomains {\n edges {\n node {\n canonical { name { interpreted } }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n}", "variables": {} + }, + { + "id": "account-migrated-names", + "query": "query AccountMigratedNames($address: Address!) {\n account(by: { address: $address }) {\n v1DomainsCount: domains(where: { version: ENSv1 }) { totalCount }\n v2DomainsCount: domains(where: { version: ENSv2 }) { totalCount }\n }\n}", + "variables": { + "address": "0x2f8e8b1126e75fde0b7f731e7cb5847eba2d2574" + } + }, + { + "id": "batch-migration-check", + "query": "query BatchENSv2MigrationCheck($names: [InterpretedName!]!) {\n domains(where: { name: { in: $names } }) {\n edges {\n node {\n id\n label { interpreted }\n canonical { name { interpreted } }\n }\n }\n }\n}", + "variables": { + "names": ["demomigration.eth", "sfmonicdebmig.eth", "test-name.eth"] + } + }, + { + "id": "eth-by-version", + "query": "query GetEthDomains {\n v1Eth: domains(where: { name: { eq: \"eth\" }, version: ENSv1 }) { edges { node { id } } }\n v2Eth: domains(where: { name: { eq: \"eth\" }, version: ENSv2 }) { edges { node { id } } }\n}", + "variables": {} } ] diff --git a/docs/ensnode.io/src/data/omnigraph-examples/versions/v1.14.0/responses.json b/docs/ensnode.io/src/data/omnigraph-examples/versions/v1.14.0/responses.json index 958cbe13b3..08b6b2ea5e 100644 --- a/docs/ensnode.io/src/data/omnigraph-examples/versions/v1.14.0/responses.json +++ b/docs/ensnode.io/src/data/omnigraph-examples/versions/v1.14.0/responses.json @@ -378,6 +378,18 @@ } } }, + "account-migrated-names": { + "data": { + "account": { + "v2DomainsCount": { + "totalCount": 2 + }, + "v1DomainsCount": { + "totalCount": 2 + } + } + } + }, "account-resolver-permissions": { "data": { "account": { @@ -397,6 +409,92 @@ } } }, + "batch-migration-check": { + "data": { + "domains": { + "edges": [ + { + "node": { + "id": "99911155111-0x00000000000c2e074ec69a0dfb2997ba6c7d2e1e-0xf03176dd9df28dc055c2a488db60771e1274da47e6817bba60a4d430b1f07eab", + "label": { + "interpreted": "demomigration" + }, + "canonical": { + "name": { + "interpreted": "demomigration.eth" + } + } + } + }, + { + "node": { + "id": "99911155111-0x31a2bb5d933557cce1b3129993193896d074db92-16667255088511032258734869288656151879694984502659291947785833813622625665024", + "label": { + "interpreted": "demomigration" + }, + "canonical": { + "name": { + "interpreted": "demomigration.eth" + } + } + } + }, + { + "node": { + "id": "99911155111-0x00000000000c2e074ec69a0dfb2997ba6c7d2e1e-0xe508b211ae047459a93f1869551a45d46e6df1a402871ede77e66a1ede37e441", + "label": { + "interpreted": "sfmonicdebmig" + }, + "canonical": { + "name": { + "interpreted": "sfmonicdebmig.eth" + } + } + } + }, + { + "node": { + "id": "99911155111-0x31a2bb5d933557cce1b3129993193896d074db92-56628501608342160994796573703641383006095849910938450752019652776110824882176", + "label": { + "interpreted": "sfmonicdebmig" + }, + "canonical": { + "name": { + "interpreted": "sfmonicdebmig.eth" + } + } + } + }, + { + "node": { + "id": "99911155111-0x00000000000c2e074ec69a0dfb2997ba6c7d2e1e-0x527f8d39fa87ac23b6431913e880aa29425dc0450651a22d9a3b881a29661a0b", + "label": { + "interpreted": "test-name" + }, + "canonical": { + "name": { + "interpreted": "test-name.eth" + } + } + } + }, + { + "node": { + "id": "99911155111-0x31a2bb5d933557cce1b3129993193896d074db92-18650549467948381174706470291653511222307197070371999253038345217664991887360", + "label": { + "interpreted": "test-name" + }, + "canonical": { + "name": { + "interpreted": "test-name.eth" + } + } + } + } + ] + } + } + }, "domain-by-name": { "data": { "domain": { @@ -539,29 +637,6 @@ } ] }, - "permissions": { - "resources": { - "edges": [ - { - "node": { - "resource": "0", - "users": { - "edges": [ - { - "node": { - "roles": "7719472615821079694904732333912527190217998977709370935963838933860875309329", - "user": { - "address": "0xf618330f51fa54ce5951d627ee150c0fdadeba43" - } - } - } - ] - } - } - } - ] - } - }, "events": { "totalCount": 12, "edges": [ @@ -696,6 +771,29 @@ } } ] + }, + "permissions": { + "resources": { + "edges": [ + { + "node": { + "resource": "0", + "users": { + "edges": [ + { + "node": { + "roles": "7719472615821079694904732333912527190217998977709370935963838933860875309329", + "user": { + "address": "0xf618330f51fa54ce5951d627ee150c0fdadeba43" + } + } + } + ] + } + } + } + ] + } } } } @@ -889,6 +987,28 @@ } } }, + "eth-by-version": { + "data": { + "v1Eth": { + "edges": [ + { + "node": { + "id": "99911155111-0x00000000000c2e074ec69a0dfb2997ba6c7d2e1e-0x93cdeb708b7545dc668eb9280176169d1c33cfd8ed6f04690a0bcc88a93fc4ae" + } + } + ] + }, + "v2Eth": { + "edges": [ + { + "node": { + "id": "99911155111-0xfd43dc00ab0d0e247a2827d15dddfc5bd9646a29-35894389512221139346028120028875095598761990588366713962827482865183915769856" + } + } + ] + } + } + }, "find-domains": { "data": { "domains": { diff --git a/docs/ensnode.io/src/data/omnigraph-examples/versions/v1.14.0/snapshot.json b/docs/ensnode.io/src/data/omnigraph-examples/versions/v1.14.0/snapshot.json index 4ae7a273c3..22f6e0c843 100644 --- a/docs/ensnode.io/src/data/omnigraph-examples/versions/v1.14.0/snapshot.json +++ b/docs/ensnode.io/src/data/omnigraph-examples/versions/v1.14.0/snapshot.json @@ -1,6 +1,6 @@ { "version": "v1.14.0", - "commit": "49400ce8b", + "commit": "962f5e8ec", "sdkVersion": "1.14.0", "schemaTag": "v1.14.0", "endpoint": "https://api.v2-sepolia.ensnode.io", diff --git a/packages/ensnode-sdk/src/omnigraph-api/example-queries.ts b/packages/ensnode-sdk/src/omnigraph-api/example-queries.ts index b81a15b862..ab0552137d 100644 --- a/packages/ensnode-sdk/src/omnigraph-api/example-queries.ts +++ b/packages/ensnode-sdk/src/omnigraph-api/example-queries.ts @@ -33,7 +33,7 @@ const ENS_TEST_ENV_V2_ETH_REGISTRAR = maybeGetDatasourceContract( const VITALIK_ADDRESS = toNormalizedAddress("0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"); // owns sfmonicdeb*.eth (mix of v1 + v2) on sepolia-v2 and holds v2 ETHRegistry permissions -const _SEPOLIA_V2_USER_ADDRESS = toNormalizedAddress("0x2f8e8b1126e75fde0b7f731e7cb5847eba2d2574"); +const SEPOLIA_V2_USER_ADDRESS = toNormalizedAddress("0x2f8e8b1126e75fde0b7f731e7cb5847eba2d2574"); const SEPOLIA_V2_ADDRESS_WITH_LOT_OF_NAMES = toNormalizedAddress( "0x205d2686da3bf33f64c17f21462c51b5ead462cf", @@ -415,6 +415,54 @@ query Namegraph { } } } +}`, + variables: { default: {} }, + }, + + ///////////////////////////// + // ENSv1 → ENSv2 Migration + ///////////////////////////// + { + id: "account-migrated-names", + query: ` +query AccountMigratedNames($address: Address!) { + account(by: { address: $address }) { + v1DomainsCount: domains(where: { version: ENSv1 }) { totalCount } + v2DomainsCount: domains(where: { version: ENSv2 }) { totalCount } + } +}`, + variables: { + default: { address: VITALIK_ADDRESS }, + [ENSNamespaceIds.SepoliaV2]: { address: SEPOLIA_V2_USER_ADDRESS }, + }, + }, + { + id: "batch-migration-check", + query: ` +query BatchENSv2MigrationCheck($names: [InterpretedName!]!) { + domains(where: { name: { in: $names } }) { + edges { + node { + id + label { interpreted } + canonical { name { interpreted } } + } + } + } +}`, + variables: { + default: { names: ["vitalik.eth", "nick.eth"] }, + [ENSNamespaceIds.SepoliaV2]: { + names: ["demomigration.eth", "sfmonicdebmig.eth", "test-name.eth"], + }, + }, + }, + { + id: "eth-by-version", + query: ` +query GetEthDomains { + v1Eth: domains(where: { name: { eq: "eth" }, version: ENSv1 }) { edges { node { id } } } + v2Eth: domains(where: { name: { eq: "eth" }, version: ENSv2 }) { edges { node { id } } } }`, variables: { default: {} }, }, From a254a8c2242574566e182b575e287d07de1346fc Mon Sep 17 00:00:00 2001 From: shrugs Date: Thu, 21 May 2026 16:56:56 -0500 Subject: [PATCH 4/5] chore(docs): drop bootstrap note from v1.13.1 snapshot Co-Authored-By: Claude Opus 4.7 (1M context) --- .../src/data/omnigraph-examples/versions/v1.13.1/snapshot.json | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docs/ensnode.io/src/data/omnigraph-examples/versions/v1.13.1/snapshot.json b/docs/ensnode.io/src/data/omnigraph-examples/versions/v1.13.1/snapshot.json index efb4294ec0..ab89baa5ca 100644 --- a/docs/ensnode.io/src/data/omnigraph-examples/versions/v1.13.1/snapshot.json +++ b/docs/ensnode.io/src/data/omnigraph-examples/versions/v1.13.1/snapshot.json @@ -4,6 +4,5 @@ "sdkVersion": "0.0.0-preview-fix-sha-89c022b-20260519094840", "schemaTag": "v1.13.1", "endpoint": "https://api.v2-sepolia.ensnode.io", - "snapshottedAt": "2026-05-21", - "note": "Bootstrap snapshot. v1.13.1 predates the Omnigraph examples feature, so examples + responses were frozen from the production-pinned SDK preview (which validates 13/13 against the v1.13.1 schema), not from the v1.13.1 release commit." + "snapshottedAt": "2026-05-21" } From 0de0c62a52dbf0b1fbb1761c53872add6465fdc5 Mon Sep 17 00:00:00 2001 From: shrugs Date: Thu, 21 May 2026 17:09:06 -0500 Subject: [PATCH 5/5] fix(docs): retag snapshot v1.14.1, drop batch example, simplify eth example - rename the version snapshot v1.14.0 -> v1.14.1 (the version this ships as after the patch changeset; what prod will serve once blue is promoted) - remove the batch-migration-check example: the version-agnostic name.in query conflated v1/v2 records - simplify eth-by-version to domains(where: { name: { eq: "eth" } }) + __typename, returning one ENSv1Domain and one ENSv2Domain Co-Authored-By: Claude Opus 4.7 (1M context) --- .../omnigraph-domain-resolver-example.md | 2 +- .../src/data/omnigraph-examples/meta.ts | 8 +- .../{v1.14.0 => v1.14.1}/examples.json | 9 +- .../{v1.14.0 => v1.14.1}/responses.json | 104 ++---------------- .../{v1.14.0 => v1.14.1}/schema.graphql | 0 .../{v1.14.0 => v1.14.1}/snapshot.json | 6 +- .../src/omnigraph-api/example-queries.ts | 23 +--- 7 files changed, 19 insertions(+), 133 deletions(-) rename docs/ensnode.io/src/data/omnigraph-examples/versions/{v1.14.0 => v1.14.1}/examples.json (91%) rename docs/ensnode.io/src/data/omnigraph-examples/versions/{v1.14.0 => v1.14.1}/responses.json (97%) rename docs/ensnode.io/src/data/omnigraph-examples/versions/{v1.14.0 => v1.14.1}/schema.graphql (100%) rename docs/ensnode.io/src/data/omnigraph-examples/versions/{v1.14.0 => v1.14.1}/snapshot.json (60%) diff --git a/.changeset/omnigraph-domain-resolver-example.md b/.changeset/omnigraph-domain-resolver-example.md index cd6ec24e4c..cd9a4520e6 100644 --- a/.changeset/omnigraph-domain-resolver-example.md +++ b/.changeset/omnigraph-domain-resolver-example.md @@ -2,6 +2,6 @@ "@ensnode/ensnode-sdk": patch --- -add three ENSv1 → ENSv2 migration Omnigraph examples: `account-migrated-names` (ENSv1 vs ENSv2 domain counts for an account), `batch-migration-check` (canonical ENSv2 identity for a batch of names), and `eth-by-version` (the .eth TLD's Domain id per protocol version). +add two ENSv1 → ENSv2 migration Omnigraph examples: `account-migrated-names` (ENSv1 vs ENSv2 domain counts for an account) and `eth-by-version` (the .eth TLD across protocol versions, one Domain per version discriminated by `__typename`). also fix the `domain-resolver` example: `SEPOLIA_V2_NAME_WITH_OWNED_RESOLVER` now points to `demomigration.eth`, which has an owned resolver with records/permissions/events. The previous name (`sfmonicdebmig.eth`) had no owned resolver, so the example rendered `resolver.assigned: null`. diff --git a/docs/ensnode.io/src/data/omnigraph-examples/meta.ts b/docs/ensnode.io/src/data/omnigraph-examples/meta.ts index 48b33d43b4..92ca459228 100644 --- a/docs/ensnode.io/src/data/omnigraph-examples/meta.ts +++ b/docs/ensnode.io/src/data/omnigraph-examples/meta.ts @@ -73,14 +73,10 @@ export const OMNIGRAPH_EXAMPLES_META: Record< description: "Count an account's ENSv1 vs ENSv2 domains to gauge its migration progress.", category: "Migration", }, - "batch-migration-check": { - name: "Batch Migration Check", - description: "Look up a batch of names and their canonical ENSv2 identity in one request.", - category: "Migration", - }, "eth-by-version": { name: "ETH TLD By Version", - description: "Resolve the .eth TLD's Domain id in each ENS protocol version.", + description: + "Load the .eth TLD across protocol versions: one Domain per version, discriminated by `__typename` (ENSv1Domain / ENSv2Domain).", category: "Migration", }, }; diff --git a/docs/ensnode.io/src/data/omnigraph-examples/versions/v1.14.0/examples.json b/docs/ensnode.io/src/data/omnigraph-examples/versions/v1.14.1/examples.json similarity index 91% rename from docs/ensnode.io/src/data/omnigraph-examples/versions/v1.14.0/examples.json rename to docs/ensnode.io/src/data/omnigraph-examples/versions/v1.14.1/examples.json index 720cab29cf..e70678a607 100644 --- a/docs/ensnode.io/src/data/omnigraph-examples/versions/v1.14.0/examples.json +++ b/docs/ensnode.io/src/data/omnigraph-examples/versions/v1.14.1/examples.json @@ -105,16 +105,9 @@ "address": "0x2f8e8b1126e75fde0b7f731e7cb5847eba2d2574" } }, - { - "id": "batch-migration-check", - "query": "query BatchENSv2MigrationCheck($names: [InterpretedName!]!) {\n domains(where: { name: { in: $names } }) {\n edges {\n node {\n id\n label { interpreted }\n canonical { name { interpreted } }\n }\n }\n }\n}", - "variables": { - "names": ["demomigration.eth", "sfmonicdebmig.eth", "test-name.eth"] - } - }, { "id": "eth-by-version", - "query": "query GetEthDomains {\n v1Eth: domains(where: { name: { eq: \"eth\" }, version: ENSv1 }) { edges { node { id } } }\n v2Eth: domains(where: { name: { eq: \"eth\" }, version: ENSv2 }) { edges { node { id } } }\n}", + "query": "query GetEthDomains {\n domains(where: { name: { eq: \"eth\" } }) {\n edges {\n node {\n __typename\n id\n }\n }\n }\n}", "variables": {} } ] diff --git a/docs/ensnode.io/src/data/omnigraph-examples/versions/v1.14.0/responses.json b/docs/ensnode.io/src/data/omnigraph-examples/versions/v1.14.1/responses.json similarity index 97% rename from docs/ensnode.io/src/data/omnigraph-examples/versions/v1.14.0/responses.json rename to docs/ensnode.io/src/data/omnigraph-examples/versions/v1.14.1/responses.json index 08b6b2ea5e..34896659c0 100644 --- a/docs/ensnode.io/src/data/omnigraph-examples/versions/v1.14.0/responses.json +++ b/docs/ensnode.io/src/data/omnigraph-examples/versions/v1.14.1/responses.json @@ -409,92 +409,6 @@ } } }, - "batch-migration-check": { - "data": { - "domains": { - "edges": [ - { - "node": { - "id": "99911155111-0x00000000000c2e074ec69a0dfb2997ba6c7d2e1e-0xf03176dd9df28dc055c2a488db60771e1274da47e6817bba60a4d430b1f07eab", - "label": { - "interpreted": "demomigration" - }, - "canonical": { - "name": { - "interpreted": "demomigration.eth" - } - } - } - }, - { - "node": { - "id": "99911155111-0x31a2bb5d933557cce1b3129993193896d074db92-16667255088511032258734869288656151879694984502659291947785833813622625665024", - "label": { - "interpreted": "demomigration" - }, - "canonical": { - "name": { - "interpreted": "demomigration.eth" - } - } - } - }, - { - "node": { - "id": "99911155111-0x00000000000c2e074ec69a0dfb2997ba6c7d2e1e-0xe508b211ae047459a93f1869551a45d46e6df1a402871ede77e66a1ede37e441", - "label": { - "interpreted": "sfmonicdebmig" - }, - "canonical": { - "name": { - "interpreted": "sfmonicdebmig.eth" - } - } - } - }, - { - "node": { - "id": "99911155111-0x31a2bb5d933557cce1b3129993193896d074db92-56628501608342160994796573703641383006095849910938450752019652776110824882176", - "label": { - "interpreted": "sfmonicdebmig" - }, - "canonical": { - "name": { - "interpreted": "sfmonicdebmig.eth" - } - } - } - }, - { - "node": { - "id": "99911155111-0x00000000000c2e074ec69a0dfb2997ba6c7d2e1e-0x527f8d39fa87ac23b6431913e880aa29425dc0450651a22d9a3b881a29661a0b", - "label": { - "interpreted": "test-name" - }, - "canonical": { - "name": { - "interpreted": "test-name.eth" - } - } - } - }, - { - "node": { - "id": "99911155111-0x31a2bb5d933557cce1b3129993193896d074db92-18650549467948381174706470291653511222307197070371999253038345217664991887360", - "label": { - "interpreted": "test-name" - }, - "canonical": { - "name": { - "interpreted": "test-name.eth" - } - } - } - } - ] - } - } - }, "domain-by-name": { "data": { "domain": { @@ -527,7 +441,6 @@ "data": { "domain": { "events": { - "totalCount": 3, "edges": [ { "node": { @@ -574,7 +487,8 @@ "transactionHash": "0x2e1e3b9dbd5c0c354894ccc7aa00107b2fa504fa3fda44b7a36c71098ca897f6" } } - ] + ], + "totalCount": 3 } } } @@ -989,19 +903,17 @@ }, "eth-by-version": { "data": { - "v1Eth": { + "domains": { "edges": [ { "node": { + "__typename": "ENSv1Domain", "id": "99911155111-0x00000000000c2e074ec69a0dfb2997ba6c7d2e1e-0x93cdeb708b7545dc668eb9280176169d1c33cfd8ed6f04690a0bcc88a93fc4ae" } - } - ] - }, - "v2Eth": { - "edges": [ + }, { "node": { + "__typename": "ENSv2Domain", "id": "99911155111-0xfd43dc00ab0d0e247a2827d15dddfc5bd9646a29-35894389512221139346028120028875095598761990588366713962827482865183915769856" } } @@ -2295,7 +2207,6 @@ "data": { "permissions": { "events": { - "totalCount": 1, "edges": [ { "node": { @@ -2308,7 +2219,8 @@ "timestamp": "1777666931" } } - ] + ], + "totalCount": 1 }, "resources": { "edges": [ diff --git a/docs/ensnode.io/src/data/omnigraph-examples/versions/v1.14.0/schema.graphql b/docs/ensnode.io/src/data/omnigraph-examples/versions/v1.14.1/schema.graphql similarity index 100% rename from docs/ensnode.io/src/data/omnigraph-examples/versions/v1.14.0/schema.graphql rename to docs/ensnode.io/src/data/omnigraph-examples/versions/v1.14.1/schema.graphql diff --git a/docs/ensnode.io/src/data/omnigraph-examples/versions/v1.14.0/snapshot.json b/docs/ensnode.io/src/data/omnigraph-examples/versions/v1.14.1/snapshot.json similarity index 60% rename from docs/ensnode.io/src/data/omnigraph-examples/versions/v1.14.0/snapshot.json rename to docs/ensnode.io/src/data/omnigraph-examples/versions/v1.14.1/snapshot.json index 22f6e0c843..2a87cdad3d 100644 --- a/docs/ensnode.io/src/data/omnigraph-examples/versions/v1.14.0/snapshot.json +++ b/docs/ensnode.io/src/data/omnigraph-examples/versions/v1.14.1/snapshot.json @@ -1,8 +1,8 @@ { - "version": "v1.14.0", - "commit": "962f5e8ec", + "version": "v1.14.1", + "commit": "a254a8c22", "sdkVersion": "1.14.0", - "schemaTag": "v1.14.0", + "schemaTag": "v1.14.1", "endpoint": "https://api.v2-sepolia.ensnode.io", "snapshottedAt": "2026-05-21" } diff --git a/packages/ensnode-sdk/src/omnigraph-api/example-queries.ts b/packages/ensnode-sdk/src/omnigraph-api/example-queries.ts index ab0552137d..af9eced684 100644 --- a/packages/ensnode-sdk/src/omnigraph-api/example-queries.ts +++ b/packages/ensnode-sdk/src/omnigraph-api/example-queries.ts @@ -437,32 +437,17 @@ query AccountMigratedNames($address: Address!) { }, }, { - id: "batch-migration-check", + id: "eth-by-version", query: ` -query BatchENSv2MigrationCheck($names: [InterpretedName!]!) { - domains(where: { name: { in: $names } }) { +query GetEthDomains { + domains(where: { name: { eq: "eth" } }) { edges { node { + __typename id - label { interpreted } - canonical { name { interpreted } } } } } -}`, - variables: { - default: { names: ["vitalik.eth", "nick.eth"] }, - [ENSNamespaceIds.SepoliaV2]: { - names: ["demomigration.eth", "sfmonicdebmig.eth", "test-name.eth"], - }, - }, - }, - { - id: "eth-by-version", - query: ` -query GetEthDomains { - v1Eth: domains(where: { name: { eq: "eth" }, version: ENSv1 }) { edges { node { id } } } - v2Eth: domains(where: { name: { eq: "eth" }, version: ENSv2 }) { edges { node { id } } } }`, variables: { default: {} }, },