{"templateId":"openapi_docs","sharedDataIds":{"openAPIDocsStore":"oas-web3/apis/profile-v1/openapi.yaml","sidebar":"sidebar-web3/sidebars.yaml"},"props":{"definitionId":"web3/apis/profile-v1/openapi.yaml","dynamicMarkdocComponents":[],"baseSlug":"/web3/apis/profile-v1/openapi","seo":{"title":"Profile API","siteUrl":"https://docs.unstoppabledomains.com","keywords":"unstoppable domains developer portal, api reference docs","lang":"en-US","llmstxt":{"hide":false,"sections":[{"title":"Table of contents","includeFiles":["**/*"],"excludeFiles":[]}],"excludeFiles":[]}},"itemId":"","disableAutoScroll":true,"metadata":{"type":"openapi","title":"Profile API","description":"\n# Feature Overview\nThe Profile API allows clients to retrieve and update domain profile details. There are both\npublic and authenticated endpoints available for domain profiles. For authenticated endpoints, the API \nrequires request signatures generated using the domain owner's private key.\n\n## Public endpoint overview\nThese endpoints are available without any authentication.\n\n- Retrieve public profile data associated with a domain\n  - Domain owner controls which fields are public or private\n  - Private data is always the default\n- Retrieve NFTs for addresses associated with domain\n  - Domain can have any number of blockchain addresses associated for resolution services\n  - Resolution addresses are stored on-chain\n  - Query on-chain data for NFTs\n- Retrieve badges data for addresses associated with domain\n- Retrieve the following status of two domains\n\n## Authenticated endpoint overview\nThe owner of a domain may use this API to view or edit their private profile data. When managing profile data,\nauthentication headers must be provided using the approach described below.\n\n### How to authenticate\n- Determine the message that must be signed through the message generator endpoint\n  - Request GET /api/user/{domain}/signature?device=true&expiry={timestamp}\n    - Replace '{domain}' with desired domain\n    - Replace '{expiry}' with desired Unix epoch timestamp\n  - Response contains the message that must be signed\n    - Message is a unique hash value\n    - Represents combination of provided request parameters\n    - Includes an expiration timestamp\n- User must sign the message returned by the message generator API\n  - For example, the Metamask wallet could be used to sign the message\n  - Generated signature is used in header of subsequent GET or POST request\n- Construct a request to the desired endpoint that requires user authentication\n  - Must include headers\n    - x-auth-domain - Must equal the {domain} in context\n    - x-auth-expiration - Must equal the {expiry} timestamp in the signed message\n    - x-auth-signature - Must be set to the value of the user generated signature\n"},"compilationErrors":[],"markdown":{"partials":{},"variables":{"rbac":{"teams":["anonymous"]},"user":{},"remoteAddr":{"hostname":"docs.unstoppabledomains.com","port":4000,"ipAddress":"216.73.216.88"},"lang":"default_locale","env":{"PUBLIC_REDOCLY_BRANCH_NAME":"main"}}},"pagePropGetterError":{"message":"","name":""}},"slug":"/web3/apis/profile-v1/openapi","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}