Skip to content

Profile API (1.0.0)

Feature Overview

The Profile API allows clients to retrieve and update domain profile details. There are both public and authenticated endpoints available for domain profiles. For authenticated endpoints, the API requires request signatures generated using the domain owner's private key.

Public endpoint overview

These endpoints are available without any authentication.

  • Retrieve public profile data associated with a domain
    • Domain owner controls which fields are public or private
    • Private data is always the default
  • Retrieve NFTs for addresses associated with domain
    • Domain can have any number of blockchain addresses associated for resolution services
    • Resolution addresses are stored on-chain
    • Query on-chain data for NFTs
  • Retrieve badges data for addresses associated with domain
  • Retrieve the following status of two domains

Authenticated endpoint overview

The owner of a domain may use this API to view or edit their private profile data. When managing profile data, authentication headers must be provided using the approach described below.

How to authenticate

  • Determine the message that must be signed through the message generator endpoint
    • Request GET /api/user/{domain}/signature?device=true&expiry={timestamp}
      • Replace '{domain}' with desired domain
      • Replace '{expiry}' with desired Unix epoch timestamp
    • Response contains the message that must be signed
      • Message is a unique hash value
      • Represents combination of provided request parameters
      • Includes an expiration timestamp
  • User must sign the message returned by the message generator API
    • For example, the Metamask wallet could be used to sign the message
    • Generated signature is used in header of subsequent GET or POST request
  • Construct a request to the desired endpoint that requires user authentication
    • Must include headers
      • x-auth-domain - Must equal the {domain} in context
      • x-auth-expiration - Must equal the {expiry} timestamp in the signed message
      • x-auth-signature - Must be set to the value of the user generated signature
Languages
Servers
Production
https://api.unstoppabledomains.com/profile/
Staging
https://api.ud-staging.com/profile/

Badge endpoints

Operations

Follower endpoints

Operations

Profile data endpoints

Operations

Swap endpoints

Operations

Search endpoints

Operations

Status

Operations

Profile management endpoints

Operations

Message generator endpoints

Operations

Wallet data endpoints

Operations

Market data endpoints

Operations

Wallet management endpoints

Operations

Solana wallet endpoints

Operations

Wallet storage endpoints

Operations

Retrieve wallet storage data

Request

Retrieves data associated with a wallet specific storage key. Authentication is required using domain owner signature.

Path
accountstringrequired

The account ID to authenticate

Headers
Authorizationstringrequired

The JWT access token that authorizes the request

Example: my-jwt-access-token
curl -i -X GET \
  'https://api.unstoppabledomains.com/profile/user/{account}/wallet/storage/{key}' \
  -H 'Authorization: my-jwt-access-token'

Responses

Storage key data

Bodyapplication/json
createdDatestring

The date the storage key was created

Example: "2021-01-01"
updatedDatestring

The date the storage key was last updated

Example: "2021-01-01"
keystring

The key of the storage data

Example: "key1"
datastring

The data of the storage key

Example: "value1"
schemastring

A serialized Zod schema that represents the data format. Use https://github.com/StefanTerdell/json-schema-to-zod to recreate the Zod schema on a client.

Example: {"\\\"type\\\":\\\"string\\\"":null,"\\\"$schema\\\":\\\"http://json-schema.org/draft-07/schema#\\\"":null}
Response
application/json
{ "createdDate": "2021-01-01", "updatedDate": "2021-01-01", "key": "key1", "data": "value1", "schema": { "\"type\":\"string\"": null, "\"$schema\":\"http://json-schema.org/draft-07/schema#\"": null } }

Edit wallet storage data

Request

Create a new wallet storage data entry or make updates to an existing wallet storage data entry. The body should contain a JSON serialized string that conforms to the Zod schema for the specified storage key. See below for an example of saving an array with two values. Specific schemas and examples can be retrieved using the associated /keys list endpoint. Authentication is required using domain owner signature.

Path
accountstringrequired

The account ID to authenticate

Headers
Authorizationstringrequired

The JWT access token that authorizes the request

Example: my-jwt-access-token
Bodyapplication/jsonrequired
string

A JSON serialized string that conforms to the Zod schema for the specified storage key

curl -i -X POST \
  'https://api.unstoppabledomains.com/profile/user/{account}/wallet/storage/{key}' \
  -H 'Authorization: my-jwt-access-token' \
  -H 'Content-Type: application/json' \
  -d '{}'

Responses

Wallet storage data

Bodyapplication/json
createdDatestring

The date the storage key was created

Example: "2021-01-01"
updatedDatestring

The date the storage key was last updated

Example: "2021-01-01"
keystring

The key of the storage data

Example: "key1"
datastring

The data of the storage key

Example: "value1"
schemastring

A serialized Zod schema that represents the data format. Use https://github.com/StefanTerdell/json-schema-to-zod to recreate the Zod schema on a client.

Example: {"\\\"type\\\":\\\"string\\\"":null,"\\\"$schema\\\":\\\"http://json-schema.org/draft-07/schema#\\\"":null}
Response
application/json
{ "createdDate": "2021-01-01", "updatedDate": "2021-01-01", "key": "key1", "data": "value1", "schema": { "\"type\":\"string\"": null, "\"$schema\":\"http://json-schema.org/draft-07/schema#\"": null } }

Delete wallet storage data

Request

Delete wallet storage data. Authentication is required using domain owner signature.

Path
accountstringrequired

The account ID to authenticate

Headers
Authorizationstringrequired

The JWT access token that authorizes the request

Example: my-jwt-access-token
curl -i -X DELETE \
  'https://api.unstoppabledomains.com/profile/user/{account}/wallet/storage/{key}' \
  -H 'Authorization: my-jwt-access-token'

Responses

Wallet storage data successfully deleted

Bodyapplication/json
createdDatestring

The date the storage key was created

Example: "2021-01-01"
updatedDatestring

The date the storage key was last updated

Example: "2021-01-01"
keystring

The key of the storage data

Example: "key1"
datastring

The data of the storage key

Example: "value1"
schemastring

A serialized Zod schema that represents the data format. Use https://github.com/StefanTerdell/json-schema-to-zod to recreate the Zod schema on a client.

Example: {"\\\"type\\\":\\\"string\\\"":null,"\\\"$schema\\\":\\\"http://json-schema.org/draft-07/schema#\\\"":null}
Response
application/json
{ "createdDate": "2021-01-01", "updatedDate": "2021-01-01", "key": "key1", "data": "value1", "schema": { "\"type\":\"string\"": null, "\"$schema\":\"http://json-schema.org/draft-07/schema#\"": null } }

Retrieve a list of keys that can be used with wallet storage

Request

Retrieve a list of keys that can be used with wallet storage. Authentication with an API key is required.

Path
accountstringrequired

The account ID to authenticate

Headers
Authorizationstringrequired

The JWT access token that authorizes the request

Example: my-jwt-access-token
curl -i -X GET \
  'https://api.unstoppabledomains.com/profile/user/{account}/wallet/storage/keys' \
  -H 'Authorization: my-jwt-access-token'

Responses

List of keys

Bodyapplication/jsonArray [
keystring

The name of the storage key

Example: "key1"
schemastring

A serialized Zod schema that represents the required data format. Use https://github.com/StefanTerdell/json-schema-to-zod to recreate the Zod schema on a client.

Example: {"\\\"type\\\":\\\"string\\\"":null,"\\\"$schema\\\":\\\"http://json-schema.org/draft-07/schema#\\\"":null}
examplestring

An example of the data that can be stored in the storage key

Example: "value1"
descriptionstring

A description of the storage key

Example: "This storage key is used to store the XYZ data"
]
Response
application/json
[ { "key": "key1", "schema": {}, "example": "value1", "description": "This storage key is used to store the XYZ data" } ]

Identity management endpoints

Operations