Skip to content

ensdomains/ens-metadata-service

Repository files navigation

ens-metadata-service

Contributors Forks Stargazers Issues License Travis

API

Request

  • network: Name of the chain to query for. (mainnet | sepolia ...)
  • contactAddress: accepts contractAddress of the NFT which represented by the tokenId
  • NFT v1 - tokenId: accepts ENS name or labelhash of ENS name in both hex and int format
  • NFT v2 - tokenId: accepts ENS name or namehash of ENS name in both hex and int format
/{network}/{contractAddress}/{tokenId}

Request (example)

https://metadata.ens.domains/mainnet/0x57f1887a8BF19b14fC0dF6Fd9B2acc9Af147eA85/42219085255511335250589442208301538195142221433306354426240614732612795430543/

Response (example)

{
  "is_normalized": true,
  "name": "nick.eth",
  "description": "nick.eth, an ENS name.",
  "attributes": [
    {
      "trait_type": "Created Date",
      "display_type": "date",
      "value": 1571924851000
    },
    {
      "trait_type": "Length",
      "display_type": "number",
      "value": 4
    },
    {
      "trait_type": "Segment Length",
      "display_type": "number",
      "value": 4
    },
    {
      "trait_type": "Character Set",
      "display_type": "string",
      "value": "letter"
    },
    {
      "trait_type": "Registration Date",
      "display_type": "date",
      "value": 1580803395000
    },
    {
      "trait_type": "Expiration Date",
      "display_type": "date",
      "value": 1699709554000
    }
  ],
  "name_length": 4,
  "segment_length": 4,
  "url": "https://app.ens.domains/name/nick.eth",
  "version": 0,
  "background_image": "https://metadata.ens.domains/mainnet/avatar/nick.eth",
  "image": "https://metadata.ens.domains/mainnet/0x57f1887a8BF19b14fC0dF6Fd9B2acc9Af147eA85/0x5d5727cb0fb76e4944eafb88ec9a3cf0b3c9025a4b2f947729137c5d7f84f68f/image",
  "image_url": "https://metadata.ens.domains/mainnet/0x57f1887a8BF19b14fC0dF6Fd9B2acc9Af147eA85/0x5d5727cb0fb76e4944eafb88ec9a3cf0b3c9025a4b2f947729137c5d7f84f68f/image"
}

More info and list of all endpoints: https://metadata.ens.domains/docs

How to setup

git clone https://github.com/ensdomains/ens-metadata-service.git
cd ens-metadata-service
cp .env.org .env // Fill in Vars
yarn
yarn dev

How to deploy (Google App Engine)

Modify the app_template.yaml according to your needs. Then run;

yarn deploy

How to test

Regular unit test;

yarn test

Unit test + coverage;

yarn test:cov

Environment Variables

Name Description Default value Options
HOST Host (ip/domain) address of the running service localhost -
ENV Project scope local local/prod
REDIS_URL (Optional) Redis connection if you want to enable rate limiter - -
INAMEWRAPPER InterfaceId of NameWrapper Contract 0xe89c48dc -
ADDRESS_ETH_REGISTRAR Ethereum address of ENSBaseRegistrar Contract 0x57f1887a8BF19b14fC0dF6Fd9B2acc9Af147eA85 -
ADDRESS_NAME_WRAPPER Ethereum address of NameWrapper Contract 0x582224b8d4534F4749EFA4f22eF7241E0C56D4B8 -
WEB3_NODE_URL Ethereum Node Provider API - -
NODE_PROVIDER Ethereum Node Provider Cloudflare Cloudflare/Google/Infura/Local
NODE_PROVIDER_URL Ethereum Node Provider API Endpoint - -
VPC_ACCESS_CONNECTOR (Optional) Needed if you will setup Memorystore for GAE - -