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

Sign a message with a Solana wallet

Request

Sign a message with a Solana wallet. Authentication with an API key is required.

Path
addressstringrequired

The address with which to sign the message

Headers
Authorizationstringrequired

The JWT access token that authorizes the request

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

Message to sign

Example: "A plaintext message to sign with the Solana wallet"
curl -i -X POST \
  'https://api.unstoppabledomains.com/profile/user/{address}/wallet/solana/signature' \
  -H 'Authorization: my-jwt-access-token' \
  -H 'Content-Type: application/json' \
  -d '{
    "message": "A plaintext message to sign with the Solana wallet"
  }'

Responses

Signature result

Bodyapplication/jsonArray [
signaturestring

Result of a signing operation

Example: "The Base-58 encoded signature result"
]
Response
application/json
[ { "signature": "The Base-58 encoded signature result" } ]

Retrieve status of a transaction hash

Request

Retrieve status of a transaction hash. Authentication with an API key is required.

Path
addressstringrequired

The address to authenticate

Query
hashstringrequired

The blockchain hash to query for confirmation

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/{address}/wallet/solana/status?hash=string' \
  -H 'Authorization: my-jwt-access-token'

Responses

Transaction result

Bodyapplication/jsonArray [
hashstring

Result of a transaction operation

Example: "The Base-58 encoded transaction hash"
confirmedboolean

Indicates whether the transaction is confirmed on-chain

Example: false
]
Response
application/json
[ { "hash": "The Base-58 encoded transaction hash", "confirmed": false } ]

Sign a transaction with a Solana wallet

Request

Sign a transaction with a Solana wallet. Authentication with an API key is required.

Path
addressstringrequired

The address with which to sign the transaction

Headers
Authorizationstringrequired

The JWT access token that authorizes the request

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

A serialized transaction

Example: "The serialized transaction to sign"
waitForConfirmationboolean

Wait for on-chain confirmation after broadcasting the transaction

Example: false
curl -i -X POST \
  'https://api.unstoppabledomains.com/profile/user/{address}/wallet/solana/transaction' \
  -H 'Authorization: my-jwt-access-token' \
  -H 'Content-Type: application/json' \
  -d '{
    "txSerialized": "The serialized transaction to sign",
    "waitForConfirmation": false
  }'

Responses

Transaction result

Bodyapplication/jsonArray [
hashstring

Result of a transaction operation

Example: "The Base-58 encoded transaction hash"
confirmedboolean

Indicates whether the transaction is confirmed on-chain

Example: false
]
Response
application/json
[ { "hash": "The Base-58 encoded transaction hash", "confirmed": false } ]

Transfer Solana tokens to another wallet

Request

Transfer Solana tokens to another wallet. Authentication with an API key is required.

Path
addressstringrequired

The address to initiate the transfer

Headers
Authorizationstringrequired

The JWT access token that authorizes the request

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

Destination wallet address

Example: "The Base-58 encoded recipient address"
tokenAddressstring

(Optional) Contract address address of SPL token

Example: "(Optional) Contract address address of SPL token"
tokenAmountnumber

Amount to send

Example: 1
waitForConfirmationboolean

Wait for on-chain confirmation after broadcasting the transaction

Example: false
curl -i -X POST \
  'https://api.unstoppabledomains.com/profile/user/{address}/wallet/solana/transfer' \
  -H 'Authorization: my-jwt-access-token' \
  -H 'Content-Type: application/json' \
  -d '{
    "destinationWalletAddress": "The Base-58 encoded recipient address",
    "tokenAddress": "(Optional) Contract address address of SPL token",
    "tokenAmount": 1,
    "waitForConfirmation": false
  }'

Responses

Transfer result

Bodyapplication/jsonArray [
hashstring

Result of a transaction operation

Example: "The Base-58 encoded transaction hash"
confirmedboolean

Indicates whether the transaction is confirmed on-chain

Example: false
]
Response
application/json
[ { "hash": "The Base-58 encoded transaction hash", "confirmed": false } ]

Wallet storage endpoints

Operations

Identity management endpoints

Operations