LogoLogo
  • 🚀DeSo Vision
  • 🪙DeSo Tokenomics
    • No Equity, Just Coins and Code
    • Current DESO Supply
    • Initial DESO Distribution
    • DESO Sinks
    • The BMF: Burn-Maximizing Fee Mechanism
    • Designed for the End-Game
  • 🏛️DeSo Governance
  • ⭐DeSo Tutorial (Build Apps)
  • 🖥️Node Architecture Overview
    • Setup a Node & Frontend Locally
    • Making Your First Changes
  • 📅DeSo Roadmap
  • 🔍DeSo Block Explorer
  • 💸DeSo Wallet
  • 💬DeSo Chat Protocol
  • 👽Openfund
  • 👀Focus
  • 🛠️DeSo Tech Stack
  • 🌐DeSo Applications
  • DeSo Blockchain
    • 1️⃣Bare Metal
    • 2️⃣Scaling Roadmap
    • 3️⃣Content Moderation
    • 4️⃣Infinite-State
    • 5️⃣On-Chain Data
    • 6️⃣Smart Services
    • 7️⃣User Security
  • DeSo Features
    • 1️⃣Associations
    • 2️⃣Creator Coins
    • 3️⃣Feeds & Moderation
    • 4️⃣Social NFTs
    • 5️⃣Social Tipping
  • DeSo Identity
    • 1️⃣Identity: Overview
      • Core Concepts
      • Mobile Integration
    • 2️⃣Identity: iFrame API
      • Overview
      • Endpoints
    • 3️⃣Identity: Window API
      • Overview
      • Endpoints
  • DESO FRONTEND
    • 1️⃣Frontend: Get Started
    • 2️⃣Frontend: React Example
  • DESO BACKEND
    • 1️⃣Backend: Config
      • Onboarding
      • Phone Number Verification
      • Global State
      • Admins
      • Web Security
      • Media
        • Images
        • Videos
      • Hot Feed
      • Selling $DESO
        • Wyre - Buy with USD
        • Buy with BTC
        • Buy with ETH
      • Analytics
      • Emails
      • Supply Monitoring
    • 2️⃣Construct: API
      • Social Transactions API
      • NFT Transactions API
      • Financial Transactions API
      • Derived Keys Transaction API
      • DeSo Tokens Transactions API
      • Associations Transactions API
      • Access Groups API
    • 3️⃣Data: API
      • Admin Endpoints
      • Associations Endpoints
      • DeSo Tokens Endpoints
      • Media Endpoints
      • Miner Endpoints
      • Notification Endpoints
      • NFT Endpoints
      • Social Endpoints
      • Referral Endpoints
      • Tutorial Endpoints
      • Meta Data Endpoints
      • Transaction Spending Limits Endpoints
      • User Endpoints
      • Post Endpoints
      • Messages Endpoints
      • Access Group Endpoints
    • 4️⃣Transactions: API
  • DeSo Exchange Listings
    • 1️⃣Exchange Listing: API
  • DeSo Nodes
    • 2️⃣Node: Setup
    • 3️⃣Node: Staying Up-To-Date
    • 4️⃣Node: FAQ
  • DESO VALIDATORS
    • 1️⃣Run a Validator
  • Openfund
    • What is Openfund?
    • Openfund Tokenomics
    • Openfund Governance
    • Algorithmic Trading
      • The DeSo Python SDK
    • The DeSo Python SDK
      • Getting Help from the Community
      • Creating DeSo Testnet Accounts
      • Debugging Tips and Code Walkthrough
      • Write Blockchain Bots with AI
      • Market-Making Bots
      • Social AI Agents
      • AI-Generating Your Code
    • How Do the Advanced AMMs Work?
  • Focus
    • The Crypto Social Network
    • Next-Generation Token Mechanics
      • Launching Your Token
      • How the Order-Book AMMs Work
    • Crypto-Native Monetization
    • Focus Tokenomics
    • The Social Airdrop
    • Decentralizing Social Media
  • Contact And Media
    • ☀️DeSo Website
    • 📑DeSo Blog
    • 💻DeSo Github
    • 💎DeSo Diamond
    • 🐦DeSo Twitter
    • 📺DeSo YouTube
    • 📬Contact US
    • ⚠️Reporting an Account or Post
  • 中文
    • 什么是DeSo? (What is DeSo?)
    • 愿景 (The Vision)
Powered by GitBook
On this page
  • Get Notifications
  • Get Unread Notification Count
  • Set Notification Metadata

Was this helpful?

  1. DESO BACKEND
  2. Data: API

Notification Endpoints

Description of endpoints used to get notification data on the DeSo blockchain

PreviousMiner EndpointsNextNFT Endpoints

Last updated 2 years ago

Was this helpful?

Please make sure you've read Data: API so you are familiar with the following types referenced in this documentation:

Get Notifications

POST /api/v0/get-notifications

Get user notifications.

Endpoint implementation in .

Example usages in frontend: - Make request to - Use GetNotifications to

Request Body

Name
Type
Description

PublicKeyBase58Check*

String

user public key

FetchStartIndex

int64

Index of notification at which to start paginated lookup. Can set to -1

NumToFetch*

int64

Number of notifications to fetch

FilteredOutNotificationCategories

map[string]bool

map of category name to boolean indicating whether or not to include this category of transaction types. if not provided, no filtering occurs. Category names and transaction types included in category: - diamond: BasicTransfer or CreatorCoinTransfer transactions that have appropriate diamond extra data. - transfer: BasicTransfer or CreatorCoinTransfer transactions that do not have diamond extra data OR CreatorCoin (buy or sell) transactions. - post: Post transactions - follow: Follow transactions - like: Like transactions - nft: NFTBid, AcceptNFTBid, NFTTransfer , CreateNFT, or UpdateNFT transactions

- dao: DAOCoin, DAOCoinTransfer, or DAOCoinLimitOrder transactions

{
  "LastSeenIndex": 100, // Index of the last notification the user has seen
  "Notifications": [
    {
      "Index": 99, // Index of this notification in the list of all notifications for the given public key
      "Metadata": { // Metadata that describe the transaction
        "AffectedPublicKeys": [{
          "Metadata": "BasicTransferOutput", // For a list of all AffectedPublicKey Metadata values - see over here...,
          "PublicKeyBase58Check": "BC1YLhtBTFXAsKZgoaoYNW8mWAJWdfQjycheAeYjaX46azVrnZfJ94s", 
        }],
        "BlockHashHex": "0000000000006a8e90b36c0ac36dbe9bc9f97252ab5418abc4d0e2bb2e3d923f", // Hex of the block hash
        "TransactorPublicKeyBase58Check": "BC1YLfhPNqmoAUSDwoQBJrAZRbW4XFA7db89Awpr7GJdN9pWcBZVweQ", // Public key of the user who created the transaction that generated this notification
        "TxnIndexInBlock": 850, // Index of the transaction in the block for which this notification was generated
        "TxnOutputs": [
          {
            "PublicKey": "AgNw/nCxUVblm/dDy0qGleAUqZfdIdiuOBtALN4TdhII", // Public key bytes - this is not particularly useful.
            "AmountNanos": 792289, // Amount of Deso in nanos in this transaction output.
          }
        ],
        "BasicTransferTxindexMetadata": { // Describes basic transfer in transaction. Appears for all notifications
          "TotalInputNanos": 100, // Total DeSo nanos in the inputs of this transaction
          "TotalOutputNanos": 90, // Total Deso nanos in the outputs of this transaction
          "FeeNanos": 20, // Total fees of this transaction
          "UtxoOpsDump": "",
          "UtxoOps": <UtxoOperation>, // UTXO operation to be documented
          "DiamondLevel": 1, // Number of diamonds given by this basic transfer
          "PostHashHex": "43b943880ff21f67b92941553233b9d0e6bcf7c56e9a533416873d4d0798d290" // Hex of Post hash for which diamonds were given by this transaction
        },
        "BitcoinExchangeTxindexMetadata": { // Describes bitcoin exchange transaction. Only appears for Bitcoin Exchange transactions
          "BitcoinSpendAddress": "1B9MXT8sME3Z7kNLTfRDqeKdcUKiF1qhPr", // Address from which BTC was burned
          "SatoshisBurned": 100, // Total Satoshis burned by the transactor
          "NanosCreated": 10, // Total nanos created by this transaction. Note: the DeSo supply is now fixed.
          "TotalNanosPurchasedBefore": 10000, // Total nanos minted by the DeSo protocol before this transaction. Note: the DeSo supply is now fixed.
          "TotalNanosPurchasedAfter": 1010, // Total nanos minted by the DeSo protocol after this transaction. Note: the DeSo supply is now fixed. 
          "BitcoinTxnHash": "833ec95b45707667d29d9cecfdc8dd86006ab0fc8214f395e206437902a9cc9f" // Hash of BTC transaction that exchanged BTC for DeSo
        },
        "CreatorCoinTxindexMetadata": { // Describes creator coin buy/sell transaction. Only appears for Creator coin transactions.
          "OperationType": "buy", // Valid values are "buy" and "sell". "buy" means this transaction was a creator coin purchase. "sell" means this transaction was a creator coin sale.
          "DeSoToSellNanos": 1000, // The amount of DeSo in nanos spent to purchase creator coins. This is only populated if OperationType is "buy"
          "CreatorCoinToSellNanos": 0, // The amount of creator coin in nanos sold. This is only populated if the OperationType is "sell"
          "DeSoToAddNanos": 0, // Note: this field is not currently used.
          "DESOLockedNanosDiff": 1000, // diff in the amount of DeSo locked in a creator coin as a result of this transaction
        },
        "CreatorCoinTransferTxindexMetadata": { // Describes creator coin transfer transaction. Only appears for Creator coin transfer transactions
          "CreatorUsername": "LazyNina", // User of the creator whose coins are transferred in this transaction
          "CreatorCoinToTransferNanos": 1000, // Amount of creator coins of CreatorUsername that were transferred in this transaction
          "DiamondLevel": 2, // Number of diamonds given by this creator coin transfer. Note: diamonds are no longer given in Creator Coins
          "PostHashHex": "43b943880ff21f67b92941553233b9d0e6bcf7c56e9a533416873d4d0798d290", // Hex of Post hash for which diamonds were given by this transaction. Note: diamonds are no longer given in creator coins.
        },
        "UpdateProfileTxindexMetadata": { // Describe update profile transaction. Only appears for Update profile transactions.
          "ProfilePublicKeyBase58Check": "BC1YLhtBTFXAsKZgoaoYNW8mWAJWdfQjycheAeYjaX46azVrnZfJ94s", // Public key of the user whose profile was updated
          "NewUsername": "LazyNina", // New username in the user's profile
          "NewDescription": "reading the paper, going to movies", //  New description in the user's profile
          "NewProfilePic": "", // Base64 encoded profile picture in the user's profile
          "NewCreatorBasisPoints": 1000, // Founder reward for the user in basis points.
          "NewStakeMultipleBasisPoints": 0, // Deprecated
          "IsHidden": false, // Whether this profile is hidden or not
        },
        "SubmitPostTxindexMetadata": { // Describes submit post transaction. Only appears for submit post transactions.
          "PostHashBeingModifiedHex": "43b943880ff21f67b92941553233b9d0e6bcf7c56e9a533416873d4d0798d290", // Hex of Post hash that is created by or modified by this transaction
          "ParentPostHashHex": "", // Hex of Post hash that is the parent of PostHashBeingModifiedHex if there is one.
        },
        "LikeTxindexMetadata": { // Describes like transaction. Only appears for like transactions.
          "IsUnlike": false, // If true, this transaction remove an existing like on a post. If false, this transaction add a like on a post.
          "PostHashHex": "43b943880ff21f67b92941553233b9d0e6bcf7c56e9a533416873d4d0798d290" // Hex of Post hash that is liked (or unliked) by this transaction.
        },
        "FollowTxindexMetadata": { // Describes follow transaction. Only appears for follow transactions.
          "IsUnfollow": false, // If true, this transaction removes a creator from a user's following list. If false, this transaction add a creator to a user's following list.
        },
        "PrivateMessageTxindexMetadata": { // Describes private message transaction. Only appears for private message transactions.
          "TimestampNanos": 1000, // Timestamp of private message
        },
        "SwapidentityTxindexMetadata": { // Describes swap identity transaction. Only appears for swap identity transactions.
          "FromPublicKeyBase58Check": "BC1YLhtBTFXAsKZgoaoYNW8mWAJWdfQjycheAeYjaX46azVrnZfJ94s", // Public key of the "from" user being swapped
          "ToPublicKeyBase58Check": "BC1YLgU67opDhT9bTPsqvue9QmyJLDHRZrSj77cF3P4yYDndmad9Wmx", // Public key of the "to" user being swapped
          
          "FromDeSoLockedNanos": 1000, // DeSoLocked in from's creator coin after this transaction. Note this field is only needed for Rosetta
          "ToDeSoLockedNanos": 2000, // DeSoLocked in to's creator coin after this transaction. Note this field is only needed for Rosetta
        },
        "NFTBidTxindexMetadata": { // Describes NFT bid transaction. Only appears for NFT bid transactions.
          "NFTPostHashHex": "43b943880ff21f67b92941553233b9d0e6bcf7c56e9a533416873d4d0798d290", // Hex of Post hash that is being bid on in this transaction
          "SerialNumber": 10, // Serial number on which this bid is submitted
          "BidAmountNanos": 1000, // Amount of DeSo (in nanos) bid on the NFT in this transaction.
          "IsBuyNowBid": true, // If true, this bid was a bid on a Buy Now NFT that exceeded the Buy Now Price, resulting in a purchase of the NFT
          "CreatorCoinRoyaltyNanos": 100, // Amount of royalties going to the NFT creator's creator coin in this transaction. 
          "CreatorRoyaltyNanos": 200, // Amount of royalties going to the NFT creator's wallet in the form of DESO in this transaction.
          "CreatorPublicKeyBase58Check": "BC1YLhtBTFXAsKZgoaoYNW8mWAJWdfQjycheAeYjaX46azVrnZfJ94s", // Public key of the creator of the NFT
          "AdditionalCoinRoyaltiesMap": { // Map of public key to DESO nanos representing the royalties to the public key's creator coin
            "tBCKW665XZnvVZcCfcEmyeecSZGKAdaxwV2SH9UFab6PpSRikg4EJ2": 50,
          },
          "AdditionalDESORoyaltiesMap": { // Map of public key to DESO nanos representing the royalties paid to public key in the form of DESO
            "tBCKW665XZnvVZcCfcEmyeecSZGKAdaxwV2SH9UFab6PpSRikg4EJ2": 25,
          },
          "OwnerPublicKeyBase58Check": "tBCKVERmG9nZpHTk2AVPqknWc1Mw9HHAnqrTpW1RnXpXMQ4PsQgnmV", // Public key of the owner at the time of the bid
        },
        "AcceptNFTBidTxindexMetadata": { // Describe Accept NFT bid transactions. Only appears for accept NFT bid transactions.
          "NFTPostHashHex": "43b943880ff21f67b92941553233b9d0e6bcf7c56e9a533416873d4d0798d290", // Hex of Post hash that is  sold in this transaction
          "SerialNumber": 10, // Serial number that is sold in this transaction 
          "BidAmountNanos": 1000, // Amount of DeSo (in nanos) of the bid that was accepted in this transaction.
          "CreatorCoinRoyaltyNanos": 100, // Amount of royalties going to the NFT creator's creator coin in this transaction. 
          "CreatorRoyaltyNanos": 200, // Amount of royalties going to the NFT creator's wallet in the form of DESO in this transaction.
          "CreatorPublicKeyBase58Check": "BC1YLhtBTFXAsKZgoaoYNW8mWAJWdfQjycheAeYjaX46azVrnZfJ94s", // Public key of the creator of the NFT
          "AdditionalCoinRoyaltiesMap": { // Map of public key to DESO nanos representing the royalties to the public key's creator coin
            "tBCKW665XZnvVZcCfcEmyeecSZGKAdaxwV2SH9UFab6PpSRikg4EJ2": 50,
          },
          "AdditionalDESORoyaltiesMap": { // Map of public key to DESO nanos representing the royalties paid to public key in the form of DESO
            "tBCKW665XZnvVZcCfcEmyeecSZGKAdaxwV2SH9UFab6PpSRikg4EJ2": 25,
          }
        },
        "UpdateNFTTxindexMetadata": { // Describes the Update NFT transaction
          "NFTPostHashHex": "3588e0a85e463966e91b0ec429de9b3edd9f5c9fad3c555c60af358e0688c801", // Hex of Post hash for the NFT that is updated in this transaction
          "IsForSale": true, // If true, this NFT has been put on sale
        },
        "CreateNFTTxindexMetadata": { // Describe the Create NFT transaction
          "NFTPostHashHex": "3588e0a85e463966e91b0ec429de9b3edd9f5c9fad3c555c60af358e0688c801", // Hex of Post hsah for the NFT that is being created in this transaction
          "AdditionalCoinRoyaltiesMap": { // Map of public key to basis points for additional coin royalty
            "tBCKW665XZnvVZcCfcEmyeecSZGKAdaxwV2SH9UFab6PpSRikg4EJ2": 100
          },
          "AdditionalDESORoyaltiesMap": { // Map of public key to basis points for additional DESO royalty
            "tBCKVERmG9nZpHTk2AVPqknWc1Mw9HHAnqrTpW1RnXpXMQ4PsQgnmV": 500
         }
        },
        "DAOCoinTxindexMetadata": { // Describes the DAO Coin transaction
          "CreatorUsername": "LazyNina", // Username of DAO creator
          "OperationType": "mint", // String of operation type. Expected values are mint, burn, disable_minting, and update_transfer_restriction_status
          "CoinsToMintNanos": "0x5F5E100", // Hex string representing the number of coins minted in this operation
          "CoinsToBurnNanos": "0x0", // Hex string representing the number of coins burned in this operation
          "TransferRestrictionStatus": "", // String representing the transfer restriction status set in this transaction. Valid values are "Unrestricted", "Profile Owner Only", "DAO Members Only", and "Permanently Unrestricted"
        },
        "DAOCoinTransferTxindexMetadata": {
          "CreatorUsername": "LazyNina", // Username of DAO creator
          "DAOCoinToTransferNanos": "0x5F5E100", // Hex string representing the number of DAO coins transferred in this transaction
        },
      },
      "Txn": null,
      "TxnOutputResponses": [{ // Outputs from the transaction that generated this notification
        "AmountNanos": 1000, // Amount of nanos in this output
        "PublicKeyBase58Check": "BC1YLhtBTFXAsKZgoaoYNW8mWAJWdfQjycheAeYjaX46azVrnZfJ94s", // Public key of the recipient of this output
      }]
    }
  ],
  "PostsByHash": { // Map of post hash hex to PostEntryResponse that can be used to add post data to a notification
    "63d6b65c4b270cc538ca0cbd2bb538b8d30de1dda9b397e25c68581e3e4bc209": <PostEntryResponse>,
    ...
  },
  "ProfilesByPublicKey": { // Map of public key to ProfileEntryResponse that can be used to add user profile data to a notification
    "BC1YLhtBTFXAsKZgoaoYNW8mWAJWdfQjycheAeYjaX46azVrnZfJ94s": <ProfileEntryResponse>,
  }
}

...coming soon! See comments in sample response for descriptions for now.

{
    // Response
}

Get Unread Notification Count

POST /api/v0/get-unread-notifications-count

Gets the number of unread notifications.

Request Body

Name
Type
Description

PublicKeyBase58Check*

String

Public key of the user for whom we want to get the notification count

{
  "NotificationsCount": 2, // Number of unread notifications.
  "LastUnreadNotificationIndex": 31147, // Index of the last read notification.
  "UpdateMetadata": false // If true, the frontend should make a call to /api/v0/set-notification-metadata
}
Name
Type
Description

NotificationsCount

uint64

Number of unread notifications

LastUnreadNotificationIndex

uint64

Index of the last read notification

UpdateMetadata

Boolean

{
    // Response
}

Set Notification Metadata

POST /api/v0/set-notification-metadata

Update the number of unread notifications, the last notification seen index, and the last unread notification index.

Request Body

Name
Type
Description

PublicKeyBase58Check*

String

Public key of the user for whom we are setting notification metadata

LastSeenIndex*

int

The last notification index the user has seen

LastUnreadNotificationIndex*

int

The last notification index that has been scanned

UnreadNotifications*

int

The total count of unread notifications

JWT*

String

JSON web token authenticating user

No response body

{
    // Response
}

Endpoint implementation in .

Example usages in 's frontend: - Make request to - Use GetUnreadNotificationCount to

if true, the frontend should make a call to to update the state of notifications read

Endpoint implementation in .

Example usages in 's frontend: - Make a request to - Use SetNotificationMetadata

3️⃣
backend
diamondapp.com
Get Unread Notification Count
display an indicator next to notifications representing the number of unread notifications
backend
diamondapp.com
Set Notification Metadata
when loading the first page of notifications
backend
Get Notifications
get the next page of notifications for a user
ProfileEntryResponse
PostEntryResponse
BalanceEntryResponse
NFTEntryResponse
NFTCollectionResponse