diff --git a/.changeset/omnigraph-domain-resolver-example.md b/.changeset/omnigraph-domain-resolver-example.md new file mode 100644 index 0000000000..cd9a4520e6 --- /dev/null +++ b/.changeset/omnigraph-domain-resolver-example.md @@ -0,0 +1,7 @@ +--- +"@ensnode/ensnode-sdk": patch +--- + +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/scripts/fetch-omnigraph-example-responses.mts b/docs/ensnode.io/scripts/fetch-omnigraph-example-responses.mts index 8b4755e16d..6d10d625a4 100644 --- a/docs/ensnode.io/scripts/fetch-omnigraph-example-responses.mts +++ b/docs/ensnode.io/scripts/fetch-omnigraph-example-responses.mts @@ -60,8 +60,9 @@ if (argIds.length > 0) { const exampleIds = argIds.length > 0 ? argIds : allExampleIds; -const base = ENSNODE_URL.replace(/\/+$/, ""); -const url = `${base}/api/omnigraph`; +// 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 url = new URL("/api/omnigraph", process.env.OMNIGRAPH_ENDPOINT ?? ENSNODE_URL).toString(); logStep( argIds.length > 0 diff --git a/docs/ensnode.io/src/data/omnigraph-examples/meta.ts b/docs/ensnode.io/src/data/omnigraph-examples/meta.ts index bb580e723a..92ca459228 100644 --- a/docs/ensnode.io/src/data/omnigraph-examples/meta.ts +++ b/docs/ensnode.io/src/data/omnigraph-examples/meta.ts @@ -68,4 +68,15 @@ 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", + }, + "eth-by-version": { + name: "ETH TLD By 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.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" } diff --git a/docs/ensnode.io/src/data/omnigraph-examples/versions/v1.14.1/examples.json b/docs/ensnode.io/src/data/omnigraph-examples/versions/v1.14.1/examples.json new file mode 100644 index 0000000000..e70678a607 --- /dev/null +++ b/docs/ensnode.io/src/data/omnigraph-examples/versions/v1.14.1/examples.json @@ -0,0 +1,113 @@ +[ + { + "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": {} + }, + { + "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": "eth-by-version", + "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.1/responses.json b/docs/ensnode.io/src/data/omnigraph-examples/versions/v1.14.1/responses.json new file mode 100644 index 0000000000..34896659c0 --- /dev/null +++ b/docs/ensnode.io/src/data/omnigraph-examples/versions/v1.14.1/responses.json @@ -0,0 +1,3584 @@ +{ + "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-migrated-names": { + "data": { + "account": { + "v2DomainsCount": { + "totalCount": 2 + }, + "v1DomainsCount": { + "totalCount": 2 + } + } + } + }, + "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": { + "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" + } + } + ], + "totalCount": 3 + } + } + } + }, + "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] + } + } + ] + }, + "events": { + "totalCount": 12, + "edges": [ + { + "node": { + "topics": [ + "0x448bc014f1536726cf8d54ff3d6481ed3cbc683c2591ca204274009afa09b1a1", + "0x7c373628c8f997165f201947222fcfbe102f9d1ae1f693e188f891aad9fdf87c", + "0x7b8e740dad11ad11abceebf798f458a149d945f7c4448784733725f3fa21225e" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000b636f6d2e747769747465720000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007796f67696e746800000000000000000000000000000000000000000000000000", + "timestamp": "1778524611" + } + }, + { + "node": { + "topics": [ + "0x448bc014f1536726cf8d54ff3d6481ed3cbc683c2591ca204274009afa09b1a1", + "0xcc479ce25282f2ba33d415e9b4cb473bea70ee5fd4091200c4a96b714bb961ea", + "0x7b8e740dad11ad11abceebf798f458a149d945f7c4448784733725f3fa21225e" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000b636f6d2e747769747465720000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007796f67696e746800000000000000000000000000000000000000000000000000", + "timestamp": "1778524668" + } + }, + { + "node": { + "topics": [ + "0x448bc014f1536726cf8d54ff3d6481ed3cbc683c2591ca204274009afa09b1a1", + "0xcc479ce25282f2ba33d415e9b4cb473bea70ee5fd4091200c4a96b714bb961ea", + "0x1596dc38e2ac5a6ddc5e019af4adcc1e017a04f510d57e69d6879d5d2996bb8e" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000b6465736372697074696f6e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045465737400000000000000000000000000000000000000000000000000000000", + "timestamp": "1778525667" + } + }, + { + "node": { + "topics": [ + "0x448bc014f1536726cf8d54ff3d6481ed3cbc683c2591ca204274009afa09b1a1", + "0x48312b5175fe09ba3258adfaa7b41377451f11616726770e844c85018f51e80a", + "0x7b8e740dad11ad11abceebf798f458a149d945f7c4448784733725f3fa21225e" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000b636f6d2e747769747465720000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007796f67696e746800000000000000000000000000000000000000000000000000", + "timestamp": "1778525993" + } + }, + { + "node": { + "topics": [ + "0x448bc014f1536726cf8d54ff3d6481ed3cbc683c2591ca204274009afa09b1a1", + "0x48312b5175fe09ba3258adfaa7b41377451f11616726770e844c85018f51e80a", + "0x1596dc38e2ac5a6ddc5e019af4adcc1e017a04f510d57e69d6879d5d2996bb8e" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000b6465736372697074696f6e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002476d000000000000000000000000000000000000000000000000000000000000", + "timestamp": "1778526019" + } + }, + { + "node": { + "topics": [ + "0x448bc014f1536726cf8d54ff3d6481ed3cbc683c2591ca204274009afa09b1a1", + "0xf6910e4b50bcf1db17bafcf8d93cffe9e46f69b3bd68ed6c371523755485667d", + "0x1596dc38e2ac5a6ddc5e019af4adcc1e017a04f510d57e69d6879d5d2996bb8e" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000b6465736372697074696f6e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c454e5320456e67696e6565720000000000000000000000000000000000000000", + "timestamp": "1778527438" + } + }, + { + "node": { + "topics": [ + "0x448bc014f1536726cf8d54ff3d6481ed3cbc683c2591ca204274009afa09b1a1", + "0xf6910e4b50bcf1db17bafcf8d93cffe9e46f69b3bd68ed6c371523755485667d", + "0x7b8e740dad11ad11abceebf798f458a149d945f7c4448784733725f3fa21225e" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000b636f6d2e747769747465720000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007796f67696e746800000000000000000000000000000000000000000000000000", + "timestamp": "1778527438" + } + }, + { + "node": { + "topics": [ + "0x65412581168e88a1e60c6459d7f44ae83ad0832e670826c05a4e2476b57af752", + "0xf6910e4b50bcf1db17bafcf8d93cffe9e46f69b3bd68ed6c371523755485667d" + ], + "data": "0x000000000000000000000000000000000000000000000000000000000000003c00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000014f618330f51fa54ce5951d627ee150c0fdadeba43000000000000000000000000", + "timestamp": "1778527462" + } + }, + { + "node": { + "topics": [ + "0x52d7d861f09ab3d26239d492e8968629f95e9e318cf0b73bfddc441522a15fd2", + "0xf6910e4b50bcf1db17bafcf8d93cffe9e46f69b3bd68ed6c371523755485667d" + ], + "data": "0x000000000000000000000000f618330f51fa54ce5951d627ee150c0fdadeba43", + "timestamp": "1778527462" + } + }, + { + "node": { + "topics": [ + "0x448bc014f1536726cf8d54ff3d6481ed3cbc683c2591ca204274009afa09b1a1", + "0x557fa88f560ad2602e7a03b84201109bd3a4fcac5d33effa63d367781156f86e", + "0x1596dc38e2ac5a6ddc5e019af4adcc1e017a04f510d57e69d6879d5d2996bb8e" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000b6465736372697074696f6e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007596f67696e746800000000000000000000000000000000000000000000000000", + "timestamp": "1778773686" + } + }, + { + "node": { + "topics": [ + "0x448bc014f1536726cf8d54ff3d6481ed3cbc683c2591ca204274009afa09b1a1", + "0x85b36edc4fa474edd2da2cda5445dc5bcc88e897dbfc50349ca0282d133be8b7", + "0x1596dc38e2ac5a6ddc5e019af4adcc1e017a04f510d57e69d6879d5d2996bb8e" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000b6465736372697074696f6e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007596f67696e746800000000000000000000000000000000000000000000000000", + "timestamp": "1778773686" + } + }, + { + "node": { + "topics": [ + "0x448bc014f1536726cf8d54ff3d6481ed3cbc683c2591ca204274009afa09b1a1", + "0xc78c2904ed79c457f13c7f209f9eeeba66d0d843bfcfb630cd4ad2301ac7b77c", + "0x1596dc38e2ac5a6ddc5e019af4adcc1e017a04f510d57e69d6879d5d2996bb8e" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000b6465736372697074696f6e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045465737400000000000000000000000000000000000000000000000000000000", + "timestamp": "1778774449" + } + } + ] + }, + "permissions": { + "resources": { + "edges": [ + { + "node": { + "resource": "0", + "users": { + "edges": [ + { + "node": { + "roles": "7719472615821079694904732333912527190217998977709370935963838933860875309329", + "user": { + "address": "0xf618330f51fa54ce5951d627ee150c0fdadeba43" + } + } + } + ] + } + } + } + ] + } + } + } + } + } + } + }, + "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" + } + } + } + } + ] + } + } + } + }, + "eth-by-version": { + "data": { + "domains": { + "edges": [ + { + "node": { + "__typename": "ENSv1Domain", + "id": "99911155111-0x00000000000c2e074ec69a0dfb2997ba6c7d2e1e-0x93cdeb708b7545dc668eb9280176169d1c33cfd8ed6f04690a0bcc88a93fc4ae" + } + }, + { + "node": { + "__typename": "ENSv2Domain", + "id": "99911155111-0xfd43dc00ab0d0e247a2827d15dddfc5bd9646a29-35894389512221139346028120028875095598761990588366713962827482865183915769856" + } + } + ] + } + } + }, + "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": { + "edges": [ + { + "node": { + "topics": [ + "0x0d35bf721a39b614de00ca5038e1deb0cb0c69a278645e83405a7226cf80ba3c", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x000000000000000000000000ffffffffff52d316b7bd028358089bc8066b8f80" + ], + "data": "0x00000000000000000000000000000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111", + "timestamp": "1777666931" + } + } + ], + "totalCount": 1 + }, + "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.1/schema.graphql b/docs/ensnode.io/src/data/omnigraph-examples/versions/v1.14.1/schema.graphql new file mode 100644 index 0000000000..0c9e37a06b --- /dev/null +++ b/docs/ensnode.io/src/data/omnigraph-examples/versions/v1.14.1/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.1/snapshot.json b/docs/ensnode.io/src/data/omnigraph-examples/versions/v1.14.1/snapshot.json new file mode 100644 index 0000000000..2a87cdad3d --- /dev/null +++ b/docs/ensnode.io/src/data/omnigraph-examples/versions/v1.14.1/snapshot.json @@ -0,0 +1,8 @@ +{ + "version": "v1.14.1", + "commit": "a254a8c22", + "sdkVersion": "1.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 c34e3f17ef..af9eced684 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", @@ -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"); @@ -415,6 +415,39 @@ 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: "eth-by-version", + query: ` +query GetEthDomains { + domains(where: { name: { eq: "eth" } }) { + edges { + node { + __typename + id + } + } + } }`, variables: { default: {} }, },