Permissions By User
Resources and roles for an address in the permissions graph. Terminal window Terminal window Terminal window
Run in ENSAdmin
Open an interactive playground to execute this example on our sepolia-v2
ENSNode instance.
GraphQL
query PermissionsByUser($address: Address!) { account(by: { address: $address }) { permissions { edges { node { resource roles } } } }} Variables
{ "address": "0x205d2686da3bf33f64c17f21462c51b5ead462cf"} Output
{ "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" } } ] } } }}Output matches a GraphQL Response snapshot; live output depends on your ENSNode instance.
Opens an editable StackBlitz project with this snippet.
TypeScript
import { createEnsNodeClient } from "enssdk/core";import { graphql, omnigraph } from "enssdk/omnigraph";
const client = createEnsNodeClient({ url: process.env.ENSNODE_URL || "https://api.v2-sepolia.ensnode.io"}).extend(omnigraph);
const PermissionsByUserQuery = graphql(` query PermissionsByUser($address: Address!) { account(by: { address: $address }) { permissions { edges { node { resource roles } } } } }`);
const result = await client.omnigraph.query({ query: PermissionsByUserQuery, variables: { address: "0x205d2686da3bf33f64c17f21462c51b5ead462cf", },});
if (result.errors) throw new Error(JSON.stringify(result.errors));console.log(JSON.stringify(result.data, null, 2)); Output
{ "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" } } ] } } }}Output matches a GraphQL Response snapshot; live output depends on your ENSNode instance.
enssdk package manager setup
# 1. Create projectmkdir -p my-ens-script/src && cd my-ens-scriptnpm init -y && touch src/index.tsnpm pkg set type=module scripts.start="tsx src/index.ts"# 2. Install dependenciesnpm install enssdk@1.13.1 && npm install -D tsx typescript @types/node# 3. Paste the TypeScript snippet above into src/index.ts# 4. RunENSNODE_URL=https://api.v2-sepolia.ensnode.io npm startSee the enssdk docs for gql.tada plugin and tsconfig setup.
Opens an editable StackBlitz project with this snippet.
TSX (React)
import { OmnigraphProvider, useOmnigraphQuery, graphql } from "enskit/react/omnigraph";import { createEnsNodeClient } from "enssdk/core";import { omnigraph } from "enssdk/omnigraph";
const client = createEnsNodeClient({ url: import.meta.env.VITE_ENSNODE_URL || "https://api.v2-sepolia.ensnode.io"}).extend(omnigraph);
const PermissionsByUserQuery = graphql(` query PermissionsByUser($address: Address!) { account(by: { address: $address }) { permissions { edges { node { resource roles } } } } }`);
function PermissionsByUserResult() { const [result] = useOmnigraphQuery({ query: PermissionsByUserQuery, variables: { address: "0x205d2686da3bf33f64c17f21462c51b5ead462cf", }, }); const { data, fetching, error } = result; if (!data && fetching) return <p>Loading…</p>; if (error) return <p>Error: {error.message}</p>; if (!data) return <p>No data returned.</p>; const formatted = JSON.stringify( data, (_, value) => (typeof value === "bigint" ? value.toString() : value), 2, ); return <code>{formatted}</code>;}
export default function App() { return ( <OmnigraphProvider client={client}> <PermissionsByUserResult /> </OmnigraphProvider> );} Output
{ "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" } } ] } } }}Output matches a GraphQL Response snapshot; live output depends on your ENSNode instance.
enskit package manager setup
# 1. Create projectnpm create vite@latest my-ens-app -- --template react-ts --no-interactive --no-immediatecd my-ens-app# 2. Install dependenciesnpm installnpm install enskit@1.13.1 enssdk@1.13.1# 3. Copy the TSX snippet above into src/App.tsx# 4. RunVITE_ENSNODE_URL=https://api.v2-sepolia.ensnode.io npm run devSee the enskit docs for gql.tada plugin and provider setup.
cURL
# POST JSON to your ENSNode Omnigraph endpoint (same path enssdk uses).curl -sS -X POST "https://api.v2-sepolia.ensnode.io/api/omnigraph" \ -H "Content-Type: application/json" \ -d @- <<'EOF'{ "query": "query PermissionsByUser($address: Address!) { account(by: { address: $address }) { permissions { edges { node { resource roles } } } } }", "variables": { "address": "0x205d2686da3bf33f64c17f21462c51b5ead462cf" }}EOF Response
{ "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" } } ] } } }}Output matches a GraphQL Response snapshot; live output depends on your ENSNode instance.
Back to Examples