Skip to content

Permissions By User

Resources and roles for an address in the permissions graph.
query PermissionsByUser($address: Address!) {
  account(by: { address: $address }) {
    permissions {
      edges {
        node {
          resource
          roles
        }
      }
    }
  }
}
{
  "address": "0x205d2686da3bf33f64c17f21462c51b5ead462cf"
}
{
  "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"
            }
          }
        ]
      }
    }
  }
}
# 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
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));
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>
  );
}

        # 1. Create project
mkdir -p my-ens-script/src && cd my-ens-script
npm init -y && touch src/index.ts
npm pkg set type=module scripts.start="tsx src/index.ts"
# 2. Install dependencies
npm install enssdk@1.13.1 && npm install -D tsx typescript @types/node
# 3. Paste the TypeScript snippet above into src/index.ts
# 4. Run
ENSNODE_URL=https://api.v2-sepolia.ensnode.io npm start
      

        # 1. Create project
mkdir -p my-ens-script/src && cd my-ens-script
pnpm init && touch src/index.ts
pnpm pkg set type=module scripts.start="tsx src/index.ts"
# 2. Install dependencies
pnpm add enssdk@1.13.1 && pnpm add -D tsx typescript @types/node
# 3. Paste the TypeScript snippet above into src/index.ts
# 4. Run
ENSNODE_URL=https://api.v2-sepolia.ensnode.io pnpm start
      

        # 1. Create project
npm create vite@latest my-ens-app -- --template react-ts --no-interactive --no-immediate
cd my-ens-app
# 2. Install dependencies
npm install
npm install enskit@1.13.1 enssdk@1.13.1
# 3. Copy the TSX snippet above into src/App.tsx
# 4. Run
VITE_ENSNODE_URL=https://api.v2-sepolia.ensnode.io npm run dev
      

        # 1. Create project
pnpm create vite@latest my-ens-app --template react-ts --no-interactive --no-immediate
cd my-ens-app
# 2. Install dependencies
pnpm install
pnpm add enskit@1.13.1 enssdk@1.13.1
# 3. Copy the TSX snippet above into src/App.tsx
# 4. Run
VITE_ENSNODE_URL=https://api.v2-sepolia.ensnode.io pnpm run dev
      
Run in ENSAdmin
GraphQL Query
query PermissionsByUser($address: Address!) {
account(by: { address: $address }) {
permissions {
edges {
node {
resource
roles
}
}
}
}
}

Payload and transport examples

{
"address": "0x205d2686da3bf33f64c17f21462c51b5ead462cf"
}

Response is an illustrative snapshot; live data depends on your ENSNode instance. The curl tab shows a POST to https://api.v2-sepolia.ensnode.io/api/omnigraph

Back to Examples