Server Information Operations

Event Register

Create, modify or remove an event listener which can report server events via Event Wait. POST only.

Request:

  • requestType is eventRegister

  • event is one of multiple server events from the following list of event names: (optional, default is all possible events)

    • Block.BLOCK_GENERATED

    • Block.BLOCK_POPPED

    • Block.BLOCK_PUSHED

    • Peer.ADD_INBOUND

    • Peer.ADDED_ACTIVE_PEER

    • Peer.BLACKLIST

    • Peer.CHANGED_ACTIVE_PEER

    • Peer.DEACTIVATE

    • Peer.NEW_PEER

    • Peer.REMOVE

    • Peer.REMOVE_INBOUND

    • Peer.UNBLACKLIST

    • Transaction.ADDED_CONFIRMED_TRANSACTIONS

    • Transaction.ADDED_UNCONFIRMED_TRANSACTIONS

    • Transaction.REMOVE_UNCONFIRMED_TRANSACTIONS

  • event is one of multiple server events (optional)

  • add is true to add events to an existing listener (optional, omit if remove is true)

  • remove is true to remove events from an existing listener (optional, omit if add is true)

  • requireBlock is the block ID of a block that must be present in the blockchain during execution (optional)

  • requireLastBlock is the block ID of a block that must be last in the blockchain during execution (optional)

Note: To create a new event listener, omit both add and remove. To remove an existing event listener, set remove to true and omit event; all registered events will be removed, any outstanding Event Wait will be completed and the listener will be deactivated.

Note: An event listener is automatically deactivated whenever all registered events are removed or if Event Wait is not called frequently enough, according to the PRIZM.apiEventTimeout property. The timeout is not precise; the removal process runs every PRIZM.apiEventTimeout / 2 seconds, so that many extra seconds may elapse before removal; the first Event Wait call should be made immediately after registration to avoid deactivation.

Note: Each API user (with a unique address) can create only one event listener. When a new one is created, it will replace an existing one. The maximum number of unique users is controlled by the PRIZM.maxEventUsersproperty.

Response:

  • registered is true if the operation completed successfully

  • lastBlock (S) is the last block ID on the blockchain (applies if requireBlock is provided but not requireLastBlock)

  • requestProcessingTime (N) is the API request processing time (in millisec)

Example: Refer to Event Register example.

Event Wait

Wait for events registered with Event Register. POST only.

Request:

  • requestType is eventWait

  • timeout is the amount of time (in seconds) to wait for an event before the call returns (optional, default and maximum is the PRIZM.apiEventTimeout property)

  • requireBlock is the block ID of a block that must be present in the blockchain during execution (optional)

  • requireLastBlock is the block ID of a block that must be last in the blockchain during execution (optional)

Notes: The call returns immediately if one or more events have occurred since the last call; multiple events are all returned together. If a new call is made before the last one returns, the timeout timer resets to the new value. Event registration expires if wait calls are not made frequently enough, according to the PRIZM.apiEventTimeout property.

Response:

  • events (A) is an array of event objects each of which has the following fields:

    • name (S) is the name of the event (refer to Event Register for the list of event names)

    • ids (A) is an array of identifiers, depending on the type of event:

      • block string identifier (S) for a block event

      • peer network address (S) for a peer event

      • transaction string identifier (S) for a transaction event

  • lastBlock (S) is the last block ID on the blockchain (applies if requireBlock is provided but not requireLastBlock)

  • requestProcessingTime (N) is the API request processing time (in millisec)

Example: Refer to Event Wait example.

Get Blockchain Status

Get the blockchain status.

Request:

  • requestType is getBlockchainStatus

Response:

  • currentMinRollbackHeight (N) is the current minimum rollback height

  • numberOfBlocks (N) is the number of blocks in the blockchain (height + 1)

  • isTestnet (B) is true if the node is connected to testnet, false otherwise

  • includeExpiredPrunable (B) is the value of the PRIZM.includeExpiredPrunable property

  • requestProcessingTime (N) is the API request processing time (in millisec)

  • version (S) is the application version

  • maxRollback (N) is the value of the PRIZM.maxRollback property

  • lastBlock (S) is the last block ID on the blockchain

  • application (S) is application name, typically NRS

  • isScanning (B) is true if the blockchain is being scanned by the application, false otherwise

  • isDownloading (B) is true if a download is in progress, false otherwise; true when a batch of more than 10 blocks at once has been downloaded from a peer, reset to false when an attempt to download more blocks from a peer does not result in any new blocks

  • cumulativeDifficulty (S) is the cumulative difficulty

  • lastBlockchainFeederHeight (N) is the height of the last blockchain of greatest cumulative difficulty obtained from a peer

  • maxPrunableLifetime (N) is the maximum prunable lifetime (in seconds)

  • time (N) is the current timestamp (in seconds since the genesis block)

  • lastBlockchainFeeder (S) is the address or announced address of the peer providing the last blockchain of greatest cumulative difficulty

  • blockchainState (S) Current state of this node's blockchain (UP_TO_DATE or DOWNLOADING)

Example: Refer to Get Blockchain Status example.

Get Constants

Get all defined constants.

Request:

  • requestType is getConstants

Response:

  • maxBlockPayloadLength (N) is the maximum block payload length (in bytes)

  • maxArbitraryMessageLength (N) is the maximum length (in bytes) of an arbitrary message

  • maxPrunableMessageLength (N) is the maximum length (in bytes) of a prunable message

  • maxTaggedDataDataLength (N) is the maximum length (in bytes) of tagged data

  • maxPhasingDuration (N) is the maximum allowed phasing duration in block height

  • epochBeginning (N) is the time in milliseconds when genesis block was created

  • genesisAccountId (S) is the genesis account number

  • genesisBlockId (S) is the genesis block ID

  • transactionTypes (A) is an array of defined transaction types and subtypes (refer to the example below)

  • transactionSubTypes (A) is an array of defined transaction subtypes and subtypes (refer to the example below)

  • peerStates (A) is an array of defined peer states (refer to the example below)

  • currencyTypes (A) is an array of defined currency types (refer to the example below)

  • disabledAPIs (A) is an array of configured disabled apis (refer to the example below)

  • apiTags (A) is an array of defined api tags (refer to the example below)

  • disabledAPITags (A) is an array of configured disabled api tags (refer to the example below)

  • votingModels (A) is an array of defined voting models (refer to the example below)

  • holdingTypes (A) is an array of defined holding types (refer to the example below)

  • minBalanceModels (A) is an array of defined minimum balance models (refer to the example below)

  • shufflingStages (A) is an array of defined shuffling stages (refer to the example below)

  • shufflingParticipantStates (A) is an array of defined shuffling participant states (refer to the example below)

  • hashAlgorithms (A) is an array of defined hash algorithms (refer to the example below)

  • mintingHashAlgorithms (A) is an array of defined minting hash algorithms (refer to the example below)

  • phasingHashAlgorithms (A) is an array of defined phasing hash algorithms (refer to the example below)

  • requestTypes (A) is an array of decined request types (refer to the example below)

Example: Refer to Get Constants example.

Get Plugins

Get a list of all installed plugins on the server.

Request:

  • requestType is getPlugins

Response:

  • plugins (A) is an array of plugin names (S)

  • requestProcessingTime (N) is the API request processing time (in millisec)

Example: Refer to Get Plugins example.

Get State

Get the state of the server node and network.

Request:

  • requestType is getState

  • includeCounts is true if the fields beginning with numberOf... are to be included (optional); password protected like the Debug Operations if true.

Response:

  • numberOfPeers (N) is the number of known peers on the network

  • numberOfGoods (N) is the number of DGS goods in the blockchain

  • numberOfPolls (N) is the number of polls in the blockchain

  • numberOfUnlockedAccounts (N) is the number of unlocked accounts on this node

  • numberOfTransfers (N) is the number of AE transfers in the blockchain

  • includeExpiredPrunable (B) is the value of the PRIZM.includeExpiredPrunable property

  • numberOfOrders (N) is the number of AE orders in the blockchain

  • numberOfTransactions (N) is the number of transactions in the blockchain

  • maxMemory (N) is the maximum amount of memory the node may use (in Bytes)

  • maxRollback (N) is the value of the PRIZM.maxRollback property

  • numberOfOffers (N) is the number of buy currency offers in the blockchain

  • isDownloading (B) is true if a download is in progress, false otherwise; true when a batch of more than 10 blocks at once has been downloaded from a peer, reset to false when an attempt to download more blocks from a peer does not result in any new blocks

  • isScanning (B) is true if this node is scanning the blockchain, false otherwise

  • cumulativeDifficulty (S) is the current cumulative forging difficulty

  • numberOfPrunableMessages (N) is the number of prunable messages in the blockchain

  • freeMemory (N) is the amount of free memory on this node (in Bytes)

  • peerPort (N) is the port used for connecting to peers

  • availableProcessors (N) is the number of processors on this node

  • numberOfAccounts (N) is the number of accounts in the blockchain

  • needsAdminPassword (B) is true if the PRIZM.disableAdminPassword property is false

  • currentMinRollbackHeight (N) is the current minimum rollback height

  • numberOfBlocks (N) is the number of blocks (height + 1) in the blockchain

  • isTestnet (B) is true if the node is connected to testnet, false otherwise

  • numberOfCurrencyTransfers (N) is the number of currency transfers in the blockchain

  • requestProcessingTime (N) is the API request processing time (in millisec)

  • version (S) is the software version on this node

  • lastBlock (S) is the last block address

  • totalMemory (N) is the amount of memory this node is using (in Bytes)

  • application (S) is the name of the software running on this node (typically NRS)

  • numberOfActivePeers (N) is the number of active peers on the network

  • lastBlockchainFeederHeight (N) is the height of the last blockchain feeder

  • maxPrunableLifetime (N) is the maximum prunable lifetime (in seconds)

  • time (N) is the current node time (in seconds since the genesis block)

  • numberOfAskOrders (N) is the number of AE ask orders in the blockchain

  • lastBlockchainFeeder (S) is the announced name of the feeder of the last blockchain

  • isOffline (B) is true if this node is connected to other peers, false otherwise

Example: Refer to Get State example.

Get Time

Get the current time.

Request:

  • requestType is getTime

Response:

  • time (N) is the current time (in seconds since the genesis block).

  • requestProcessingTime (N) is the API request processing time (in millisec)

Example: Refer to Get Time example.