{"openapi":"3.0.0","info":{"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","version":"1.0.0"},"servers":[{"url":"https://api.unstoppabledomains.com/profile","description":"Production"},{"url":"https://api.ud-staging.com/profile","description":"Staging"}],"paths":{"/badges/{badge}/holders":{"get":{"summary":"Retrieves holders of the badge","description":"Retrieves a list of addresses that hold the badge","tags":["Badge endpoints"],"parameters":[{"in":"header","name":"x-api-key","schema":{"type":"string"},"required":true,"description":"API key required to authenticate the request","example":"my-api-key"},{"in":"path","name":"badge","schema":{"type":"string"},"required":true,"description":"The badge code","example":"whale"}],"responses":{"200":{"description":"Badge holder list"},"400":{"description":"Badge does not support holder listing"},"404":{"description":"Badge not found"}}}},"/badges/{badge}":{"get":{"summary":"Retrieves details about a badge","description":"Retrieves details about a badge, including definition and usage statistics.","tags":["Badge endpoints"],"parameters":[{"in":"path","name":"badge","schema":{"type":"string"},"required":true,"description":"The badge code","example":"whale"}],"responses":{"200":{"description":"Badge details","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SerializedBadgeInfo"}}}},"404":{"description":"Badge not found"}}}},"/badges/{badge}/validate/{address}":{"get":{"summary":"Validates that a given user holds a badge","description":"Validates that a given user holds a badge","tags":["Badge endpoints"],"parameters":[{"in":"path","name":"address","schema":{"type":"string"},"required":true,"description":"The user wallet address to validate","example":74565},{"in":"path","name":"badge","schema":{"type":"string"},"required":true,"description":"The badge code","example":"whale"}],"responses":{"200":{"description":"Badge is held by user"},"404":{"description":"Badge not held by user"}}}},"/badges/claim":{"post":{"summary":"Generates a badge based on a provided marketplace link","description":"Creates a badge based on a provided marketplace link, such as OpenSea, Zuse.market, etc. The badge must be purchased to be activated before it can be claimed by other domains.","tags":["Badge endpoints"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SerializedBadgeClaimPost"}}}},"responses":{"200":{"description":"Badge pending payment","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SerializedBadge"}}}},"400":{"description":"Invalid marketplace link"},"404":{"description":"Collection not found"},"409":{"description":"Badge already claimed"}}}},"/badges/rankings/domains":{"get":{"summary":"Retrieve badge rankings by domain","description":"Generates a list of domains ordered by largest badge collection","tags":["Badge endpoints"],"parameters":[{"in":"path","name":"count","schema":{"type":"number"},"required":false,"description":"The number of rankings to retrieve"},{"in":"path","name":"communityOnly","schema":{"type":"boolean"},"required":false,"description":"Include only community sponsored badges"},{"in":"path","name":"badge","schema":{"type":"string"},"required":true,"description":"The specific badge code to retrieve rankings for"}],"responses":{"200":{"description":"Badge rankings","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/SerializedDomainRanking"}}}}}}}},"/badges/rankings":{"get":{"summary":"Retrieve badge rankings","description":"Generates a list of badges ordered by number of holders","tags":["Badge endpoints"],"parameters":[{"in":"path","name":"count","schema":{"type":"number"},"required":false,"description":"The number of rankings to retrieve"},{"in":"path","name":"communityOnly","schema":{"type":"boolean"},"required":false,"description":"Include only community sponsored badges"}],"responses":{"200":{"description":"Badge rankings","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/SerializedBadgeInfo"}}}}}}}},"/badges/rankings/sponsors":{"get":{"summary":"Retrieve badge rankings by sponsor","description":"Generates a list of sponsors ordered by largest number of sponsored badges","tags":["Badge endpoints"],"parameters":[{"in":"path","name":"count","schema":{"type":"number"},"required":false,"description":"The number of rankings to retrieve"},{"in":"path","name":"badge","schema":{"type":"string"},"required":false,"description":"The specific badge code to retrieve rankings for"}],"responses":{"200":{"description":"Sponsor rankings","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/SerializedDomainRanking"}}}}}}}},"/followers/{domain}/follow-status":{"get":{"summary":"Retrieves the following status of a domain","description":"Retrieves the following status of a domain","tags":["Follower endpoints"],"parameters":[{"in":"path","name":"domain","schema":{"type":"string"},"required":true,"description":"The followee domain"},{"in":"query","name":"follower-domain","schema":{"type":"string"},"required":true,"description":"The follower domain"}],"responses":{"200":{"description":"Follow status","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SerializedFollowingStatus"}}}},"404":{"description":"Domain not found"}}}},"/followers/{domain}":{"post":{"summary":"Follow a domain","description":"Follow a domain","tags":["Follower endpoints"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SerializedDomainFollowPost"}}}},"parameters":[{"in":"path","name":"domain","schema":{"type":"string"},"required":true,"description":"The domain name to follow"},{"in":"header","name":"x-auth-domain","schema":{"type":"string"},"required":true,"description":"The domain to authorize. Should match the domain specified in the body","example":"mydomain.tld"},{"in":"header","name":"x-auth-expires","schema":{"type":"string"},"required":true,"description":"The expiration time of the signature","example":1765522015090},{"in":"header","name":"x-auth-signature","schema":{"type":"string"},"required":true,"description":"The signature generating using domain owner private key","example":"b62348775da58077591e2d20506371e8d94a5a83031f34b9ac85845d3463e73b0f0a500875830785c093515806e354cda6c217acab0fce5245d662eff4105f5e1c"}],"responses":{"200":{"description":"Follow successful"},"404":{"description":"Domain not found"}}},"delete":{"summary":"Unfollows a domain","description":"Unfollows a domain","tags":["Follower endpoints"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SerializedDomainFollowPost"}}}},"parameters":[{"in":"path","name":"domain","schema":{"type":"string"},"required":true,"description":"The domain name to unfollow"},{"in":"header","name":"x-auth-domain","schema":{"type":"string"},"required":true,"description":"The domain to authorize. Should match the domain specified in the body","example":"mydomain.tld"},{"in":"header","name":"x-auth-expires","schema":{"type":"string"},"required":true,"description":"The expiration time of the signature","example":1765522015090},{"in":"header","name":"x-auth-signature","schema":{"type":"string"},"required":true,"description":"The signature generating using domain owner private key","example":"b62348775da58077591e2d20506371e8d94a5a83031f34b9ac85845d3463e73b0f0a500875830785c093515806e354cda6c217acab0fce5245d662eff4105f5e1c"}],"responses":{"200":{"description":"Unfollow successful"},"404":{"description":"Domain not found"}}},"get":{"summary":"Returns a list of followers or following for a domain","description":"Returns a list of followers or following for a domain","tags":["Follower endpoints"],"parameters":[{"in":"path","name":"domain","schema":{"type":"string"},"required":true,"description":"The domain name to see followers for"},{"in":"query","name":"relationship_type","schema":{"type":"string","enum":["followers","following"]},"required":false,"example":"followers, following","description":"The type of relationship to return (followers or following). Default is followers."},{"in":"query","name":"take","schema":{"type":"number"},"required":false,"description":"The number of followers to return. Default is 50. Max is 100."},{"in":"query","name":"cursor","schema":{"type":"number"},"required":false,"description":"The cursor to use for pagination"}],"responses":{"200":{"description":"Follower list","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SerializedFollowerList"}}}},"404":{"description":"Domain not found"}}}},"/followers/rankings":{"get":{"summary":"Retrieve follower rankings","description":"Generates a list of domains ordered by number of followers","tags":["Follower endpoints"],"parameters":[{"in":"path","name":"count","schema":{"type":"number"},"required":false,"description":"The number of rankings to retrieve"}],"responses":{"200":{"description":"Follower rankings","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/SerializedDomainRanking"}}}}}}}},"/public/{domain}/badges":{"get":{"summary":"Retrieves badges associated with a domain","description":"Retrieves badge data associated with requested domain.","tags":["Profile data endpoints"],"parameters":[{"in":"path","name":"domain","schema":{"type":"string"},"required":true,"description":"The domain name to query profile data"},{"in":"query","name":"partners","schema":{"type":"boolean"},"required":false,"description":"Include available partner badges in response"}],"responses":{"200":{"description":"Domain badge data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SerializedBadgeResponse"}}}},"404":{"description":"Domain not found"}}}},"/public/{domain}/connections":{"get":{"summary":"Retrieves social graph connections for a given domain","description":"Retrieves recommended connections for a given domain, using an on-chain social graph.","tags":["Profile data endpoints"],"parameters":[{"in":"path","name":"domain","schema":{"type":"string"},"required":true,"description":"The domain name to query connections"}],"responses":{"200":{"description":"User connections","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/SerializedRecommendation"}}}}},"404":{"description":"Domain not found"}}}},"/public/{domain}":{"get":{"summary":"Retrieves publicly accessible domain profile","description":"Retrieves public domain profile accessible to anyone on the internet. All domain profile data is considered private, unless explicitly authorized by the domain owner. In other words, data shown on the public API is controlled by the domain owner.","tags":["Profile data endpoints"],"parameters":[{"in":"path","name":"domain","schema":{"type":"string"},"required":true,"description":"The domain name to query profile data"},{"in":"query","name":"fields","schema":{"type":"string"},"required":false,"description":"Comma separated list of fields to retrieve. Defaults to cryptoVerifications,profile,socialAccounts,referralCode.","example":"cryptoVerifications,humanityCheck,profile,records,socialAccounts,referralCode"}],"responses":{"200":{"description":"Domain profile","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SerializedPublicDomainProfile"}}}},"404":{"description":"Domain not found"}}}},"/public/{domain}/nfts":{"get":{"summary":"Retrieves NFT data associated with blockchain accounts attached to a domain","description":"Retrieves NFT data associated with requested domain. Paging is supported using the limit and cursor query string parameters.","tags":["Profile data endpoints"],"parameters":[{"in":"path","name":"domain","schema":{"type":"string"},"required":true,"description":"The domain name to query profile data"},{"in":"query","name":"symbols","schema":{"type":"string"},"description":"Comma separated list of ticker symbols to query NFT data","example":"ETH,MATIC,SOL"},{"in":"query","name":"limit","schema":{"type":"number"},"description":"The maximum number of NFT records to retrieve","example":50},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"The paging cursor used in combination with the limit parameter","example":"desiredPage"},{"in":"query","name":"resolve","schema":{"type":"boolean"},"description":"Indicate whether off-chain NFT metadata should be retrieved (default, true)","example":false}],"responses":{"200":{"description":"Domain NFT data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SerializedNftResponse"}}}},"404":{"description":"Domain not found"}}}},"/public/{address}/swap":{"get":{"summary":"Retrieves swap quotes","description":"Retrieves swap quotes for a specified token pair","tags":["Swap endpoints"],"parameters":[{"in":"path","name":"address","schema":{"type":"string"},"required":true,"description":"The wallet address initiating the swap"},{"in":"query","name":"fromChain","description":"The source token chain. Must be one of the supported chains (Bitcoin, Ethereum, Polygon, Base or Solana)","schema":{"type":"string"}},{"in":"query","name":"fromToken","description":"The source token contract address or ticker symbol. Contract address recommended.","schema":{"type":"string"}},{"in":"query","name":"fromTokenAmount","description":"The desired swap amount, specified in token currency. A value in fromTokenAmount is prioritized over fromTokenAmountUsd.","schema":{"type":"string"}},{"in":"query","name":"fromTokenAmountUsd","description":"The desired swap amount, specified in US Dollars. A value in fromTokenAmount is prioritized over fromTokenAmountUsd.","schema":{"type":"string"}},{"in":"query","name":"toChain","description":"The destination token chain. Must be one of the supported chains (Bitcoin, Ethereum, Polygon, Base or Solana)","schema":{"type":"string"}},{"in":"query","name":"toToken","description":"The destination token contract address or ticker symbol. Contract address recommended.","schema":{"type":"string"}},{"in":"query","name":"toWalletAddress","description":"(Optional) The destination wallet address for the swap funds. Defaults to source address if empty.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"The requested swap quotes","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/SwapRouteQuote"}}}}},"400":{"description":"Invalid swap request"}}},"post":{"summary":"Retrieves swap transaction plan","description":"Retrieves a swap transaction plan containing the required transactions that must be signed by the wallet to complete the swap. The wallet must sign each transaction in the order it is returned in the response. For example, the list of transactions may include a first a token approval transaction, and then a swap transaction.","tags":["Swap endpoints"],"requestBody":{"description":"A user selected quote to describe the desired swap. The quote must be one that was retrieved from the associated GET /swap API endpoint.","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SwapRouteQuote"}}}},"parameters":[{"in":"path","name":"address","schema":{"type":"string"},"required":true,"description":"The wallet address initiating the swap"},{"in":"query","name":"fromChain","description":"The source token chain. Must be one of the supported chains (Bitcoin, Ethereum, Polygon, Base or Solana)","schema":{"type":"string"}},{"in":"query","name":"fromToken","description":"The source token contract address or ticker symbol. Contract address recommended.","schema":{"type":"string"}},{"in":"query","name":"fromTokenAmount","description":"The desired swap amount, specified in token currency. A value in fromTokenAmount is prioritized over fromTokenAmountUsd.","schema":{"type":"string"}},{"in":"query","name":"fromTokenAmountUsd","description":"The desired swap amount, specified in US Dollars. A value in fromTokenAmount is prioritized over fromTokenAmountUsd.","schema":{"type":"string"}},{"in":"query","name":"toChain","description":"The destination token chain. Must be one of the supported chains (Bitcoin, Ethereum, Polygon, Base or Solana)","schema":{"type":"string"}},{"in":"query","name":"toToken","description":"The destination token contract address or ticker symbol. Contract address recommended.","schema":{"type":"string"}},{"in":"query","name":"toWalletAddress","description":"(Optional) The destination wallet address for the swap funds. Defaults to source address if empty.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"A list of transactions that must be signed to complete the swap.","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/SwapPlannedTx"}}}}},"400":{"description":"Bad swap request"}}}},"/public/{domain}/transactions":{"get":{"summary":"Retrieves transaction data associated with blockchain accounts attached to a domain","description":"Retrieves transaction data associated with requested domain. Paging is supported using the cursor query string parameter.","tags":["Profile data endpoints"],"parameters":[{"in":"path","name":"domain","schema":{"type":"string"},"required":true,"description":"The domain name to query profile data"},{"in":"query","name":"symbols","schema":{"type":"string"},"description":"Comma separated list of ticker symbols to query transaction data","example":"ETH,MATIC"},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"The paging cursor used in combination with the limit parameter","example":"desiredPage"}],"responses":{"200":{"description":"Transaction data","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/SerializedTxns"}}}}},"404":{"description":"Domain not found"}}}},"/public/badges-bulk":{"post":{"summary":"Retrieves badges associated with a list of domains","description":"Retrieves badge data associated with a list of requested domains.","tags":["Profile data endpoints"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadgesBulkPost"}}}},"responses":{"200":{"description":"Domain bulk badge data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SerializedBadgeResponse"}}}},"404":{"description":"Domain bulk data not found"}}}},"/public/swap/chains":{"get":{"summary":"Retrieves a list of supported swap chains","description":"Retrieves a list of supported swap chains","tags":["Swap endpoints"],"responses":{"200":{"description":"The requested swap quotes","content":{"application/json":{"schema":{"type":"array","items":{"type":"string"}}}}}}}},"/public/swap/tokens":{"get":{"summary":"Retrieves supported tokens for a specified chain","description":"Retrieves supported tokens for a specified chain","tags":["Swap endpoints"],"parameters":[{"in":"query","name":"chain","description":"The token chain, one of (Bitcoin, Ethereum, Polygon, Base or Solana)","schema":{"type":"string"}},{"in":"query","name":"token","description":"(Optional) The source token contract address or ticker symbol. Contract address recommended.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"The requested swap quotes","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/SwapToken"}}}}},"400":{"description":"Invalid swap request"}}}},"/resolve/{address}":{"get":{"summary":"Retrieves reverse resolution details for an address","description":"Retrieves reverse resolution details for an address","tags":["Search endpoints"],"parameters":[{"in":"path","name":"address","schema":{"type":"string"},"required":true,"description":"Address to resolve","example":291},{"in":"query","name":"resolutionOrder","schema":{"type":"string"},"required":false,"description":"Comma separated list of naming system resolution preferences","example":"ud,ens,lens"}],"responses":{"200":{"description":"Resolution successful"}}}},"/resolve/keys":{"get":{"summary":"Retrieves a list of all supported resolver keys","description":"Retrieves a list of all supported resolver keys","tags":["Search endpoints"],"responses":{"200":{"description":"Retrieved resolver keys"}}}},"/search":{"get":{"summary":"Retrieves list of domains based on query","description":"This route retrieves a list of domains that match the query","tags":["Search endpoints"],"parameters":[{"in":"query","name":"name","schema":{"type":"string"},"required":false,"description":"Search by domain name","example":"matt"},{"in":"query","name":"profile-required","schema":{"type":"boolean"},"required":false,"description":"Whether domains need have a profile configured"},{"in":"query","name":"reverse-resolution-required","schema":{"type":"boolean"},"required":false,"description":"Whether domains need to have reverse resolution configured"}],"responses":{"200":{"description":"Search result values","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SerializedProfileSearchResponse"}}}}}}},"/status":{"get":{"summary":"Status probe","description":"This route can be used to determine if the application service is alive","tags":["Status"],"responses":{"200":{"description":"application is alive","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"object","description":"break down of application component status","properties":{"http":{"type":"string","description":"status of http server"},"db":{"type":"string","description":"status of DB availability"}}}}}}}}}}},"/user/{domain}/address/{symbol}":{"post":{"summary":"Verify ownership of a blockchain address","description":"Verify ownership of a blockchain address by signing a message with your private key.","tags":["Profile management endpoints"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SerializedAddressVerificationPost"}}}},"parameters":[{"in":"path","name":"domain","schema":{"type":"string"},"required":true,"description":"The domain name to query profile data"},{"in":"path","name":"symbol","schema":{"type":"string"},"required":true,"description":"The ticker symbol for the blockchain to verify"}],"responses":{"200":{"description":"Address verification successful"},"400":{"description":"Request contained invalid parameters"},"404":{"description":"Domain not found"}}}},"/user/{domain}/address/{symbol}/signature":{"get":{"summary":"Retrieves the message that must be signed to verify ownership of a blockchain address","description":"Retrieves the message that must be signed to verify ownership of a blockchain address. The message must be signed with the blockchain address private key and submitted using the POST call for verification.","tags":["Message generator endpoints"],"parameters":[{"in":"path","name":"domain","schema":{"type":"string"},"required":true,"description":"The domain name to query profile data"},{"in":"path","name":"symbol","schema":{"type":"string"},"required":true,"description":"The ticker symbol for the blockchain to verify"}],"responses":{"200":{"description":"Message to be signed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SerializedAddressVerificationMessage"}}}},"400":{"description":"Address not defined for domain"},"404":{"description":"Domain not found"}}}},"/user/{domain}/attachment":{"post":{"summary":"Upload an XMTP or Push Protocol attachment","description":"Upload an XMTP or Push Protocol attachment. Quota enforced per user. Authentication is required using domain owner signature.","tags":["Profile management endpoints"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SerializedDomainAttachmentPost"}}}},"parameters":[{"in":"path","name":"domain","schema":{"type":"string"},"required":true,"description":"The domain name to query profile data"},{"in":"header","name":"x-auth-domain","schema":{"type":"string"},"required":true,"description":"The domain to authorize","example":"mydomain.tld"},{"in":"header","name":"x-auth-expires","schema":{"type":"string"},"required":true,"description":"The expiration time of the signature","example":1765522015090},{"in":"header","name":"x-auth-signature","schema":{"type":"string"},"required":true,"description":"The signature generating using domain owner private key","example":"0b62348775da58077591e2d20506371e8d94a5a83031f34b9ac85845d3463e73b0f0a500875830785c093515806e354cda6c217acab0fce5245d662eff4105f5e1c"}],"responses":{"200":{"description":"Public URL to access the uploaded attachment","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SerializedAttachmentResponse"}}}},"400":{"description":"Invalid attachment"},"404":{"description":"Domain not found"},"409":{"description":"User quota exceeded"}}}},"/user/{address}/badges":{"post":{"summary":"Updates badges for a wallet address","description":"Update specific badge visibility if provided in request body. If body has no elements, requests badge refresh for a wallet address. Authentication is required using domain owner signature.","tags":["Badge endpoints"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadgesConfigPost"}}}},"parameters":[{"in":"path","name":"address","schema":{"type":"string"},"required":true,"description":"The EVM address to retrieve wallet information"},{"in":"header","name":"x-auth-domain","schema":{"type":"string"},"required":true,"description":"The domain to authorize","example":"mydomain.tld"},{"in":"header","name":"x-auth-expires","schema":{"type":"string"},"required":true,"description":"The expiration time of the signature","example":1765522015090},{"in":"header","name":"x-auth-signature","schema":{"type":"string"},"required":true,"description":"The signature generating using domain owner private key","example":"b62348775da58077591e2d20506371e8d94a5a83031f34b9ac85845d3463e73b0f0a500875830785c093515806e354cda6c217acab0fce5245d662eff4105f5e1c"}],"responses":{"200":{"description":"List of badges","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/SerializedBadge"}}}}},"400":{"description":"Invalid address"},"404":{"description":"Address not found"},"409":{"description":"Badges already recently collected"},"429":{"description":"Too many collection requests"}}}},"/user/{address}/domains":{"get":{"summary":"Retrieve domains","description":"Returns a list of domains owned by the specified wallet address","tags":["Wallet data endpoints"],"parameters":[{"in":"path","name":"address","schema":{"type":"string"},"required":true,"description":"The owner address to query. Supported addresses include EVM or Solana."},{"in":"query","name":"take","schema":{"type":"number"},"required":false,"description":"The number of domains to return. Default is 50. Max is 100."},{"in":"query","name":"cursor","schema":{"type":"string"},"required":false,"description":"The cursor to use for pagination"}],"responses":{"200":{"description":"List of domains","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SerializedDomainList"}}}},"404":{"description":"Address not found"}}}},"/user/{domain}":{"get":{"summary":"Retrieves domain's private profile data","description":"While the public API retrieves only the data identified as shareable by the domain owner, this API returns both public and private data. Authentication is required using domain owner signature.","tags":["Profile management endpoints"],"parameters":[{"in":"path","name":"domain","schema":{"type":"string"},"required":true,"description":"The domain name to query profile data"},{"in":"query","name":"fields","schema":{"type":"string"},"required":false,"description":"Comma separated list of fields to retrieve. Defaults to cryptoVerifications,messaging,profile,socialAccounts.","example":"cryptoVerifications,humanityCheck,messaging,profile,records,socialAccounts,referralCode,referralTier"},{"in":"header","name":"x-auth-domain","schema":{"type":"string"},"required":true,"description":"The domain to authorize","example":"mydomain.tld"},{"in":"header","name":"x-auth-expires","schema":{"type":"string"},"required":true,"description":"The expiration time of the signature","example":1765522015090},{"in":"header","name":"x-auth-signature","schema":{"type":"string"},"required":true,"description":"The signature generating using domain owner private key","example":"b62348775da58077591e2d20506371e8d94a5a83031f34b9ac85845d3463e73b0f0a500875830785c093515806e354cda6c217acab0fce5245d662eff4105f5e1c"}],"responses":{"200":{"description":"Domain profile","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SerializedUserDomainProfile"}}}},"404":{"description":"Domain not found"}}},"post":{"summary":"Edit domain's private profile data","description":"The POST call can be used to create a new domain profile or make updates to an existing profile. Authentication is required using domain owner signature.","tags":["Profile management endpoints"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SerializedDomainProfilePost"}}}},"parameters":[{"in":"path","name":"domain","schema":{"type":"string"},"required":true,"description":"The domain name to query profile data"},{"in":"header","name":"x-auth-domain","schema":{"type":"string"},"required":true,"description":"The domain to authorize","example":"mydomain.tld"},{"in":"header","name":"x-auth-expires","schema":{"type":"string"},"required":true,"description":"The expiration time of the signature","example":1765522015090},{"in":"header","name":"x-auth-signature","schema":{"type":"string"},"required":true,"description":"The signature generating using domain owner private key","example":"0b62348775da58077591e2d20506371e8d94a5a83031f34b9ac85845d3463e73b0f0a500875830785c093515806e354cda6c217acab0fce5245d662eff4105f5e1c"}],"responses":{"200":{"description":"Domain profile","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SerializedUserDomainProfile"}}}},"404":{"description":"Domain not found"}}}},"/user/{domain}/market-data":{"get":{"summary":"Retrieves detailed market data about the domain","description":"Retrieves detailed market data about the domain. API key authentication is required.","tags":["Market data endpoints"],"parameters":[{"in":"path","name":"domain","schema":{"type":"string"},"required":true,"description":"The domain name to retrieve market data"},{"in":"header","name":"x-api-key","schema":{"type":"string"},"required":true,"description":"API key to authorize the request","example":"my-api-key"}],"responses":{"200":{"description":"Domain marketplace data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SerializedSaleDetails"}}}},"400":{"description":"Request contained invalid parameters"},"404":{"description":"Domain not found"}}}},"/user/{address}/nfts/collections":{"get":{"summary":"Retrieve NFT collections","description":"Retrieves NFT collections owned by the provided wallet address. Collections are filtered by spam using criteria such as floor price, trading volume and holder distribution.","tags":["Wallet data endpoints"],"parameters":[{"in":"header","name":"Authorization","schema":{"type":"string"},"required":true,"description":"The JWT access token that authorizes the request","example":"my-jwt-access-token"},{"in":"path","name":"address","schema":{"type":"string"},"required":true,"description":"The address to query NFT collections. Supported addresses include EVM, Solana and Bitcoin.","example":1.0392900530713021e+47},{"in":"query","name":"symbols","schema":{"type":"string"},"description":"Comma separated list of ticker symbols to query NFT collections data. For example an EVM address may be provided, which may specify multiple chains. The symbols=MATIC would indicate only Polygon data is requested. Omitting the symbols parameter will return data for all blockchains associated with the address.","example":"ETH,MATIC,SOL","required":false}],"responses":{"200":{"description":"Set of NFT collections indexed by symbol","content":{"application/json":{"schema":{"type":"object","properties":{"SYMBOL":{"type":"array","items":{"$ref":"#/components/schemas/SerializedWalletNftCollection"}}}}}}},"404":{"description":"Address not found"}}}},"/user/{domain}/nfts":{"post":{"summary":"Update NFT preferences for a domain","description":"The POST call can be used to update NFT gallery preferences for addresses resolving to the domain. Authentication is required using domain owner signature.","tags":["Profile management endpoints"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SerializedDomainNftGalleriesPost"}}}},"parameters":[{"in":"path","name":"domain","schema":{"type":"string"},"required":true,"description":"The domain name to query profile data"},{"in":"header","name":"x-auth-domain","schema":{"type":"string"},"required":true,"description":"The domain to authorize","example":"mydomain.tld"},{"in":"header","name":"x-auth-expires","schema":{"type":"string"},"required":true,"description":"The expiration time of the signature","example":1765522015090},{"in":"header","name":"x-auth-signature","schema":{"type":"string"},"required":true,"description":"The signature generating using domain owner private key","example":"0b62348775da58077591e2d20506371e8d94a5a83031f34b9ac85845d3463e73b0f0a500875830785c093515806e354cda6c217acab0fce5245d662eff4105f5e1c"}],"responses":{"204":{"description":"Update successful"},"400":{"description":"Request contained invalid parameters"},"404":{"description":"Domain not found"}}}},"/user/{address}/nfts":{"get":{"summary":"Retrieve NFTs","description":"Retrieves NFT data for a given address. Authentication with an API key is required.","tags":["Wallet data endpoints"],"parameters":[{"in":"path","name":"address","schema":{"type":"string"},"required":true,"description":"The wallet address to retrieve NFT data. Supported addresses include EVM, Solana and Bitcoin."},{"in":"header","name":"Authorization","schema":{"type":"string"},"required":true,"description":"The JWT access token that authorizes the request","example":"my-jwt-access-token"},{"in":"query","name":"symbols","schema":{"type":"string"},"description":"Comma separated list of ticker symbols to query NFT data. For example an EVM address may be provided, which may specify multiple chains. The symbols=MATIC would indicate only Polygon data is requested. Omitting the symbols parameter will return data for all blockchains associated with the address.","example":"ETH,MATIC,SOL","required":false},{"in":"query","name":"collection","schema":{"type":"string"},"description":"The collection to query NFT data","example":"unstoppable-domains","required":false},{"in":"query","name":"limit","schema":{"type":"number"},"description":"The maximum number of NFT records to retrieve","example":50,"required":false},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"The paging cursor used in combination with the limit parameter","example":"desiredPage","required":false}],"responses":{"200":{"description":"Paginated NFT data","content":{"application/json":{"schema":{"type":"object","properties":{"SYMBOL":{"type":"object","$ref":"#/components/schemas/SerializedNftResponse"}}}}}},"400":{"description":"Invalid address"},"404":{"description":"Address not found"}}}},"/user/{domain}/notifications/preferences":{"post":{"summary":"Modify domain notification preferences","description":"Modify notifications preferences related to the domain, such as mobile push notifications and email.","tags":["Profile management endpoints"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SerializedNotificationPost"}}}},"parameters":[{"in":"path","name":"domain","schema":{"type":"string"},"required":true,"description":"The domain name to query profile data"}],"responses":{"200":{"description":"Update successful"},"400":{"description":"Request contained invalid parameters"},"404":{"description":"Domain not found"}}},"get":{"summary":"Get domain notification preferences","description":"Get notifications preferences related to the domain, such as mobile push notifications and email.","tags":["Profile management endpoints"],"parameters":[{"in":"path","name":"domain","schema":{"type":"string"},"required":true,"description":"The domain name to query profile data"},{"in":"header","name":"x-auth-domain","schema":{"type":"string"},"required":true,"description":"The domain to authorize","example":"mydomain.tld"},{"in":"header","name":"x-auth-expires","schema":{"type":"string"},"required":true,"description":"The expiration time of the signature","example":1765522015090},{"in":"header","name":"x-auth-signature","schema":{"type":"string"},"required":true,"description":"The signature generating using domain owner private key","example":"b62348775da58077591e2d20506371e8d94a5a83031f34b9ac85845d3463e73b0f0a500875830785c093515806e354cda6c217acab0fce5245d662eff4105f5e1c"}],"responses":{"200":{"description":"Update successful"},"400":{"description":"Request contained invalid parameters"},"404":{"description":"Domain not found"}}}},"/user/{domain}/records/confirm":{"post":{"summary":"Confirm an update to a domain's on-chain records","description":"The POST call can be used to complete the process of modifying a domain's on-chain records by submitting a signed transaction hash to confirm an operation. Authentication is required using domain owner signature.","tags":["Profile management endpoints"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConfirmDomainRecordRequest"}}}},"parameters":[{"in":"path","name":"domain","schema":{"type":"string"},"required":true,"description":"The domain name to update on-chain records"},{"in":"header","name":"x-auth-domain","schema":{"type":"string"},"required":true,"description":"The domain to authorize","example":"mydomain.tld"},{"in":"header","name":"x-auth-expires","schema":{"type":"string"},"required":true,"description":"The expiration time of the signature","example":1765522015090},{"in":"header","name":"x-auth-signature","schema":{"type":"string"},"required":true,"description":"The signature generating using domain owner private key","example":"0b62348775da58077591e2d20506371e8d94a5a83031f34b9ac85845d3463e73b0f0a500875830785c093515806e354cda6c217acab0fce5245d662eff4105f5e1c"}],"responses":{"200":{"description":"Successful confirmation of domain record update. The domain records will be updated on the blockchain.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"404":{"description":"Domain not found"}}}},"/user/{domain}/records/manage":{"get":{"summary":"Retrieves pending on-chain record management operations","description":"Retrieves a list of pending on-chain record operations for this domain. Authentication is required using domain owner signature.","tags":["Profile management endpoints"],"parameters":[{"in":"path","name":"domain","schema":{"type":"string"},"required":true,"description":"The domain name to retrieve pending operations"},{"in":"header","name":"x-auth-domain","schema":{"type":"string"},"required":true,"description":"The domain to authorize","example":"mydomain.tld"},{"in":"header","name":"x-auth-expires","schema":{"type":"string"},"required":true,"description":"The expiration time of the signature","example":1765522015090},{"in":"header","name":"x-auth-signature","schema":{"type":"string"},"required":true,"description":"The signature generating using domain owner private key","example":"0b62348775da58077591e2d20506371e8d94a5a83031f34b9ac85845d3463e73b0f0a500875830785c093515806e354cda6c217acab0fce5245d662eff4105f5e1c"}],"responses":{"200":{"description":"List of pending on-chain operations","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationListResponse"}}}},"400":{"description":"Request contained invalid parameters"},"404":{"description":"Domain not found"}}},"post":{"summary":"Request to update a domain's on-chain records","description":"The POST call can be used to start the process of modifying a domain's on-chain records. Authentication is required using domain owner signature.","tags":["Profile management endpoints"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateDomainRecordRequest"}}}},"parameters":[{"in":"path","name":"domain","schema":{"type":"string"},"required":true,"description":"The domain name to update on-chain records"},{"in":"header","name":"x-auth-domain","schema":{"type":"string"},"required":true,"description":"The domain to authorize","example":"mydomain.tld"},{"in":"header","name":"x-auth-expires","schema":{"type":"string"},"required":true,"description":"The expiration time of the signature","example":1765522015090},{"in":"header","name":"x-auth-signature","schema":{"type":"string"},"required":true,"description":"The signature generating using domain owner private key","example":"0b62348775da58077591e2d20506371e8d94a5a83031f34b9ac85845d3463e73b0f0a500875830785c093515806e354cda6c217acab0fce5245d662eff4105f5e1c"}],"responses":{"200":{"description":"Successful request of domain record update. The transaction hash must be signed and submitted to confirm the record update.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationResponse"}}}},"404":{"description":"Domain not found"}}}},"/user/{domain}/signature":{"get":{"summary":"Retrieves the message that must be signed to view private domain profile data","description":"Retrieve the message text that must be signed by the domain owner. The request URL and any request data must match exactly the data that will be used on the signature required endpoint.","tags":["Message generator endpoints"],"parameters":[{"in":"path","name":"domain","schema":{"type":"string"},"required":true,"description":"The domain name to query profile data"},{"in":"query","name":"expiry","schema":{"type":"number"},"required":false,"description":"Expiry time represented by milliseconds since epoch","example":1765522015090},{"in":"query","name":"device","schema":{"type":"boolean"},"required":false,"description":"Indicates the user wishes to authorize and remember the device for profile management","example":true}],"responses":{"200":{"description":"Message to be signed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SerializedRequestMessage"}}}},"404":{"description":"Domain not found"}}},"post":{"summary":"Retrieves the message that must be signed to edit private domain profile data","description":"Retrieve the required message that must be signed by the domain owner to update a domain profile. A POST request must include the exact JSON body that will be used to make the update. The entire contents of the JSON body are included in the message hash, to ensure the signature cannot be used in combination with unauthorized modifications to the domain profile.","tags":["Message generator endpoints"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SerializedDomainProfilePost"}}}},"parameters":[{"in":"path","name":"domain","schema":{"type":"string"},"required":true,"description":"The domain name to query profile data"},{"in":"query","name":"expiry","schema":{"type":"number"},"required":false,"description":"Expiry time represented by milliseconds since epoch","example":1765522015090}],"responses":{"200":{"description":"Message to be signed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SerializedRequestMessage"}}}},"404":{"description":"Domain not found"}}}},"/user/{address}/transactions":{"get":{"summary":"Retrieve transactions","description":"Retrieves wallet transactions for the provided wallet address. The address may be any supported MPC address. Authentication with an API key is required.","tags":["Wallet data endpoints"],"parameters":[{"in":"path","name":"address","schema":{"type":"string"},"required":true,"description":"The address to retrieve transaction information. Supported addresses include EVM, Solana and Bitcoin."},{"in":"query","name":"symbols","schema":{"type":"string"},"description":"Comma separated list of ticker symbols to query transaction data. For example an EVM address may be provided, which may specify multiple chains. The symbols=MATIC would indicate only Polygon data is requested. Omitting the symbols parameter will return data for all blockchains associated with the address.","example":"ETH,MATIC"},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"The paging cursor used in combination with the limit parameter","example":"desiredPage"},{"in":"query","name":"forceRefresh","schema":{"type":"number"},"required":false,"description":"Include a timestamp to indicate that caching should be avoided when rendering the response","example":1707491939},{"in":"header","name":"Authorization","schema":{"type":"string"},"required":true,"description":"The JWT access token that authorizes the request","example":"my-jwt-access-token"}],"responses":{"200":{"description":"Transaction data","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/SerializedTxns"}}}}},"400":{"description":"Invalid address"},"404":{"description":"Address not found"}}}},"/user/{identifier}/wallet/account":{"post":{"summary":"Retrieves account status for an account specified by an identifier","description":"Retrieves account status for an account specified by an identifier","tags":["Wallet management endpoints"],"parameters":[{"in":"path","name":"identifier","schema":{"type":"string"},"required":true,"description":"An account identifier"}],"responses":{"200":{"description":"Account status","content":{"application/json":{"schema":{"type":"object","$ref":"#/components/schemas/WalletAccountResponse"}}}},"404":{"description":"Account not found"}}}},"/user/{address}/wallet/identity":{"post":{"summary":"Request to synchronize wallet addresses with tokenized identity","description":"Request to synchronize wallet addresses with tokenized identity","tags":["Wallet management endpoints"],"parameters":[{"in":"path","name":"address","schema":{"type":"string"},"required":true,"description":"Any blockchain address associated with the wallet"},{"in":"header","name":"Authorization","schema":{"type":"string"},"required":true,"description":"The JWT access token that authorizes the request","example":"my-jwt-access-token"}],"responses":{"200":{"description":"Successful request to tokenize the identity","content":{"application/json":{"schema":{"type":"object","$ref":"#/components/schemas/SerializedIdentityResponse"}}}}}}},"/user/{domain}/wallet":{"get":{"summary":"Retrieves on-chain record management status","description":"Retrieves the domain management registration status. The owner wallet must be registered to manage on-chain records. Authentication is required using domain owner signature.","tags":["Profile management endpoints"],"parameters":[{"in":"path","name":"domain","schema":{"type":"string"},"required":true,"description":"The domain name to retrieve account registrations state"},{"in":"header","name":"x-auth-domain","schema":{"type":"string"},"required":true,"description":"The domain to authorize","example":"mydomain.tld"},{"in":"header","name":"x-auth-expires","schema":{"type":"string"},"required":true,"description":"The expiration time of the signature","example":1765522015090},{"in":"header","name":"x-auth-signature","schema":{"type":"string"},"required":true,"description":"The signature generating using domain owner private key","example":"0b62348775da58077591e2d20506371e8d94a5a83031f34b9ac85845d3463e73b0f0a500875830785c093515806e354cda6c217acab0fce5245d662eff4105f5e1c"}],"responses":{"200":{"description":"Wallet registration state","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetWalletResponse"}}}},"400":{"description":"Request contained invalid parameters"},"404":{"description":"Domain not found"}}},"post":{"summary":"Register for on-chain record management","description":"The POST call can be used to enable a wallet to manage a domain's on-chain records. Authentication is required using domain owner signature.","tags":["Profile management endpoints"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisterWalletRequest"}}}},"parameters":[{"in":"path","name":"domain","schema":{"type":"string"},"required":true,"description":"The domain name to register for on-chain record management"},{"in":"header","name":"x-auth-domain","schema":{"type":"string"},"required":true,"description":"The domain to authorize","example":"mydomain.tld"},{"in":"header","name":"x-auth-expires","schema":{"type":"string"},"required":true,"description":"The expiration time of the signature","example":1765522015090},{"in":"header","name":"x-auth-signature","schema":{"type":"string"},"required":true,"description":"The signature generating using domain owner private key","example":"0b62348775da58077591e2d20506371e8d94a5a83031f34b9ac85845d3463e73b0f0a500875830785c093515806e354cda6c217acab0fce5245d662eff4105f5e1c"}],"responses":{"200":{"description":"Wallet registration state","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetWalletResponse"}}}},"404":{"description":"Domain not found"}}}},"/user/{address}/wallet/invite":{"post":{"summary":"Sends an Unstoppable Lite Wallet invitation to a specified contact","description":"Sends an Unstoppable Lite Wallet invitation to a specified contact","tags":["Wallet management endpoints"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WalletInviteRequest"}}}},"parameters":[{"in":"path","name":"address","schema":{"type":"string"},"required":true,"description":"A wallet address associated with the invitation sender account"}],"responses":{"200":{"description":"Account status","content":{"application/json":{"schema":{"type":"object","$ref":"#/components/schemas/WalletAccountResponse"}}}},"404":{"description":"Sender account not found"},"409":{"description":"Invited account already exists"}}}},"/user/{address}/wallet/rpc":{"post":{"summary":"RPC proxy","description":"Proxy requests to a blockchain specific RPC endpoint for EVM or Solana networks. Authentication with an API key is required.","tags":["Wallet data endpoints"],"parameters":[{"in":"path","name":"address","schema":{"type":"string"},"required":true,"description":"The address to retrieve wallet information. Supported addresses include EVM, Solana and Bitcoin."},{"in":"header","name":"Authorization","schema":{"type":"string"},"required":true,"description":"The JWT access token that authorizes the request","example":"my-jwt-access-token"}],"responses":{"200":{"description":"RPC specific success response"},"403":{"description":"Not authorized"}}}},"/user/{address}/wallet/simulate":{"post":{"summary":"Simulate a wallet transaction","description":"Simulate a wallet transaction. Authentication with an API key is required.","tags":["Wallet data endpoints"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SimulationRequest"}}}},"parameters":[{"in":"path","name":"address","schema":{"type":"string"},"required":true,"description":"The address to simulate a transaction. Supported addresses include EVM or Solana."},{"in":"header","name":"Authorization","schema":{"type":"string"},"required":true,"description":"The JWT access token that authorizes the request","example":"my-jwt-access-token"}],"responses":{"200":{"description":"Simulated transaction results","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/SerializedTransactionSimulation"}}}}},"400":{"description":"Invalid address"},"404":{"description":"Address not found"}}}},"/user/{address}/wallet/solana/signature":{"post":{"summary":"Sign a message with a Solana wallet","description":"Sign a message with a Solana wallet. Authentication with an API key is required.","tags":["Solana wallet endpoints"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SolanaSignatureRequest"}}}},"parameters":[{"in":"path","name":"address","schema":{"type":"string"},"required":true,"description":"The address with which to sign the message"},{"in":"header","name":"Authorization","schema":{"type":"string"},"required":true,"description":"The JWT access token that authorizes the request","example":"my-jwt-access-token"}],"responses":{"200":{"description":"Signature result","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/SolanaSignatureResponse"}}}}},"400":{"description":"Invalid address"},"404":{"description":"Address not found"}}}},"/user/{address}/wallet/solana/status":{"get":{"summary":"Retrieve status of a transaction hash","description":"Retrieve status of a transaction hash. Authentication with an API key is required.","tags":["Solana wallet endpoints"],"parameters":[{"in":"path","name":"address","schema":{"type":"string"},"required":true,"description":"The address to authenticate"},{"in":"query","name":"hash","schema":{"type":"string"},"required":true,"description":"The blockchain hash to query for confirmation"},{"in":"header","name":"Authorization","schema":{"type":"string"},"required":true,"description":"The JWT access token that authorizes the request","example":"my-jwt-access-token"}],"responses":{"200":{"description":"Transaction result","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/SolanaTransactionResponse"}}}}},"400":{"description":"Invalid address"},"404":{"description":"Address not found"}}}},"/user/{address}/wallet/solana/transaction":{"post":{"summary":"Sign a transaction with a Solana wallet","description":"Sign a transaction with a Solana wallet. Authentication with an API key is required.","tags":["Solana wallet endpoints"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SolanaTransactionRequest"}}}},"parameters":[{"in":"path","name":"address","schema":{"type":"string"},"required":true,"description":"The address with which to sign the transaction"},{"in":"header","name":"Authorization","schema":{"type":"string"},"required":true,"description":"The JWT access token that authorizes the request","example":"my-jwt-access-token"}],"responses":{"200":{"description":"Transaction result","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/SolanaTransactionResponse"}}}}},"400":{"description":"Invalid address"},"404":{"description":"Address not found"}}}},"/user/{address}/wallet/solana/transfer":{"post":{"summary":"Transfer Solana tokens to another wallet","description":"Transfer Solana tokens to another wallet. Authentication with an API key is required.","tags":["Solana wallet endpoints"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SolanaTransferRequest"}}}},"parameters":[{"in":"path","name":"address","schema":{"type":"string"},"required":true,"description":"The address to initiate the transfer"},{"in":"header","name":"Authorization","schema":{"type":"string"},"required":true,"description":"The JWT access token that authorizes the request","example":"my-jwt-access-token"}],"responses":{"200":{"description":"Transfer result","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/SolanaTransactionResponse"}}}}},"400":{"description":"Invalid address"},"404":{"description":"Address not found"}}}},"/user/{account}/wallet/storage/{key}":{"get":{"summary":"Retrieve wallet storage data","description":"Retrieves data associated with a wallet specific storage key. Authentication is required using domain owner signature.","tags":["Wallet storage endpoints"],"parameters":[{"in":"path","name":"account","schema":{"type":"string"},"required":true,"description":"The account ID to authenticate"},{"in":"header","name":"Authorization","schema":{"type":"string"},"required":true,"description":"The JWT access token that authorizes the request","example":"my-jwt-access-token"}],"responses":{"200":{"description":"Storage key data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WalletStorageData"}}}},"404":{"description":"Key not found"}}},"post":{"summary":"Edit wallet storage data","description":"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.","tags":["Wallet storage endpoints"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"string","description":"A JSON serialized string that conforms to the Zod schema for the specified storage key","example":"[\"key3\",\"key4\"]"}}}},"parameters":[{"in":"path","name":"account","schema":{"type":"string"},"required":true,"description":"The account ID to authenticate"},{"in":"header","name":"Authorization","schema":{"type":"string"},"required":true,"description":"The JWT access token that authorizes the request","example":"my-jwt-access-token"}],"responses":{"200":{"description":"Wallet storage data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WalletStorageData"}}}},"403":{"description":"Account not authorized"}}},"delete":{"summary":"Delete wallet storage data","description":"Delete wallet storage data. Authentication is required using domain owner signature.","tags":["Wallet storage endpoints"],"parameters":[{"in":"path","name":"account","schema":{"type":"string"},"required":true,"description":"The account ID to authenticate"},{"in":"header","name":"Authorization","schema":{"type":"string"},"required":true,"description":"The JWT access token that authorizes the request","example":"my-jwt-access-token"}],"responses":{"200":{"description":"Wallet storage data successfully deleted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WalletStorageData"}}}},"403":{"description":"Account not authorized"}}}},"/user/{account}/wallet/storage/keys":{"get":{"summary":"Retrieve a list of keys that can be used with wallet storage","description":"Retrieve a list of keys that can be used with wallet storage. Authentication with an API key is required.","tags":["Wallet storage endpoints"],"parameters":[{"in":"path","name":"account","schema":{"type":"string"},"required":true,"description":"The account ID to authenticate"},{"in":"header","name":"Authorization","schema":{"type":"string"},"required":true,"description":"The JWT access token that authorizes the request","example":"my-jwt-access-token"}],"responses":{"200":{"description":"List of keys","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/WalletStorageKey"}}}}},"400":{"description":"Invalid account"},"403":{"description":"Account not authorized"}}}},"/user/{address}/wallets":{"get":{"summary":"Retrieves wallet summary","description":"Retrieves a detailed summary of wallet data for a given address. Supported addresses include EVM, Solana and Bitcoin. Authentication with an API key is required.","tags":["Wallet data endpoints"],"parameters":[{"in":"path","name":"address","schema":{"type":"string"},"required":true,"description":"The address to retrieve wallet information. Supported addresses include EVM, Solana and Bitcoin."},{"in":"query","name":"verbose","schema":{"type":"boolean"},"required":false},{"in":"query","name":"forceRefresh","schema":{"type":"number"},"required":false,"description":"Include a timestamp to indicate that caching should be avoided when rendering the response","example":1707491939},{"in":"query","name":"walletFields","schema":{"type":"string"},"required":false,"description":"Comma separated list of wallet data fields to retrieve. Use this field to optimize performance and retrieve only the required data. Defaults, native,nft,token,tx.","example":"native,nft,stats,token,tx"},{"in":"header","name":"Authorization","schema":{"type":"string"},"required":true,"description":"The JWT access token that authorizes the request","example":"my-jwt-access-token"}],"responses":{"200":{"description":"Wallet data","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/SerializedWalletBalance"}}}}},"400":{"description":"Invalid address"},"404":{"description":"Address not found"}}}},"/user/domains":{"post":{"summary":"Edit domain profile data in bulk","description":"The POST call can be used to create new domain profiles or make updates to existing profiles. All domains in the bulk update list must belong to the same wallet address. Authentication is required using the domain owner signature from one of the domains in the bulk update list.","tags":["Profile management endpoints"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SerializedBulkDomainProfilePost"}}}},"parameters":[{"in":"header","name":"x-auth-domain","schema":{"type":"string"},"required":true,"description":"The domain to authorize","example":"mydomain.tld"},{"in":"header","name":"x-auth-expires","schema":{"type":"string"},"required":true,"description":"The expiration time of the signature","example":1765522015090},{"in":"header","name":"x-auth-signature","schema":{"type":"string"},"required":true,"description":"The signature generating using domain owner private key","example":"0b62348775da58077591e2d20506371e8d94a5a83031f34b9ac85845d3463e73b0f0a500875830785c093515806e354cda6c217acab0fce5245d662eff4105f5e1c"}],"responses":{"200":{"description":"Domain profile","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SerializedBulkDomainResponse"}}}},"400":{"description":"Invalid request"},"403":{"description":"Bulk update not authorized"},"404":{"description":"Domain not found"}}}},"/user/identity":{"get":{"summary":"Request tokenization status of a user identity","description":"Request tokenization status of a user identity","tags":["Identity management endpoints"],"parameters":[{"in":"header","name":"Authorization","schema":{"type":"string"},"required":true,"description":"The JWT access token that authorizes the request","example":"my-jwt-access-token"},{"in":"header","name":"x-auth-subject","schema":{"type":"string"},"required":true,"description":"The user identity associated with request for tokenization","example":"user123xyz"}],"responses":{"200":{"description":"Successful request to tokenize the identity","content":{"application/json":{"schema":{"type":"object","$ref":"#/components/schemas/SerializedIdentityResponse"}}}}}},"post":{"summary":"Request tokenization of user identity","description":"Request tokenization of user identity","tags":["Identity management endpoints"],"parameters":[{"in":"header","name":"Authorization","schema":{"type":"string"},"required":true,"description":"The JWT access token that authorizes the request","example":"my-jwt-access-token"},{"in":"header","name":"x-auth-subject","schema":{"type":"string"},"required":true,"description":"The user identity associated with request for tokenization","example":"user123xyz"}],"responses":{"200":{"description":"Successful request to tokenize the identity","content":{"application/json":{"schema":{"type":"object","$ref":"#/components/schemas/SerializedIdentityResponse"}}}},"400":{"description":"Invalid request"},"409":{"description":"Identity already tokenized"}}}},"/user/wallet/claim":{"post":{"summary":"An asynchronous request to claim a wallet to self custody","description":"An asynchronous request to claim a wallet to self custody, using a server generated secret.","tags":["Wallet management endpoints"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WalletInviteRequest"}}}},"parameters":[{"in":"header","name":"x-api-key","schema":{"type":"string"},"required":true,"description":"The server generated secret required to authorize the request. This value should be the same one used returned in the POST response when the wallet was created.","example":"user-provided-secret"}],"responses":{"200":{"description":"Successfully requested to claim the wallet to self custody. The status will of the response will always be PROCESSING. Must use the corresponding GET endpoint to check status to determine when claiming is complete.","content":{"application/json":{"schema":{"type":"object","$ref":"#/components/schemas/WalletOnboardResponse"}}}},"403":{"description":"Not authorized"},"409":{"description":"Wallet already claimed or email already in use"},"429":{"description":"Too many attempts"}}},"get":{"summary":"Get status of a wallet claim to self custody","description":"Get status of a wallet claim to self custody.","tags":["Wallet management endpoints"],"parameters":[{"in":"header","name":"x-api-key","schema":{"type":"string"},"required":true,"description":"The server generated secret required to authorize the request. This value should be the same one used returned in the POST response when the wallet was created.","example":"user-provided-secret"}],"responses":{"200":{"description":"Successfully retrieved self custody wallet status","content":{"application/json":{"schema":{"type":"object","$ref":"#/components/schemas/WalletOnboardResponse"}}}},"403":{"description":"Not authorized"},"404":{"description":"Not found"},"429":{"description":"Too many attempts"}}}},"/user/wallet":{"post":{"summary":"Request a one time code required to setup a new wallet","description":"If a wallet does not already exist, a one time code will created and sent to the provided email address.","deprecated":true,"tags":["Wallet management endpoints"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WalletInviteRequest"}}}},"responses":{"200":{"description":"Successfully sent one time code to verify email address","content":{"application/json":{"schema":{"type":"object","$ref":"#/components/schemas/WalletAccountResponse"}}}},"403":{"description":"Not authorized"},"409":{"description":"Account already exists"},"429":{"description":"Too many attempts"}}}},"/user/wallet/launch":{"post":{"summary":"An asynchronous request to create a wallet","description":"An asynchronous request to create a wallet. The resulting wallet will be custodial, but the user can claim custody at a later time using the server generated secret provided in the response.","tags":["Wallet management endpoints"],"parameters":[{"in":"header","name":"x-api-key","schema":{"type":"string"},"required":true,"description":"Required to authorize the request for a new wallet","example":"wallet-creation-secret"}],"responses":{"200":{"description":"Successfully requested to create a custody wallet. The status will of the response will always be PROCESSING with an empty list of addresses. Must use the corresponding GET endpoint to check status and address metadata, using the provided server generated secret as authentication.","content":{"application/json":{"schema":{"type":"object","$ref":"#/components/schemas/WalletOnboardResponse"}}}},"403":{"description":"Not authorized"},"409":{"description":"Account already exists"},"429":{"description":"Too many attempts"}}},"get":{"summary":"Get status of a wallet","description":"Get status of a wallet associated with a server generated secret. The secret is provided to the client at wallet create time.","tags":["Wallet management endpoints"],"parameters":[{"in":"header","name":"x-api-key","schema":{"type":"string"},"required":true,"description":"The server generated secret required to authorize the request. This value should be the same one used returned in the POST response when the wallet was created.","example":"user-provided-secret"}],"responses":{"200":{"description":"Successfully retrieved custody wallet status","content":{"application/json":{"schema":{"type":"object","$ref":"#/components/schemas/WalletOnboardResponse"}}}},"403":{"description":"Not authorized"},"404":{"description":"Not found"},"429":{"description":"Too many attempts"}}}},"/user/wallet/register":{"post":{"summary":"Create a wallet with a verified email address","description":"The one time code generated with the associated POST request must be provided in the request body.","deprecated":true,"tags":["Wallet management endpoints"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WalletInviteRequest"}}}},"responses":{"200":{"description":"Successfully submitted request to create wallet","content":{"application/json":{"schema":{"type":"object","$ref":"#/components/schemas/WalletAccountResponse"}}}},"403":{"description":"Not authorized"},"409":{"description":"Account already exists"},"429":{"description":"Too many attempts"}}}}},"components":{"schemas":{"SerializedProfileSearchResponse":{"type":"array","items":{"$ref":"#/components/schemas/SerializedProfileSearch"}},"SerializedDomainFollowPost":{"type":"object","properties":{"domain":{"type":"string","description":"Name of domain to follow","example":"follow.x"}}},"SimulationRequest":{"type":"object","properties":{"serializedTx":{"type":"string","description":"Serialized transaction request","example":291}}},"BadgesBulkPost":{"type":"object","properties":{"domains":{"type":"array","items":{"type":"string"},"description":"List of domains to query"}}},"BadgesConfigPost":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string","description":"Badge code","example":"badge1"},"active":{"type":"boolean","description":"Indicates if badge is active","example":true}}}},"WalletInviteRequest":{"type":"object","properties":{"emailAddress":{"type":"string","description":"Email address to register","example":"user@email.com"},"password":{"type":"string","description":"Password to use when creating new wallet","example":"secret-password"}}},"GetSuggestionsResponse":{"type":"object","properties":{"type":{"type":"string","description":"Description of response type","example":"unstoppabledomains.com/partner.v3.WalletVerificationResult"},"items":{"type":"array","items":{"$ref":"#/components/schemas/GetSuggestionsResponseItem"}}}},"GetSuggestionsResponseItem":{"type":"object","properties":{"type":{"type":"string","description":"Description of response type","example":"unstoppabledomains.com/partner.v3.WalletVerificationResult"},"name":{"type":"string","description":"Name of suggested domain","example":"available.nft"},"price":{"type":"object","description":"Price of the suggested domain","$ref":"#/components/schemas/GetSuggestionsResponsePrice"}}},"GetSuggestionsResponsePrice":{"type":"object","properties":{"type":{"type":"string","description":"Description of response type","example":"unstoppabledomains.com/partner.v3.WalletVerificationResult"},"listPrice":{"type":"object","description":"List price of the suggested domain","$ref":"#/components/schemas/GetSuggestionsResponseListPrice"},"subTotal":{"type":"object","description":"Subtotal price of the suggested domain","$ref":"#/components/schemas/GetSuggestionsResponseListPrice"}}},"GetSuggestionsResponseListPrice":{"type":"object","properties":{"usdCents":{"type":"number","description":"Price in cents","example":1000}}},"GetWalletResponse":{"type":"object","properties":{"type":{"type":"string","description":"Description of response type","example":"unstoppabledomains.com/partner.v3.WalletVerificationResult"},"address":{"type":"string","description":"The wallet address","example":4660},"message":{"type":"string","description":"Message to sign","example":"Sign this message with wallet private key"}}},"WalletAccountResponse":{"type":"object","properties":{"emailAddress":{"type":"string","description":"Email address associated with the account","example":"myname@email.com"},"active":{"type":"boolean","description":"Flag to indicate the account is active","example":true},"clock":{"type":"number","description":"Expected epoch milliseconds for cryptography operations","example":1722600216741}}},"WalletOnboardResponse":{"type":"object","properties":{"secret":{"type":"string","description":"A secret created by the server and provided to the client only at initial wallet creation","example":"server-generated-secret"},"state":{"type":"string","description":"Indicates custody state of the wallet (CUSTODY or SELF_CUSTODY)","example":"SELF_CUSTODY"},"status":{"type":"string","description":"Indicates status of the onboarding process","example":"COMPLETE"},"addresses":{"type":"object","description":"Blockchain addresses associated with the wallet","properties":{"SYMBOL":{"type":"string","description":"Blockchain address associated with symbol","example":"blockchain-address"}}}}},"OperationResponse":{"type":"object","properties":{"type":{"type":"string","description":"Description of response type","example":"unstoppabledomains.com/partner.v3.OperationType"},"operation":{"type":"object","description":"Details about the operation","$ref":"#/components/schemas/Operation"}}},"OperationListResponse":{"type":"object","properties":{"type":{"type":"string","description":"Description of response type","example":"unstoppabledomains.com/partner.v3.OperationType"},"items":{"type":"array","description":"A list of operations","items":{"$ref":"#/components/schemas/Operation"}}}},"Operation":{"type":"object","properties":{"id":{"type":"string","description":"The operation ID","example":123},"dependencies":{"type":"array","description":"Tasks that must be completed before the operation is complete","items":{"$ref":"#/components/schemas/Dependency"}}}},"Dependency":{"type":"object","properties":{"id":{"type":"string","description":"The dependency ID","example":456},"transaction":{"type":"object","description":"On-chain transaction details","properties":{"hash":{"type":"string","description":"Transaction hash of the on-chain operation","example":291},"messageToSign":{"type":"string","description":"A message that must be signed by the domain owner's wallet to complete the transaction","example":1110}}}}},"RegisterWalletRequest":{"type":"object","properties":{"address":{"type":"string","description":"The wallet address","example":4660},"message":{"type":"string","description":"Message to sign","example":"Sign this message with wallet private key"},"signature":{"type":"string","description":"The signature created by signing the message with domain owner's private key","example":4660}}},"UpdateDomainRecordRequest":{"type":"object","properties":{"address":{"type":"string","description":"The wallet address","example":4660},"primaryDomain":{"type":"boolean","description":"Set this domain to the wallet's primary identity","example":true},"transferToAddress":{"type":"string","description":"Transfer the domain to the specified address","example":291},"clearRecords":{"type":"string","description":"Clear all records upon transfer","example":true},"records":{"type":"object","description":"Key value pairs of records to be updated","properties":{"key":{"type":"string","description":"An arbitrary on-chain record key","example":"An arbitrary on-chain record value"}}}}},"ConfirmDomainRecordRequest":{"type":"object","properties":{"operationId":{"type":"string","description":"The operation ID returned from a request to update domain records","example":1234},"dependencyId":{"type":"string","description":"The dependency ID returned from a request to update domain records","example":5678},"signature":{"type":"string","description":"The signature created by signing the domain record transaction hash with domain owner's private key","example":4660},"txHash":{"type":"string","description":"A completed transaction hash that specifies the operation to confirm","example":4660}}},"SerializedProfileSearch":{"type":"object","properties":{"address":{"type":"string","description":"Wallet address that owns the domain","example":7.917046959778566e+47},"name":{"type":"string","description":"The domain name","example":"brad.crypto"},"avatarUrl":{"type":"string","description":"Path to the profile image","example":"https://api.unstoppabledomains.com/metadata/image-src/brad.crypto?withOverlay=false&ref=1/erc1155:0xc7e5e9434f4a71e6db978bd65b4d61d3593e5f27/14317"},"imageUrl":{"type":"string","description":"Direct path to profile image metadata URL, if available","example":"https://path.to/image"},"imageType":{"type":"string","description":"Defines the type of image represented by the URL - default, onChain, offChain","example":"onChain"},"imagePath":{"type":"string","description":"Path to the profile image","example":"https://api.unstoppabledomains.com/metadata/image-src/brad.crypto?withOverlay=false&ref=1/erc1155:0xc7e5e9434f4a71e6db978bd65b4d61d3593e5f27/14317"},"linkUrl":{"type":"string","description":"Link to the domain resource","example":"https://ud.me/brad.crypto"},"ownerAddress":{"type":"string","description":"Wallet address that owns the domain","example":7.917046959778566e+47},"market":{"type":"object","description":"Market availability info","properties":{"price":{"type":"number","description":"Price of the domain in cents","example":1000},"location":{"type":"string","description":"Market type (primary or secondary)","example":"primary"}}}}},"SerializedTransactionSimulation":{"type":"object","properties":{"success":{"type":"boolean","description":"Indicates transaction success","example":true},"logs":{"type":"array","description":"Transaction logs","items":{"type":"string","example":"Log entry 1"}},"results":{"type":"object","$ref":"#/components/schemas/SerializedTransactionSimulationEntry"},"errorMessage":{"type":"string","description":"Error message associated with transaction","example":"An error message"}}},"SerializedTransactionSimulationEntry":{"type":"object","properties":{"delta":{"type":"number","description":"Estimated token balance change as a result of transaction","example":-1},"metadata":{"type":"object","$ref":"#/components/schemas/SerializedTransactionSimulationMetadata"}}},"SerializedTransactionSimulationMetadata":{"type":"object","properties":{"tokenName":{"type":"string","description":"Name of the token","example":"USD Coin"},"tokenSymbol":{"type":"string","description":"Symbol of the token","example":"USDC"},"tokenLogo":{"type":"string","description":"Logo of the token","example":"https://path.to/logo.png"}}},"SolanaTransferRequest":{"type":"object","properties":{"destinationWalletAddress":{"type":"string","description":"Destination wallet address","example":"The Base-58 encoded recipient address"},"tokenAddress":{"type":"string","description":"(Optional) Contract address address of SPL token","example":"(Optional) Contract address address of SPL token"},"tokenAmount":{"type":"number","description":"Amount to send","example":1},"waitForConfirmation":{"type":"boolean","description":"Wait for on-chain confirmation after broadcasting the transaction","example":false}}},"SolanaSignatureRequest":{"type":"object","properties":{"message":{"type":"string","description":"Message to sign","example":"A plaintext message to sign with the Solana wallet"}}},"SolanaTransactionRequest":{"type":"object","properties":{"txSerialized":{"type":"string","description":"A serialized transaction","example":"The serialized transaction to sign"},"waitForConfirmation":{"type":"boolean","description":"Wait for on-chain confirmation after broadcasting the transaction","example":false}}},"SolanaSignatureResponse":{"type":"object","properties":{"signature":{"type":"string","description":"Result of a signing operation","example":"The Base-58 encoded signature result"}}},"SolanaTransactionResponse":{"type":"object","properties":{"hash":{"type":"string","description":"Result of a transaction operation","example":"The Base-58 encoded transaction hash"},"confirmed":{"type":"boolean","description":"Indicates whether the transaction is confirmed on-chain","example":false}}},"SwapQuoteRequest":{"type":"object","properties":{"fromChain":{"type":"string"},"fromTokenAddress":{"type":"string"},"fromTokenSymbol":{"type":"string"},"fromTokenAmount":{"type":"string"},"fromTokenAmountUsd":{"type":"string"},"toChain":{"type":"string"},"toTokenAddress":{"type":"string"},"toTokenSymbol":{"type":"string"},"toWalletAddress":{"type":"string"}}},"SwapQuote":{"type":"object","properties":{"integration":{"type":"string"},"type":{"type":"string"},"bridgeFee":{"type":"string"},"bridgeFeeInNativeToken":{"type":"string"},"amount":{"type":"string"},"decimals":{"type":"number"},"amountUSD":{"type":"string"},"bridgeFeeUSD":{"type":"string"},"bridgeFeeInNativeTokenUSD":{"type":"string"},"priceImpact":{"type":"string"}}},"SwapRoute":{"type":"object","properties":{"bridge":{"type":"string"}}},"SwapRouteQuote":{"type":"object","properties":{"duration":{"type":"number"},"gas":{"type":"string"},"quote":{"type":"object","$ref":"#/components/schemas/SwapQuote"},"route":{"type":"array","items":{"$ref":"#/components/schemas/SwapRoute"}},"gasUsd":{"type":"string"}}},"SwapPlannedTx":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string"},"transaction":{"type":"object","properties":{"chainId":{"type":"number"},"to":{"type":"string"},"data":{"type":"string"},"value":{"type":"string"},"gasLimit":{"type":"string"}}}}},"SwapToken":{"type":"object","properties":{"symbol":{"type":"string"},"name":{"type":"string"},"address":{"type":"string"},"chain":{"type":"string"},"decimals":{"type":"number"},"logo":{"type":"string"},"price":{"type":"number"},"liquidityUsd":{"type":"number"},"tags":{"type":"array","items":{"type":"string"}}}},"WalletStorageKey":{"type":"object","properties":{"key":{"type":"string","description":"The name of the storage key","example":"key1"},"schema":{"type":"string","description":"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}},"example":{"type":"string","description":"An example of the data that can be stored in the storage key","example":"value1"},"description":{"type":"string","description":"A description of the storage key","example":"This storage key is used to store the XYZ data"}}},"WalletStorageData":{"type":"object","properties":{"createdDate":{"type":"string","description":"The date the storage key was created","example":"2021-01-01"},"updatedDate":{"type":"string","description":"The date the storage key was last updated","example":"2021-01-01"},"key":{"type":"string","description":"The key of the storage data","example":"key1"},"data":{"type":"string","description":"The data of the storage key","example":"value1"},"schema":{"type":"string","description":"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}}}},"SerializedBadge":{"type":"object","properties":{"name":{"type":"string","description":"Name of the Badge","example":"World of Women"},"code":{"type":"string","description":"Unique badge code","example":"WoWHolder"},"active":{"type":"boolean","description":"Indicates that the badge is active","example":true},"logo":{"type":"string","description":"Badge logo, could be url or emoji","example":"https://storage.googleapis.com/unstoppable-client-assets/images/badges/ud-logo.svg"},"linkUrl":{"type":"string","description":"Link to external website","example":"https://badge.io/info"},"videoUrl":{"type":"string","description":"Link to video","example":"https://storage.googleapis.com/unstoppable-client-assets/images/badges/unstoppabledomains.mp4"},"coverImage":{"type":"string","description":"Link to cover image","example":"https://storage.googleapis.com/unstoppable-client-assets/images/badges/bayc-cover-image.png"},"type":{"type":"string","description":"Type of badge","example":"default"},"count":{"type":"number","description":"Number of items associated with the badge","example":3},"description":{"type":"string","description":"Description of the badge","example":"Holds World of Women NFT."},"gallery":{"type":"object","$ref":"#/components/schemas/SerializedPartnerTokenGallery"},"marketplace":{"type":"object","$ref":"#/components/schemas/SerializedMarketplaceData"}}},"SerializedMarketplaceData":{"type":"object","properties":{"listings":{"type":"array","items":{"$ref":"#/components/schemas/SerializedNft"}},"avgPrice":{"type":"object","$ref":"#/components/schemas/SerializedNftPrice"},"floorPrice":{"type":"object","$ref":"#/components/schemas/SerializedNftPrice"},"supply":{"type":"number","description":"Total number of NFTs available","example":10000},"holders":{"type":"number","description":"Total number of holders","example":1000},"sales":{"type":"number","description":"Total number of sale transactions","example":3},"volume":{"type":"number","description":"Total sales volume","example":3}}},"SerializedPartnerTokenGallery":{"type":"object","properties":{"enabled":{"type":"boolean","description":"Indicates whether the partner token gallery is enabled for this badge","example":true},"featured":{"type":"array","description":"A list of featured token IDs","items":{"type":"string","example":"0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d/6776"}},"tier":{"type":"number","description":"Indicates the badge feature tier","example":1}}},"SerializedBadgeSponsorship":{"type":"object","properties":{"max":{"type":"number","description":"Maximum number of sponsorships available","example":10},"count":{"type":"number","description":"Number of current sponsorships","example":5},"latest":{"type":"string","description":"Domain name of the most recent sponsor","example":"latest.crypto"},"authorizedAddresses":{"description":"List of wallet addresses authorized to interact with badge","type":"array","items":{"type":"string","description":"wallet address authorized to interact with badge"}},"domains":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Domain name of sponsor","example":"sponsor.crypto"},"count":{"type":"number","description":"Number of sponsorships","example":1}}}}}},"SerializedBadgeRefresh":{"type":"object","properties":{"last":{"type":"string","description":"Timestamp of last badge refresh","example":"2022-11-28 00:00:00"},"next":{"type":"string","description":"Timestamp of next badge refresh","example":"2022-12-01 00:00:00"}}},"SerializedBadgeUsage":{"type":"object","description":"High level usage details about a specific badge","properties":{"holders":{"type":"number","description":"Number of unique wallets holding the badge","example":10000},"domains":{"type":"number","description":"Number of domains associated with the badge","example":10000},"featured":{"type":"array","description":"List of highlighted domains holding the badge","items":{"type":"string","example":"matt.crypto"}},"rank":{"type":"number","description":"Ranking when compared to other badges by number of holders. Lower is better.","example":1}}},"SerializedBadgeResponse":{"type":"object","description":"Domain specific details about a badges","properties":{"badges":{"type":"array","description":"List of badges held by the domain","items":{"$ref":"#/components/schemas/SerializedBadge"}},"partners":{"type":"array","description":"List of featured badges available from partners","items":{"$ref":"#/components/schemas/SerializedBadge"}},"refresh":{"type":"object","$ref":"#/components/schemas/SerializedBadgeRefresh"}}},"SerializedBadgeInfo":{"type":"object","description":"Overall details about a specific badge","properties":{"badge":{"type":"object","$ref":"#/components/schemas/SerializedBadge"},"sponsorship":{"type":"object","$ref":"#/components/schemas/SerializedBadgeSponsorship"},"usage":{"type":"object","$ref":"#/components/schemas/SerializedBadgeUsage"}}},"SerializedDomainRanking":{"type":"object","description":"Details about a given domain badge holding rank","properties":{"domain":{"type":"string","example":"matt.crypto"},"rank":{"type":"number","example":1},"count":{"type":"number","example":100}}},"SerializedBadgeClaimPost":{"type":"object","properties":{"link":{"type":"string","description":"Marketplace link to the NFT collection you want to claim a badge (e.g. OpenSea, MagicEden, Zuse.market, etc)","example":"https://opensea.io/collection/unstoppable-domains-polygon"}}},"SerializedDomainList":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"domain":{"type":"string","description":"The domain name"},"listing":{"type":"object","description":"Listing information for the domain","$ref":"#/components/schemas/SerializedMarketplaceListing"},"meta":{"type":"object","description":"Resolution metadata for the domain"}}}},"meta":{"type":"object","properties":{"total_count":{"type":"integer","description":"Total returned count"},"pagination":{"type":"object","properties":{"cursor":{"type":"integer","description":"Cursor position for pagination"},"take":{"type":"integer","description":"Number of items to return"}}}}},"relationship_type":{"type":"string","enum":["followers","following"],"description":"Relationship type (followers or following)"},"domain":{"type":"string","description":"The requested domain"}}},"SerializedMarketplaceListing":{"type":"object","properties":{"status":{"type":"string","description":"The status of the listing"},"price":{"type":"number","description":"The price of the listing in USD"},"priceFormattedUsd":{"type":"string","description":"The formatted price of the listing in USD"},"updatedAt":{"type":"string","description":"The date and time the listing was last updated"},"expiresAt":{"type":"string","description":"The date and time the listing will expire"}}},"SerializedFollowingStatus":{"type":"object","properties":{"isFollowing":{"type":"boolean","description":"Indicates whether the follower is following the followee"}}},"SerializedFollowerList":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"domain":{"type":"string","description":"The domain name of follower or followee"}}}},"meta":{"type":"object","properties":{"total_count":{"type":"integer","description":"Total returned count"},"pagination":{"type":"object","properties":{"cursor":{"type":"integer","description":"Cursor position for pagination"},"take":{"type":"integer","description":"Number of items to return"}}}}},"relationship_type":{"type":"string","enum":["followers","following"],"description":"Relationship type (followers or following)"},"domain":{"type":"string","description":"The requested domain"}}},"SerializedIdentityResponse":{"type":"object","properties":{"account":{"type":"string","description":"Account identifier associated with the identity","example":"user123xyz"},"domain":{"type":"string","description":"Obfuscated domain name associated with the identity","example":"22aba33b5d41558729dd176c8727239577562ccd1a939ca8931957b352c8342d.crypto"},"status":{"type":"string","description":"Describes the state of the tokenized identity","example":"ready"}}},"ManageIdentityRequest":{"type":"object","properties":{"address":{"type":"string","description":"Wallet address to populate crypto records","example":291},"records":{"type":"object","description":"Key value pairs of records to be updated","properties":{"key":{"type":"string","description":"An arbitrary on-chain record key","example":"An arbitrary on-chain record value"}}}}},"SerializedNft":{"type":"object","properties":{"name":{"type":"string","description":"Name of the NFT","example":"My NFT"},"mint":{"type":"string","description":"Unique address of the NFT","example":"a9a6a3626993d487d2dbda3173cf58ca1a9d9e9f"},"link":{"type":"string","description":"URL to marketplace entry for NFT","example":"https://opensea.io/your/nft"},"public":{"type":"boolean","description":"Indicates if the NFT is shown on public gallery","example":true},"image_url":{"type":"string","description":"URL to an image associated with the NFT","example":"https://ipfs.io/ipfs/path/to/image"},"pfp_uri":{"type":"string","description":"URI that can be used to specify a UD domain avatar if the NFT type is supported","example":"137/erc721:0xa429b85fD3458E8d89b0181A6AF93b577AE040DB/181"},"tags":{"type":"array","description":"Keywords to describe the NFT","items":{"type":"string"}},"collection":{"type":"string","description":"Name of the collection the NFT belongs to","example":"Bored Ape Yaught Club"},"collectionLink":{"type":"string","description":"URL to marketplace landing page for this NFT collection","example":"https://opensea.io/your/collection"},"collectionOwners":{"type":"number","description":"Total number of distinct wallets holding this collection","example":562},"collectionImageUrl":{"type":"string","description":"The NFT collection image URL (if available)","example":"https://path/to/collection/image"},"description":{"type":"string","description":"Descriptive text from the NFT's metadata","example":"NFT collection description"},"createdDate":{"type":"string","description":"The date this NFT was minted","example":"2023-12-06T13:43:33"},"acquiredDate":{"type":"string","description":"The date this NFT was acquired by the current owner","example":"2023-12-06T13:43:33"},"video_url":{"type":"string","description":"URL to a video associated with the NFT","example":"https://ipfs.io/ipfs/path/to/video"},"supply":{"type":"number","description":"Total number of NFTs in the collection","example":999},"floorPrice":{"type":"object","description":"Current floor price associated with the NFT","$ref":"#/components/schemas/SerializedNftPrice"},"saleDetails":{"type":"object","description":"Primary and secondary sales details","$ref":"#/components/schemas/SerializedSaleDetails"},"traits":{"type":"object","description":"NFT specific traits","properties":{"key":{"type":"string","description":"NFT trait key/value pair","example":"value"}}},"rarity":{"type":"object","description":"NFT rarity attributes","properties":{"rank":{"type":"number","description":"NFT ranking within the collection","example":1},"score":{"type":"number","description":"Score value used to determine rank","example":1.05}}}}},"SerializedNftPrice":{"type":"object","properties":{"currency":{"type":"string","description":"The currency associated with NFT price","example":"ETH"},"price":{"type":"number","description":"The price of the NFT","example":0.25}}},"SerializedNftResponse":{"type":"object","additionalProperties":{"type":"object","properties":{"address":{"type":"string","description":"Blockchain address that owns the list of NFTs","example":"8DyNeQYMWY6NLpPN7S1nTcDy2WXLnm5rzrtdWA2H2t6Y"},"cursor":{"type":"string","description":"The cursor value that can be used to retrieve the next page of results","example":"nextPage"},"verified":{"type":"boolean","description":"Indicates whether the address is verified"},"enabled":{"type":"boolean","description":"Indicates whether the NFT gallery is enabled"},"showAllItems":{"type":"boolean","description":"Indicates whether the NFT gallery shows all items by default"},"totalCount":{"type":"number","description":"Total count of NFTs available through pagination"},"nfts":{"type":"array","items":{"$ref":"#/components/schemas/SerializedNft"}}}}},"SerializedDomainNftGallery":{"type":"object","properties":{"id":{"type":"number","description":"ID of the NFT gallery","example":1},"symbol":{"type":"string","description":"Crypto symbol associated with the NFT gallery","example":"ETH"},"address":{"type":"string","description":"Wallet address associated with the NFT gallery","example":"a9a6a3626993d487d2dbda3173cf58ca1a9d9e9f"},"public":{"type":"boolean","description":"Indicates whether the NFT gallery is visible to the public","example":true},"showAllItems":{"type":"boolean","description":"Indicates whether NFTs in the gallery are shown by default","example":true},"order":{"type":"number","description":"Order preference in relation to other NFT galleries (higher indicates first preference)","example":10},"items":{"type":"array","description":"Array of NFT items and their individual preferences","items":{"$ref":"#/components/schemas/SerializedDomainNftGalleryItem"}}}},"SerializedDomainNftGalleryItem":{"type":"object","properties":{"mint":{"type":"string","description":"The address of the NFT","example":"a9a6a3626993d487d2dbda3173cf58ca1a9d9e9f"},"public":{"type":"boolean","description":"Indicates whether the NFT is visible to the public","example":true}}},"SerializedDomainNftGalleryItemPost":{"type":"object","properties":{"mint":{"type":"string","description":"The address of the NFT","example":"a9a6a3626993d487d2dbda3173cf58ca1a9d9e9f"},"public":{"type":"boolean","description":"Indicates whether the NFT is visible to the public","example":true}}},"SerializedDomainNftGalleryPost":{"type":"object","properties":{"symbol":{"type":"string","description":"Crypto symbol associated with the NFT gallery","example":"ETH"},"address":{"type":"string","description":"Wallet address associated with the NFT gallery","example":"cd0dadab45baf9a06ce1279d1342ecc3f44845af"},"public":{"type":"boolean","description":"Indicates whether the NFT gallery is visible to the public","example":true},"showAllItems":{"type":"boolean","description":"Indicates whether NFTs in the gallery are shown by default","example":true},"order":{"type":"number","description":"Order preference in relation to other NFT galleries (higher indicates first preference)","example":10},"items":{"type":"array","description":"Array of NFT items and their individual preferences","items":{"$ref":"#/components/schemas/SerializedDomainNftGalleryItemPost"}}}},"SerializedDomainNftGalleriesPost":{"type":"array","items":{"$ref":"#/components/schemas/SerializedDomainNftGalleryPost"}},"SerializedNotificationPost":{"type":"object","example":{"WEB_NOTIFICATION":true,"MOBILE_NOTIFICATION":true}},"SerializedAccountOtp":{"type":"object","properties":{"account":{"type":"string","description":"Identifier of the account","example":"user@email.com"},"otp":{"type":"string","description":"One time code to validate the account","example":123456},"type":{"type":"string","description":"Type of account","example":"email"}}},"SerializedJwtResponse":{"type":"object","properties":{"accessToken":{"type":"string","description":"JWT access token","example":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJtZXRhIjp7ImRvbWFpbiI6InRlc3QuZG9tYWluIn0sIm5vbmNlIjoiVERDOUZEIiwiaWF0IjoxNzE4MjgyNDQzLCJpc3MiOiJ1YXV0aCIsInN1YiI6InRlc3QxLmRvbWFpbiJ9.tXuHUczDzkTqmwkUhC2I16nWjiHnFOKRBsnzrMWOctk"}}},"SerializedUserDomainProfile":{"type":"object","properties":{"profile":{"type":"object","allOf":[{"$ref":"#/components/schemas/SerializedDomainProfileUserAttributes"},{"$ref":"#/components/schemas/SerializedDomainProfileAttributes"},{"$ref":"#/components/schemas/SerializedDomainProfileVisibility"}]},"social":{"type":"object","$ref":"#/components/schemas/SerializedSocialAttributes"},"messaging":{"type":"object","properties":{"disabled":{"type":"boolean","description":"Indicates if messaging feature is disabled"},"thirdPartyMessagingEnabled":{"type":"boolean","description":"Indicates if third party messaging enabled"},"thirdPartyMessagingConfigType":{"type":"string","description":"Type of third part messaging","example":"Skiff"},"hasSkiffAlias":{"type":"boolean","description":"Indicates if Skiff alias has been registered"},"rules":{"type":"array","description":"Describes mail rules defined by domain owner","items":{"$ref":"#/components/schemas/SerializedDomainMessageRule"}}}},"humanityCheck":{"type":"object","properties":{"verified":{"type":"boolean","description":"Set to true if humanity check verification is successful","example":true}}},"cryptoVerifications":{"type":"array","description":"List of blockchain address verification records attached to the domain","items":{"$ref":"#/components/schemas/SerializedDomainCryptoVerification"}},"records":{"type":"object","properties":{"onChainRecordKey":{"description":"On chain record key/value pair","example":"onChainRecordValue"}}},"storage":{"type":"object","properties":{"apiKey":{"type":"string","description":"User specific API key for remote storage endpoint","example":"storage-api-key"},"type":{"type":"string","description":"Storage type identifier","example":"ipfs"}}},"market":{"type":"object","$ref":"#/components/schemas/SerializedSaleDetails"},"portfolio":{"type":"object","$ref":"#/components/schemas/SerializedPortfolioSummary"},"walletBalances":{"type":"object","$ref":"#/components/schemas/SerializedWalletBalance"},"socialAccounts":{"type":"object","properties":{"discord":{"type":"object","$ref":"#/components/schemas/SerializedDomainSocialAccount"},"reddit":{"type":"object","$ref":"#/components/schemas/SerializedDomainSocialAccount"},"twitter":{"type":"object","$ref":"#/components/schemas/SerializedDomainSocialAccount"},"telegram":{"type":"object","$ref":"#/components/schemas/SerializedDomainSocialAccount"},"lens":{"type":"object","$ref":"#/components/schemas/SerializedDomainSocialAccount"},"youtube":{"type":"object","$ref":"#/components/schemas/SerializedDomainSocialAccount"}}},"referralCode":{"type":"string","example":"d83b1155f85f4fc"},"isListedForSale":{"type":"boolean","description":"Indicates if the domain is listed for sale on the secondary marketplace","example":true},"display":{"type":"object","$ref":"#/components/schemas/SerializedDisplayAttributes"}}},"SerializedAttachmentResponse":{"type":"object","properties":{"url":{"type":"string","description":"Public URL to access the attachment","example":"https://path/to/attachment"}}},"SerializedSaleDetails":{"type":"object","properties":{"primary":{"type":"object","properties":{"type":{"type":"string","description":"Describes the type of mint (e.g. purchase or distribution)","example":"purchase"},"date":{"type":"string","description":"Transaction date of initial domain purchase","example":"2024-01-03T08:37:00.000Z"},"cost":{"type":"number","description":"Cost of the domain in USD","example":25},"payment":{"type":"object","properties":{"collected":{"type":"number","description":"Value of payment collected in USD equivalent (e.g. credit card, crypto, etc)","example":20},"promoCredits":{"type":"number","description":"Amount of Unstoppable Domains promo credits used for domain purchase","example":5},"method":{"type":"string","description":"Identifies form of payment","example":"stripe"}}}}},"secondary":{"type":"array","items":{"type":"object","$ref":"#/components/schemas/SerializedSecondarySale"}}}},"SerializedPortfolioSummary":{"type":"object","properties":{"wallet":{"type":"object","properties":{"address":{"type":"string","description":"Wallet address associated with portfolio","example":10},"primaryDomain":{"type":"string","description":"Primary domain associated with wallet, if any","example":"primary.x"},"domainCount":{"type":"number","description":"Number of domains contained in this wallet","example":5}}},"account":{"type":"object","properties":{"domainCount":{"type":"number","description":"Number of domains owned by Unstoppable Domains account","example":10},"value":{"type":"string","description":"Formatted USD value of the account portfolio based on sales price","example":100},"valueAmt":{"type":"number","description":"Total USD value (in cents) of the account portfolio based on sales price","example":100}}}}},"SerializedSecondarySale":{"type":"object","properties":{"date":{"type":"string","description":"Transaction date of secondary activity","example":"2024-01-03T08:37:00.000Z"},"txHash":{"type":"string","description":"Transaction hash related to secondary sale of the domain","example":4660},"marketPlace":{"type":"string","description":"Marketplace location of the secondary sale","example":"Magic Eden"},"payment":{"type":"object","properties":{"symbol":{"type":"string","description":"Currency used for purchase","example":"ETH"},"valueUsd":{"type":"number","description":"Purchase amount in USD","example":100},"valueNative":{"type":"number","description":"Purchase amount in native currency","example":0.1}}}}},"SerializedPublicDomainProfile":{"type":"object","properties":{"profile":{"type":"object","$ref":"#/components/schemas/SerializedDomainProfileAttributes"},"social":{"type":"object","$ref":"#/components/schemas/SerializedSocialAttributes"},"humanityCheck":{"type":"object","properties":{"verified":{"type":"boolean","description":"Set to true if humanity check verification is successful","example":true}}},"cryptoVerifications":{"type":"array","description":"List of blockchain address verification records attached to the domain","items":{"$ref":"#/components/schemas/SerializedDomainCryptoVerification"}},"records":{"type":"object","properties":{"onChainRecordKey":{"description":"On chain record key/value pair","example":"onChainRecordValue"}}},"metadata":{"type":"object","properties":{"metadataKey":{"description":"Metadata key/value pair","example":"metadataValue"}}},"walletBalances":{"type":"object","$ref":"#/components/schemas/SerializedWalletBalance"},"market":{"type":"object","$ref":"#/components/schemas/SerializedSaleDetails"},"portfolio":{"type":"object","$ref":"#/components/schemas/SerializedPortfolioSummary"},"socialAccounts":{"type":"object","properties":{"discord":{"type":"object","$ref":"#/components/schemas/SerializedDomainSocialAccount"},"reddit":{"type":"object","$ref":"#/components/schemas/SerializedDomainSocialAccount"},"twitter":{"type":"object","$ref":"#/components/schemas/SerializedDomainSocialAccount"},"telegram":{"type":"object","$ref":"#/components/schemas/SerializedDomainSocialAccount"},"lens":{"type":"object","$ref":"#/components/schemas/SerializedDomainSocialAccount"},"youtube":{"type":"object","$ref":"#/components/schemas/SerializedDomainSocialAccount"}}},"referralCode":{"type":"string","description":"Referral code of domain owner","example":"d83b1155f85f4fc"},"isListedForSale":{"type":"boolean","description":"Indicates if the domain is listed for sale on the secondary marketplace","example":true},"display":{"type":"object","$ref":"#/components/schemas/SerializedDisplayAttributes"}}},"SerializedDomainSocialAccount":{"type":"object","properties":{"location":{"type":"string","description":"Name of the social handle","example":"mysocialhandle"},"verified":{"type":"boolean","description":"Indicates if the user has verified the account"},"public":{"type":"boolean","description":"Indicates if the user allows public visibility of the account"}}},"SerializedDomainMessageRule":{"type":"object","properties":{"id":{"type":"number","description":"ID representing the rule"},"type":{"type":"string","description":"The type of rule","example":"ALLOW or BLOCK"},"rule":{"type":"string","description":"The rule expression","example":"Email matching rule with wildcards"},"name":{"type":"string","description":"A descriptive name of the rule","example":"My first rule"}}},"SerializedDomainCryptoVerification":{"type":"object","properties":{"symbol":{"type":"string","description":"The ticker symbol associated with the blockchain","example":"ETH, MATIC, SOL, ADA, etc"},"type":{"type":"string","description":"Type of verification record (hybrid, owner)","example":"hybrid"},"address":{"type":"string","description":"Wallet address that has been verified","example":"8DyNeQYMWY6NLpPN7S1nTcDy2WXLnm5rzrtdWA2H2t6Y"},"plaintextMessage":{"type":"string","description":"Message that must be signed by the domain owner with the private key of the verified blockchain address"},"signedMessage":{"type":"string","description":"Signature resulting from signing plaintextMessage, and can be verified as authentic using public key (address)"}}},"SerializedWalletBalance":{"type":"object","properties":{"firstTx":{"type":"string","description":"The date of the first transaction in the wallet","example":"2023-05-08T20:04:47.000Z"},"lastTx":{"type":"string","description":"The date of the most recent transaction in the wallet","example":"2023-09-06T13:28:47.000Z"},"symbol":{"type":"string","description":"The symbol associated with the blockchain","example":"MATIC"},"address":{"type":"string","description":"Blockchain address for the wallet","example":1.1706481464129065e+48},"type":{"type":"string","description":"Type of balance","example":"native"},"name":{"type":"string","description":"Human readable name associated with the token","example":"Polygon"},"logoUrl":{"type":"string","description":"A URL to a logo associated with the token","example":"http://host.io/path/to/logo"},"balance":{"type":"string","description":"A formatted string representing the wallet balance","example":10},"tokens":{"type":"array","items":{"$ref":"#/components/schemas/SerializedWalletToken"}},"nfts":{"type":"array","items":{"$ref":"#/components/schemas/SerializedWalletNftCollection"}},"txns":{"type":"object","$ref":"#/components/schemas/SerializedTxns"},"totalValueUsd":{"type":"number","description":"Formatted aggregated market value of the wallet","example":200},"totalValueUsdAmd":{"type":"number","description":"Aggregated market value of the wallet","example":200},"walletType":{"type":"string","description":"Indicates the type of wallet associated with this address","example":"external"},"value":{"type":"object","properties":{"marketUsd":{"type":"string","description":"Formatted market value of the token in USD","example":"$2534.12"},"walletUsd":{"type":"string","description":"Formatted market value of the wallet in USD","example":"$100"},"walletUsdAmt":{"type":"number","description":"Market value of the wallet in USD","example":100}}}}},"SerializedTxns":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/SerializedTx"}},"cursor":{"type":"string","description":"Pointer to next page of paginated data","example":123}}},"SerializedRecommendation":{"type":"object","properties":{"address":{"type":"string","description":"Wallet address for the recommended account","example":291},"domain":{"type":"string","description":"Domain name associated with the recommended account","example":"matt.crypto"},"imagePath":{"type":"string","description":"URL to the domain profile picture","example":"https://ipfs.io/ipfs/path/to/pfp"},"imageType":{"type":"string","description":"Defines the type of image represented by the URL - default, onChain, offChain","example":"onChain"},"reasons":{"type":"array","items":{"$ref":"#/components/schemas/SerializedRecommendationReason"}},"score":{"type":"number","description":"Score to represent the recommendation ranking","example":75},"xmtpEnabled":{"type":"boolean","description":"Indicates whether the address supports XMTP","example":true}}},"SerializedRecommendationReason":{"type":"object","properties":{"id":{"type":"string","description":"ID for the reason","example":"poap"},"description":{"type":"string","description":"Description associated with the reason","example":"Holds the same POAP"}}},"SerializedTx":{"type":"object","properties":{"hash":{"type":"string","description":"Transaction hash for the transaction","example":123},"block":{"type":"string","description":"Block ID","example":123},"value":{"type":"number","description":"Native value of the transaction","example":10},"gas":{"type":"number","description":"Gas consumed by the transaction","example":1},"method":{"type":"string","description":"Human readable label for the transaction (if available)","example":"Transfer"},"link":{"type":"string","description":"Link to blockchain scanner","example":"https://path/to/scanner"},"success":{"type":"boolean","description":"Indicates transaction result was successful","example":true},"type":{"type":"string","description":"Type of transaction record (native or NFT)","example":"native"},"imageUrl":{"type":"string","description":"Preview URL associated with this transaction (if available)","example":"https://path/to/image"},"symbol":{"type":"string","description":"Ticker symbol or other identifier associated with the transaction","example":"ETH"},"description":{"type":"string","description":"Human readable description of the transaction","example":"Transfer of 10 ETH to address 0x123"},"from":{"type":"object","properties":{"address":{"type":"string","description":"source address for transaction","example":"address1"},"label":{"type":"string","description":"human readable label for address (if available)","example":"label1"},"link":{"type":"string","description":"Link to blockchain scanner","example":"https://path/to/scanner"}}},"to":{"type":"object","properties":{"address":{"type":"string","description":"source address for transaction","example":"address1"},"label":{"type":"string","description":"human readable label for address (if available)","example":"label1"},"link":{"type":"string","description":"Link to blockchain scanner","example":"https://path/to/scanner"}}}}},"SerializedWalletNftCollection":{"type":"object","properties":{"category":{"type":"string","description":"Type of collection","example":"art"},"collectionId":{"type":"string","description":"The ID of the collection, usually a contract address","example":4660},"collectionImageUrl":{"type":"string","description":"The NFT collection image URL (if available)","example":"https://path/to/collection/image"},"contractAddresses":{"type":"array","items":{"type":"string","description":"Contract address for the collection","example":4660}},"description":{"type":"string","description":"Description of the collection","example":"Collection description"},"floorPrice":{"type":"array","items":{"$ref":"#/components/schemas/SerializedFloorPrice"}},"latestAcquiredDate":{"type":"string","description":"Date of most recent collection NFT acquired by this owner","example":"native"},"name":{"type":"string","description":"Collection name","example":"Unstoppable Domains"},"nftIds":{"type":"array","items":{"type":"string","description":"Collection NFT token ID held by owner","example":"0x1234/1"}},"ownedCount":{"type":"number","description":"Number of NFTs in the collection held by owner","example":10},"totalOwners":{"type":"number","description":"Total number of unique owner addresses for this collection","example":10},"totalSupply":{"type":"number","description":"Total number of NFTs in the collection","example":200},"totalValueUsd":{"type":"string","description":"Formatted USD floor price value of the collection NFTs held by this owner","example":"$50.00"},"totalValueUsdAmt":{"type":"number","description":"Floor USD price value of the collection NFTs held by this owner","example":50}}},"SerializedFloorPrice":{"type":"object","properties":{"marketPlaceName":{"type":"string","description":"Marketplace name","example":"OpenSea"},"marketPctChange24Hr":{"type":"number","description":"Percent change over the past 24 hours","example":-1.74},"history":{"type":"array","items":{"$ref":"#/components/schemas/SerializedPriceHistory"}},"value":{"type":"number","description":"Value in native currency","example":"$25.00"},"valueUsd":{"type":"string","description":"Formatted floor UDS price of the NFT collection","example":"$25.00"},"valueUsdAmt":{"type":"number","description":"Floor USD price of the NFT collection","example":25}}},"SerializedPriceHistory":{"type":"object","properties":{"timestamp":{"type":"string","description":"Time associated with the floor price history value","example":"2024-02-14T13:00:00.000Z"},"value":{"type":"number","description":"Value in native currency","example":123}}},"SerializedWalletToken":{"type":"object","properties":{"symbol":{"type":"string","description":"The symbol associated with the blockchain","example":"MATIC"},"address":{"type":"string","description":"Blockchain address associated with the wallet (for native value) or smart contract (for token values)","example":1.1706481464129065e+48},"type":{"type":"string","description":"Type of token","example":"erc20"},"name":{"type":"string","description":"Human readable name associated with the token","example":"Polygon"},"logoUrl":{"type":"string","description":"A URL to a logo associated with the token","example":"http://host.io/path/to/logo"},"balance":{"type":"string","description":"A formatted string representing the wallet balance","example":10},"balanceAmt":{"type":"number","description":"A number representing the wallet balance","example":10},"value":{"type":"object","properties":{"marketUsd":{"type":"string","description":"Formatted market value of the token in USD","example":"$2534.12"},"marketUsdAmt":{"type":"number","description":"Market value of the token in USD","example":"$2534.12"},"marketPctChange24Hr":{"type":"number","description":"Percent change over the past 24 hours","example":-1.74},"history":{"type":"array","items":{"$ref":"#/components/schemas/SerializedPriceHistory"}},"walletUsd":{"type":"string","description":"Formatted market value of the wallet in USD","example":"$100"},"walletUsdAmt":{"type":"number","description":"Market value of the wallet in USD","example":100}}}}},"SerializedRequestMessage":{"type":"object","properties":{"message":{"type":"string","description":"The message that must be signed by the domain owner's private key to authenticate a subsequent request"},"headers":{"type":"object","properties":{"x-auth-domain":{"type":"string","description":"The domain that must be included in subsequent request header","example":"mydomain.tld"},"x-auth-expires":{"type":"string","description":"Expiration time that must be included in subsequent request header","example":"Milliseconds since epoch"}}}}},"SerializedAddressVerificationMessage":{"type":"object","properties":{"address":{"type":"string","description":"The address being verified"},"message":{"type":"string","description":"The message that must be signed by the domain owner's private key to verify the blockchain address"},"symbol":{"type":"string","description":"The blockchain associated with the address"}}},"SerializedDomainProfileUserAttributes":{"type":"object","properties":{"id":{"type":"number","description":"ID representing the domain profile"},"domainId":{"type":"number","description":"ID representing the domain"},"privateEmail":{"type":"string","description":"Private email only visible to domain owner"}}},"SerializedDomainProfileAttributes":{"type":"object","properties":{"displayName":{"type":"string","description":"Name of domain owner","example":"John Doe"},"description":{"type":"string","description":"Short biography about the domain","example":"This is my domain"},"location":{"type":"string","description":"Location","example":"Metaverse"},"imagePath":{"type":"string","description":"URL to the domain profile picture","example":"https://ipfs.io/ipfs/path/to/pfp"},"imageType":{"type":"string","description":"Defines the type of image represented by the URL - default, onChain, offChain","example":"onChain"},"coverPath":{"type":"string","description":"URL to the domain banner image","example":"https://ipfs.io/ipfs/path/to/banner"},"web2Url":{"type":"string","description":"Website URL","example":"https://www.mywebsite.com"},"phoneNumber":{"type":"string","description":"Phone number of domain owner","example":"555-555-5555"},"publicDomainSellerEmail":{"type":"string","description":"Public domain seller email visible to anyone","example":"seller@email.com"},"tokenGalleryEnabled":{"type":"boolean","description":"Indicates whether token gallery feature is enabled","example":true},"showDomainSuggestion":{"type":"boolean","description":"Indicates whether domain suggestion section is visible or not","example":true},"showFeaturedCommunity":{"type":"boolean","description":"Indicates whether the featured community section is visible or not","example":true},"showFeaturedPartner":{"type":"boolean","description":"Indicates whether the featured partner section is visible or not","example":true}}},"SerializedDisplayAttributes":{"type":"object","properties":{"hidden":{"type":"boolean","description":"Indicates whether the UD.me profile should be hidden"},"mode":{"type":"string","description":"Indicates the mode of the UD.me profile","example":"web3"}}},"SerializedSocialAttributes":{"type":"object","properties":{"followerCount":{"type":"number","description":"Number of followers domain has","example":100},"followingCount":{"type":"number","description":"Number of domains the domain is following","example":50}}},"SerializedDomainProfileVisibility":{"type":"object","properties":{"displayNamePublic":{"type":"boolean"},"descriptionPublic":{"type":"boolean"},"locationPublic":{"type":"boolean"},"imagePathPublic":{"type":"boolean"},"coverPathPublic":{"type":"boolean"},"web2UrlPublic":{"type":"boolean"},"phoneNumberPublic":{"type":"boolean"}}},"SerializedDomainProfileImageData":{"type":"object","properties":{"base64":{"type":"string","description":"Base64 encoded string of the image data","example":"aGVsbG8gd29ybGQK"},"type":{"type":"string","description":"MIME type of the base64 encoded file (image/jpeg or image/png)","example":"image/png"}}},"SerializedDomainProfilePost":{"type":"object","properties":{"displayName":{"type":"string","description":"Name of domain owner","example":"John Doe"},"displayNamePublic":{"type":"boolean"},"description":{"type":"string","description":"Short biography about the domain","example":"This is my domain"},"descriptionPublic":{"type":"boolean"},"location":{"type":"string","description":"Location","example":"Metaverse"},"locationPublic":{"type":"boolean"},"imagePath":{"type":"string","description":"URL to the domain profile picture","example":"https://ipfs.io/ipfs/path/to/pfp"},"imagePathPublic":{"type":"boolean"},"coverPath":{"type":"string","description":"URL to the domain banner image","example":"https://ipfs.io/ipfs/path/to/banner"},"coverPathPublic":{"type":"boolean"},"web2Url":{"type":"string","description":"Website URL","example":"https://www.mywebsite.com"},"publicDomainSellerEmail":{"type":"string","description":"Public domain seller email visible to anyone","example":"seller@gmail.com"},"web2UrlPublic":{"type":"boolean"},"showDomainSuggestion":{"type":"boolean"},"showFeaturedCommunity":{"type":"boolean"},"showFeaturedPartner":{"type":"boolean"},"phoneNumber":{"type":"string","description":"Phone number of domain owner","example":"555-555-5555"},"phoneNumberPublic":{"type":"boolean"},"privateEmail":{"type":"string","description":"Personal email address to contact the domain owner","example":"me@email.com"},"messagingDisabled":{"type":"boolean","description":"Indicates if messaging feature should be disabled"},"thirdPartyMessagingEnabled":{"type":"boolean","description":"Indicates if third party messaging should be enabled"},"thirdPartyMessagingConfigType":{"type":"string","description":"Type of third part messaging","example":"Skiff"},"data":{"type":"object","properties":{"image":{"type":"object","$ref":"#/components/schemas/SerializedDomainProfileImageData"},"cover":{"type":"object","$ref":"#/components/schemas/SerializedDomainProfileImageData"}}},"socialAccounts":{"type":"object","properties":{"discord":{"type":"string","description":"Name of the discord handle","example":"discorduser"},"reddit":{"type":"string","description":"Name of the reddit handle","example":"reddituser"},"twitter":{"type":"string","description":"Name of the twitter handle","example":"twitteruser"},"telegram":{"type":"string","description":"Name of the telegram handle","example":"telegramuser"},"youtube":{"type":"string","description":"Name of the youtube handle","example":"youtubeuser"}}}}},"SerializedDomainAttachmentPost":{"type":"object","properties":{"attachment":{"type":"object","$ref":"#/components/schemas/SerializedDomainProfileImageData"}}},"SerializedBulkDomainProfilePost":{"type":"object","properties":{"domains":{"type":"array","items":{"type":"string","description":"Name of a domain to apply profile changes","example":"bulk.crypto"}},"profile":{"type":"object","$ref":"#/components/schemas/SerializedDomainProfilePost"}}},"SerializedBulkDomainResponse":{"type":"object","properties":{"success":{"type":"boolean","description":"Indicates whether bulk update was successful","example":true},"domains":{"type":"array","items":{"type":"string","description":"List of updated domains","example":"updated.crypto"}}}},"SerializedAddressVerificationPost":{"type":"object","properties":{"message":{"type":"string","description":"A custom message that must be signed with the private key of the address","example":"Unique message to sign"},"signature":{"type":"string","description":"Signature generated by signing the message with the private key","example":"cd0dadab45baf9a06ce1279d1342ecc3f44845af"}}}}},"tags":[]}